Open FredMa01 opened 3 years ago
Je ne sais pas s'il y a un lien avec ce pb de téléphone Gammu ou s'il s'agit d'un autre souci mais, je réalise que même quand le téléphone marche bien en émission/réception, il arrive que les envois de commandes ne marchent plus. C'est le cas actuellement. Je me retrouve donc comme dans l'issue #154 : Il semble y avoir un pb d'encodage :
Receive message : {"at":"2021-03-01 16:18:50","text":"{\"login\":\"xxxx@xxxx.fr\",\"password\":\"xxxxxxxxxx\",\"command\":\"stoppi3\"}\u0000e","origin":"+3312345678"} [] []
Receive message : {"at":"2021-03-01 16:19:23","text":"{\"login\":\"xxxx@xxxx.fr\",\"password\":\"xxxxxxxxxx\",\"command\":\"sms\"}\u00003","origin":"+3312345678"} [] []
L'ajout de la ligne file_put_contents(PWD_DATA . '/tst.txt', print_r($decode_message, true));
après la ligne 88 du fichiercontrollers\internals\Command.php
, modifie le fichier/usr/share/raspisms/data/tst.txt
mais celui-ci reste vide !
Pour moi il faut bien distinguer le cas des commandes, qui viens à priori d'un problème d'encodage, et le cas des problèmes d'envoi/reception des messages.
Pour les problèmes d'envoi/reception, ce qui me choque c'est de voir que tu as deux script /usr/share/raspisms/bin/gammu_get_unread_sms.py '/etc/gammurc'
qui tournent en même temps, et sur le même fichier de conf gammu. Ça ne devrait pas arriver et cela va forcément créer des conflits entre les deux scripts, et donc des blocages.
Pour le problème des commandes, je ne vois pas comment la ligne file_put_contents peut créer un fichier vide, essaie de replacer la partie $decode_message
par 'toto'
pour voir si ça inscrit bien toto
dans le fichier.
Je rajoute au passage que je te conseils d'utiliser un autre fichier que /etc/gammurc
pour les téléphones à créer au sein de RaspiSMS. Notamment pour éviter les conflits si tu créer plusieurs téléphones, ou si un service gammu démarre. Dans la documentation sur l'utilisation de gammu avec RaspiSMS, je conseils de créer un fichier /etc/gammu_<un_id_unique>.rc
pour chaque téléphone.
J'ai changé de fichier de config pour le téléphone. Je supprime l'ancien téléphone, crée un nouveau avec ce nouveau fichier puis relance le service raspisms :
ps aux | grep gammu
root 9969 0.0 0.0 1940 376 ? S 13:12 0:00 sh -c /usr/share/raspisms/bin/gammu_get_unread_sms.py '/etc/gammu_raspi.rc' 2>&1
root 9970 10.0 1.3 36800 13132 ? S 13:12 0:00 python3 /usr/share/raspisms/bin/gammu_get_unread_sms.py /etc/gammu_raspi.rc
J'ai toujours les 2 scripts !
Je te confirme que 'toto' s'écrit bien dans le fichier !
/* Fred */
$decode_message= 'toto';
file_put_contents(PWD_DATA . '/tst.txt', print_r($decode_message, true));
Pour les deux script j'ai trouvé l'origine, en fait c'est normal, le premier script déclenche l'appel du deuxième, c'est juste la façon dont php execute une commande unix, donc ça n'est pas ça qui pose le problème.
Pour le cas du fichier tst.txt qui est vide je viens de me rendre compte que print_r n'affiche pas les valeures NULL comme var_dump, donc c'est bien que le fichier ne peut pas être décodé comme un JSON valide, à cause du caractère mal encodé \u00003
. Ce caractère me fait penser ou bien à un encodage python bizarre, ou bien à un encodage UTF-16 converti en code JSON, mais que PHP n'arrive pas à décoder. Ça reste à creuser donc pour voir comment se débarasser du problème.
Est-ce que le problème n'est pas que même si on supprime un téléphone Gammu, il y a toujours des démons qui sont lancés à son sujet. Quand je regarde /var/log/raspisms/daemons.log j'ai ceci : [2022-12-12T09:20:59.735338+01:00] RaspiSMS Daemon Phone 8.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:21:12.834696+01:00] RaspiSMS Daemon Phone 2.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:21:57.896547+01:00] RaspiSMS Daemon Phone 2.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:22:15.848508+01:00] RaspiSMS Daemon Phone 8.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:23:59.528282+01:00] RaspiSMS Daemon Phone 8.INFO: Stopping Phone daemon with pid 2528 [] [] [2022-12-12T09:24:00.601526+01:00] RaspiSMS Daemon Phone 8.INFO: Starting Phone daemon with pid 2582 [] [] [2022-12-12T09:24:12.561608+01:00] RaspiSMS Daemon Phone 2.INFO: Stopping Phone daemon with pid 2533 [] [] [2022-12-12T09:24:13.630292+01:00] RaspiSMS Daemon Phone 2.INFO: Starting Phone daemon with pid 2585 [] [] [2022-12-12T09:24:33.970068+01:00] RaspiSMS Daemon Phone 2.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:24:51.855071+01:00] RaspiSMS Daemon Phone 8.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:26:26.472622+01:00] RaspiSMS Daemon Phone 8.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:26:39.825536+01:00] RaspiSMS Daemon Phone 2.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:28:39.185920+01:00] RaspiSMS Daemon Phone 2.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:28:56.865391+01:00] RaspiSMS Daemon Phone 8.INFO: Error reading received smss : Gammu command return failed. [] [] [2022-12-12T09:29:01.377737+01:00] RaspiSMS Daemon Phone 8.INFO: Stopping Phone daemon with pid 2582 [] [] [2022-12-12T09:29:02.448521+01:00] RaspiSMS Daemon Phone 8.INFO: Starting Phone daemon with pid 2636 [] [] [2022-12-12T09:29:14.443435+01:00] RaspiSMS Daemon Phone 2.INFO: Stopping Phone daemon with pid 2585 [] [] [2022-12-12T09:29:15.509502+01:00] RaspiSMS Daemon Phone 2.INFO: Starting Phone daemon with pid 2638 [] []
Je vois un tas de démons lancés pour des téléphone qui n'existent plus. Puisque seul le N°8 existe. Les autres ont été des essais et comme il est impossible de modifier un téléphone. On est obligé de supprimer le téléphone et d'en créer un nouveau.
En plus il m'a fallut bloquer le démon gammu-smsd qui se lançait automatiquement au démarrage.
Tous ces démons qui cherchent à utiliser la même ressource, ça doit finir par rendre instable la configuration et si on a de la chance, les sms partent, mais si il y a conflit au moment de l'envoi, alors c'est l'échec.
Ce problème est abordé dans cette issue : #155 Raspisms fonctionne parfaitement jusqu'à un moment où un redémarrage du raspberry ne laisse plus les SMS entrer, sans que je ne parvienne à comprendre cette instabilité. Le problème provient certainement de Gammu...
Raspisms a bien démarré :
service raspisms status
Fichier de config :
/etc/gammurc
Log Gammu :
Les logs font référence à https://docs.gammu.org/faq/general.html#echo La commande :
fuser -va /dev/ttyUSB-3G
renvoie :La commande :
gammu identify
Erreur à l'ouverture du périphérique : périphérique inconnu, occupé ou problème de permissions.
Ce qui est normal quand raspisms est démarré donc Gammu occupé ! Une fois arrêté le gammu identify indique :La commande
gammu --config /etc/gammurc sendsms TEXT '+33612345678' -text 'texte1234' -validity MAX -autolen '9'
renvoie :Erreur à l'ouverture du périphérique : périphérique inconnu, occupé ou problème de permissions.
La commande
gammu-detect
Je réinitialise Gammu :
/usr/sbin/usb_modeswitch -W -v 12d1 -p 155e -R
Je lance lsusb mais rien de mieux !
La commande
ps aux | grep gammu
A force de redémarrages, réinstallations, retrait manuel du dongle..., cela finit par fonctionner sans identifier la nature du problème... D'ailleurs en finissant d'écrire ces lignes, tout se remet à marcher ! Affaire à suivre ;)