Démarrage SMS impossible depuis MAJ du 18/10/22 - modem lixee

Daccord, je comprends.

Moi je me suis demandé si le nouveau plugin n’envoyait pas (pour x raison je ne suis pas sachant…) des infos d’une autre manière sur le réseau de l’opérateur, en tout cas pas tout à fait comme avant, qui aurait peut être mis la puce à l’oreille de Free par exemple (peut être des balises / trames avec d’autres codes plus récents…).

→ C’était aussi une de mes hypothèses (qui vaut ce qu’elle vaut…).

Pour l’instant, j’en suis resté au fait que Free ait bloqué l’usage, ça bouge aussi pas mal sur les relais GSM par chez moi (techniciens funambules visibles, passage 5G, etc etc).

A l’époque j’avais une erreur CMX dans les logs qui signifiait une erreur côté opérateur, du coup j’ai changé et depuis ça refonctionne

Avec un modem 2G, aucun problème avec une SIM Free.
Cela devrait rester comme cela tant que l’itinérance chez Orange sera maintenue.

Capture d’écran du 2023-01-16 16-54-12

Yes @Jeandhom, mais cela dépend des régions il me semble ?

On est quelques-uns à réussir à dialoguer avec d’autre réseaux, hors free.

L’itinérance se réduit-elle progressivement (ce que je pense), ou un jour ils vont appuyer sur le bouton OFF chez orange, et ce sera valable pour tout le territoire ? :sweat_smile:

Je réagissais sur le fait que tu dis que Free bloque l’usage.

A moins que tu aies des sources contraires, l’itinérance est un accord au niveau national.
Après, ce qu’il se passe sur le terrain au niveau technique entre Free et Orange est pour nous un grand mystère.

Même réponse qu’au dessus.

J’ai passé ma journée à vérifier et comparer le code de l’ancienne version avec la nouvelle.
J’ai fait des tests, ajouter des logs …
Ca me rend ding je trouve rien :slight_smile:

Je pense en effet que cela provient de la gestion des commandes du modem lixee, mais je trouve pas ou exactement.

Arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr :weary: :partying_face: :crazy_face: :scream:

Je compatis :mechanical_arm:

A l’époque je m’étais bien arraché les cheveux aussi pour faire marcher ma clef usb Huawei :smile:

4 messages ont été scindés en un nouveau sujet : Encore un Doublon: UnicodeDecodeError: ‹ utf-8 › codec can’t decode byte

Pas de nouvelles idées ? j’ai bien l’ancienne version du plugin sous la main, merci FredGB, mais pas encore fait le choix de revenir dessus … m’embête de repartir sur python

Bonjour J2B, as tu eu des nouvelles sur ton ticket ? Savoir si ca a avancé ?
De mon coté j’ai bloqué la mise a jour du plugin SMS (depuis le 19/10/22) pour pouvoir garder la communication avec Jeedom.
Bonne journée a tous

A ce jour, ni lixee, ni jeedom n’ont pu trouver la source de cette incompatibilité (mais les deux ont fait des recherches).

Le problème venant d’un seul produit visiblement (Ce n’est en aucun cas un reproche envers son concepteur, je précise), je comprends (réellement, ce n’est la encore pas un reproche) qu’il ne soit pas « viable » pour les dev de prendre du temps pour trouver l’origine et patcher cela (c’est même peut être pas possible, du style incompatibilité python3, driver FTDI … ).

J’ai passé plusieurs jours sur le sujet, vérifié les fichiers et lignes de commandes, vérifier la com entre le modem et jeedom et j’ai rien vu d’évident (suis pas dév non plus). Tous ce que je sais, c’est que le modem fonctionne, ainsi que la carte sim. Que ce n’est pas l’OS (Débian) qui est en cause (fonctionne avec minicom), ni l’alimentation du modem.

Je mise sur un process de communication qui a changé (suite au passage des packages python 2, serial requests et pyudev vers python3), ou un paramètre de communication avec le produit qui a disparu ou est apparu, et qui bloque la com (j’ai noté par exemple que le paramètre flow control activé bloque toutes com avec le modem, mais pas trouvé dans le plugin si ce paramètre était maintenant activé ou pas)

Ne souhaitant pas revenir en arrière sur la version du plugin (qui tourne sur une version python qui finira bien par être incompatible avec l’évolution de Debian) je n’utilise donc plus cette fonction actuellement.

Mince, je perds encore mon temps la dessus …

https://pyserial.readthedocs.io/en/latest/pyserial_api.html

Note that enabling both flow control methods (xonxoff and rtscts) together may not be supported. It is common to use one of the methods at once, not both.

dsrdtr is not supported by all platforms (silently ignored). Setting it to None has the effect that its state follows rtscts.

une piste ? ou pas du tout :joy:

open ()

Open port. The state of rts and dtr is applied.

Note

Some OS and/or drivers may activate RTS and or DTR automatically, as soon as the port is opened. There may be a glitch on RTS/DTR when rts or dtr are set differently from their default value (True / active).

Note

For compatibility reasons, no error is reported when applying rts or dtr fails on POSIX due to EINVAL (22) or ENOTTY (25).

C’est dingue mais je pense qu’il s’agit de la bonne piste … :sweat_smile:

J’ai modifié le fichier serial_comms.py qui initialise la com dans le plugin.

ligne 48 à 56

    def connect(self):
        """ Connects to the device and starts the read thread """
        self.serial = serial.Serial(dsrdtr=True, rtscts=True, port=self.port, baudrate=self.baudrate,
                                    timeout=self.timeout,*self.com_args,**self.com_kwargs)
        # Start read thread
        self.alive = True
        self.rxThread = threading.Thread(target=self._readLoop)
        self.rxThread.daemon = True
        self.rxThread.start()

On remarque dsrdtr=True, rtscts=True
je modifie dsrdtr=False, rtscts=False

je relance le plugin sms et la, ça fonctionne :slight_smile:

[2023-03-08 13:44:25][INFO] : Lancement démon sms : /usr/bin/python3 /var/www/html/plugins/sms/resources/smsd/smsd.py --device /dev/ttyUSB0 --loglevel debug --socketport 55002 --serialrate 9600 --pin 1234 --textmode no --smsc None --cycle 30 --callback http://127.0.0.1:80/plugins/sms/core/php/jeeSMS.php --apikey xxxxxx --pid /tmp/jeedom/sms/deamon.pid
[2023-03-08 13:44:25][INFO] : Start smsd
[2023-03-08 13:44:25][INFO] : Log level : debug
[2023-03-08 13:44:25][INFO] : Socket port : 55002
[2023-03-08 13:44:25][INFO] : Socket host : 127.0.0.1
[2023-03-08 13:44:25][INFO] : PID file : /tmp/jeedom/sms/deamon.pid
[2023-03-08 13:44:25][INFO] : Device : /dev/ttyUSB0
[2023-03-08 13:44:25][INFO] : Apikey : xxxxx
[2023-03-08 13:44:25][INFO] : Callback : http://127.0.0.1:80/plugins/sms/core/php/jeeSMS.php
[2023-03-08 13:44:25][INFO] : Cycle : 30.0
[2023-03-08 13:44:25][INFO] : Serial rate : 9600
[2023-03-08 13:44:25][INFO] : Pin : 1234
[2023-03-08 13:44:25][INFO] : Text mode : no
[2023-03-08 13:44:25][INFO] : SMSC : None
[2023-03-08 13:44:25][DEBUG] : Writing PID 15555 to /tmp/jeedom/sms/deamon.pid
[2023-03-08 13:44:25][DEBUG] : Init request module v2.28.2
[2023-03-08 13:44:25][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2023-03-08 13:44:25][DEBUG] : http://127.0.0.1:80 "GET /plugins/sms/core/php/jeeSMS.php?apikey=xxx HTTP/1.1" 200 0
[2023-03-08 13:44:25][DEBUG] : Socket interface started
[2023-03-08 13:44:25][DEBUG] : LoopNetServer Thread started
[2023-03-08 13:44:25][DEBUG] : Start listening...
[2023-03-08 13:44:25][DEBUG] : Listening on: [127.0.0.1:55002]
[2023-03-08 13:44:25][DEBUG] : Connecting to GSM Modem...
[2023-03-08 13:44:25][DEBUG] : Text mode false
[2023-03-08 13:44:25][DEBUG] : Enter pin code : 1234
[2023-03-08 13:44:25][INFO] : Connecting to modem on port /dev/ttyUSB0 at 9600bps
[2023-03-08 13:44:25][DEBUG] : write: ATZ
[2023-03-08 13:44:25][DEBUG] : response: ['OK']
[2023-03-08 13:44:25][DEBUG] : write: ATE0
[2023-03-08 13:44:25][DEBUG] : response: ['ATE0
', 'OK']
[2023-03-08 13:44:25][DEBUG] : write: AT+CFUN?
[2023-03-08 13:44:25][DEBUG] : response: ['+CFUN: 1', 'OK']
[2023-03-08 13:44:25][DEBUG] : write: AT+CMEE=1
[2023-03-08 13:44:25][DEBUG] : response: ['OK']
[2023-03-08 13:44:25][DEBUG] : write: AT+CPIN?
[2023-03-08 13:44:25][DEBUG] : response: ['+CPIN: READY', 'OK']
[2023-03-08 13:44:25][DEBUG] : write: AT+CLAC
[2023-03-08 13:44:25][DEBUG] : response: ['+CME ERROR: 100']
[2023-03-08 13:44:25][DEBUG] : write: AT
[2023-03-08 13:44:25][DEBUG] : response: ['OK']
[2023-03-08 13:44:25][DEBUG] : write: AT^CVOICE=?
[2023-03-08 13:44:26][DEBUG] : response: ['+CME ERROR: 100']
[2023-03-08 13:44:26][DEBUG] : write: AT+VTS=?
[2023-03-08 13:44:26][DEBUG] : response: ['+VTS: (0-9,*,#,A,B,C,D),(1-255)', 'OK']
[2023-03-08 13:44:26][DEBUG] : write: AT^DTMF=?
[2023-03-08 13:44:26][DEBUG] : response: ['+CME ERROR: 100']
[2023-03-08 13:44:26][DEBUG] : write: AT^USSDMODE=?
[2023-03-08 13:44:26][DEBUG] : response: ['+CME ERROR: 100']
[2023-03-08 13:44:26][DEBUG] : write: AT+WIND=?
[2023-03-08 13:44:26][DEBUG] : response: ['+CME ERROR: 100']
[2023-03-08 13:44:26][DEBUG] : write: AT+ZPAS=?
[2023-03-08 13:44:26][DEBUG] : response: ['+CME ERROR: 100']
[2023-03-08 13:44:26][DEBUG] : write: AT+CSCS=?
[2023-03-08 13:44:26][DEBUG] : response: ['+CSCS: ("IRA","GSM","UCS2","HEX","PCCP","PCDN","8859-1")', 'OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CNUM=?
[2023-03-08 13:44:26][DEBUG] : response: ['OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CGMI
[2023-03-08 13:44:26][DEBUG] : response: ['SIMCOM_Ltd', 'OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+DDET=1
[2023-03-08 13:44:26][DEBUG] : response: ['OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CGMI
[2023-03-08 13:44:26][DEBUG] : response: ['SIMCOM_Ltd', 'OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+ZPAS?
[2023-03-08 13:44:26][DEBUG] : response: ['+CME ERROR: 100']
[2023-03-08 13:44:26][INFO] : Unknown/generic modem type - will use polling for call state updates
[2023-03-08 13:44:26][DEBUG] : write: AT+COPS=3,0
[2023-03-08 13:44:26][DEBUG] : response: ['OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CMGF=0
[2023-03-08 13:44:26][DEBUG] : response: ['OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CSCA?
[2023-03-08 13:44:26][DEBUG] : response: ['+CSCA: "+336xxxxxxxx",145', 'OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CSMP=49,167,0,0
[2023-03-08 13:44:26][DEBUG] : response: ['OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CSCA?
[2023-03-08 13:44:26][DEBUG] : response: ['+CSCA: "+33xxxxxxxxxx",145', 'OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CPMS=?
[2023-03-08 13:44:26][DEBUG] : response: ['+CPMS: ("SM","ME","SM_P","ME_P","MT"),("SM","ME","SM_P","ME_P","MT"),("SM","ME","SM_P","ME_P","MT")', 'OK']
[2023-03-08 13:44:26][DEBUG] : write: AT+CPMS="ME","ME","ME"
[2023-03-08 13:44:27][DEBUG] : response: ['+CPMS: 0,0,0,0,0,0', 'OK']
[2023-03-08 13:44:27][DEBUG] : write: AT+CNMI=2,1,0,2
[2023-03-08 13:44:27][DEBUG] : response: ['+CMS ERROR: 325']
[2023-03-08 13:44:27][DEBUG] : write: AT+CNMI=2,1,0,1,0
[2023-03-08 13:44:27][DEBUG] : response: ['OK']
[2023-03-08 13:44:27][DEBUG] : write: AT+CLIP=1
[2023-03-08 13:44:27][DEBUG] : response: ['OK']
[2023-03-08 13:44:27][DEBUG] : write: AT+CRC=1
[2023-03-08 13:44:27][DEBUG] : response: ['OK']
[2023-03-08 13:44:27][DEBUG] : write: AT+CVHU=0
[2023-03-08 13:44:27][DEBUG] : response: ['OK']
[2023-03-08 13:44:27][DEBUG] : Waiting for network...
[2023-03-08 13:44:27][DEBUG] : write: AT+CREG?
[2023-03-08 13:44:27][DEBUG] : response: ['+CREG: 0,5', 'OK']
[2023-03-08 13:44:28][DEBUG] : write: AT+CSQ
[2023-03-08 13:44:28][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:44:28][DEBUG] : Ok
[2023-03-08 13:44:28][DEBUG] : write: AT+COPS?
[2023-03-08 13:44:28][DEBUG] : response: ['+COPS: 0,0,"Orange F"', 'OK']
[2023-03-08 13:44:28][DEBUG] : Send to jeedom :  {'number': 'network_name', 'message': 'Orange F'}
[2023-03-08 13:44:28][DEBUG] : write: AT+CPMS="ME","ME","ME"
[2023-03-08 13:44:28][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2023-03-08 13:44:28][DEBUG] : http://127.0.0.1:80 "POST /plugins/sms/core/php/jeeSMS.php?apikey=xxx HTTP/1.1" 200 0
[2023-03-08 13:44:28][DEBUG] : response: ['+CPMS: 0,0,0,0,0,0', 'OK']
[2023-03-08 13:44:28][DEBUG] : write: AT+CMGD=1,4
[2023-03-08 13:44:28][DEBUG] : response: ['+CMS ERROR: 321']
[2023-03-08 13:44:28][ERROR] : Exception2: CMS 321
[2023-03-08 13:44:28][DEBUG] : write: AT+CPMS="SM","SM","SM"
[2023-03-08 13:44:28][DEBUG] : response: ['+CPMS: 4,100,4,100,4,100', 'OK']
[2023-03-08 13:44:28][DEBUG] : write: AT+CMGD=1,4
[2023-03-08 13:44:28][DEBUG] : response: ['OK']
[2023-03-08 13:44:58][DEBUG] : write: AT+CREG?
[2023-03-08 13:44:58][DEBUG] : response: ['+CREG: 0,5', 'OK']
[2023-03-08 13:44:59][DEBUG] : write: AT+CSQ
[2023-03-08 13:44:59][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:44:59][DEBUG] : write: AT+CMGL=0
[2023-03-08 13:44:59][DEBUG] : response: ['OK']
[2023-03-08 13:44:59][DEBUG] : write: AT+CSQ
[2023-03-08 13:44:59][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:44:59][DEBUG] : write: AT+CSQ
[2023-03-08 13:45:00][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:45:00][DEBUG] : write: AT+CSQ
[2023-03-08 13:45:00][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:45:00][DEBUG] : Send to jeedom :  {'number': 'signal_strength', 'message': '29'}
[2023-03-08 13:45:00][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2023-03-08 13:45:00][DEBUG] : http://127.0.0.1:80 "POST /plugins/sms/core/php/jeeSMS.php?apikey=xxx HTTP/1.1" 200 0
[2023-03-08 13:45:30][DEBUG] : write: AT+CREG?
[2023-03-08 13:45:30][DEBUG] : response: ['+CREG: 0,5', 'OK']
[2023-03-08 13:45:31][DEBUG] : write: AT+CSQ
[2023-03-08 13:45:31][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:45:31][DEBUG] : write: AT+CMGL=0
[2023-03-08 13:45:31][DEBUG] : response: ['OK']
[2023-03-08 13:45:31][DEBUG] : write: AT+CSQ
[2023-03-08 13:45:31][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:46:01][DEBUG] : write: AT+CREG?
[2023-03-08 13:46:01][DEBUG] : response: ['+CREG: 0,5', 'OK']
[2023-03-08 13:46:02][DEBUG] : write: AT+CSQ
[2023-03-08 13:46:02][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:46:02][DEBUG] : write: AT+CMGL=0
[2023-03-08 13:46:02][DEBUG] : response: ['OK']
[2023-03-08 13:46:02][DEBUG] : write: AT+CSQ
[2023-03-08 13:46:02][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:46:32][DEBUG] : write: AT+CREG?
[2023-03-08 13:46:32][DEBUG] : response: ['+CREG: 0,5', 'OK']
[2023-03-08 13:46:33][DEBUG] : write: AT+CSQ
[2023-03-08 13:46:33][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:46:33][DEBUG] : write: AT+CMGL=0
[2023-03-08 13:46:33][DEBUG] : response: ['OK']
[2023-03-08 13:46:33][DEBUG] : write: AT+CSQ
[2023-03-08 13:46:33][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:47:03][DEBUG] : write: AT+CREG?
[2023-03-08 13:47:03][DEBUG] : response: ['+CREG: 0,5', 'OK']
[2023-03-08 13:47:04][DEBUG] : write: AT+CSQ
[2023-03-08 13:47:04][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:47:04][DEBUG] : write: AT+CMGL=0
[2023-03-08 13:47:04][DEBUG] : response: ['OK']
[2023-03-08 13:47:04][DEBUG] : write: AT+CSQ
[2023-03-08 13:47:04][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:47:34][DEBUG] : write: AT+CREG?
[2023-03-08 13:47:34][DEBUG] : response: ['+CREG: 0,5', 'OK']
[2023-03-08 13:47:35][DEBUG] : write: AT+CSQ
[2023-03-08 13:47:35][DEBUG] : response: ['+CSQ: 29,0', 'OK']
[2023-03-08 13:47:35][DEBUG] : write: AT+CMGL=0
[2023-03-08 13:47:35][DEBUG] : response: ['OK']
[2023-03-08 13:47:35][DEBUG] : write: AT+CSQ
[2023-03-08 13:47:36][DEBUG] : response: ['+CSQ: 29,0', 'OK']

test ok … j’y crois pas :pray: :smiling_face_with_three_hearts:
Pas faute d’avoir dit que cela venait « possiblement » de la gestion du flow control :stuck_out_tongue_closed_eyes:

Solution pour modem Lixee sur dernière version du plugin SMS (python3)

1/ Arreter le plugin (c’est une blague, il démarre pas de tt façon :wink: )
2/ Se rendre dans Editeur de fichiers jeedom
Réglages > Système > Configuration
Onglet >_OS/DB
Section Outils Système
→ Editeur de fichiers

3/ Se rendre ici
image
image

4/ Ouvrir le fichier serial_comms.py

5/ Trouver la ligne 50 et modifier rtscts=True par rtscts=False

6/ Sauvegarder et fermer

7/ Relancer le plugin SMS

EDITION du 13/03/23 concernant le non remplacement du dsrdtr

1 « J'aime »

je vais tester de mon coté pour voir si cela à un impact avec un mon modem pcq si en activant cette option ça marche pour lixee et plus pour les autres, va falloir un flag

1 « J'aime »

Je m’en doute

Visiblement, si je change uniquement le rtscts cela suffit pour démarrer le plugin (normal c’est lui porte sur le démarrage et l’arrêt des com), mais je remarque moins d’erreurs (que j’avais déjà sur la version python2 et qui m’obligeait à avoir un script de surveillance / redémarrage du plugin) en désactivant aussi le dsrdtr en complément … Je vais faire des tests pour voir

EDITION du 13/03/23

Just un petit msg pr me faire penser a regarder demain, car le plugin ne fonctionne plus depuis plusieurs semaines/mois pr moi egalement :slight_smile: des fois que…

Je confirme que je n’ai plus aucunes erreurs qui plantaient (via l’ancienne version python2) le plugin plusieurs fois par jour et qui m’imposaient un scenario de monitoring (solution proposé par lixee sur son blog à l’époque). Cela ne fait que 24H, mais cela semble très stable maintenant.

Pourquoi modem Lixee et pas d’autre ? La gestion du flow control dépend (dans le cas d’une émulation série) du Driver (ici FTDI) du modem.

Sur leur site, on trouve

Disable Modem Ctrl At Startup
This option is used to control the modem control signals DTR and RTS at startup. In normal
operation, the modem control signals at startup follow the behaviour of the legacy port. However,
due to timing differences between a legacy COM port and a virtual COM port, a « spike » on one of
these signals in the legacy port can appear as an assertion of the signal in the virtual COM port.

Devices that monitor these signals can enter the wrong state after an unplug-replug cycle on USB.

Note that if the « Serial Enumerator » option in the property page is selected, then the enumeration
sequence causes the modem control signals to change at startup. So if it is necessary to select
« Disable Modem Ctrl At Startup », then it is likely that « Serial Enumerator » should be unchecked in
the property page.

Bravo @J2B !
Ca fonctionne chez moi.
Merci beaucoup pour tes recherches!
Une statue à l’entrée du forum devrait être érigée à ton pseudo!

:joy:
Ça serait bien moche :crazy_face: :pray:

Bravo @J2B pour tes investigations !!!
C’est où la cagnotte pour la statue ?