Send en utilisant le cycle

Oui c’est tout dans le while True:

Je regarderais ce soir la charge sur le process python mais je pense que c’est OK (la quantité de données reçus est importante, c’est pourquoi je mets des mesures en place pour alléger le travail coté Jeedom ensuite. Un envoi toutes les 5 secondes d’un paquets de données dans un 1er temps et je travail sur autre chose pour filtrer les données dans le Python avant ajout dans les données qui sont envoyées à Jeedom

En fait en remplaçant le ms par ms/1000 tout fonctionne comme tu le souhaitais. Les valeurs qui continuent à arriver sont soit ajoutées si elles n’y figurent pas soit mises à jour. Avant tu ne le voyais pas à cause du ms justement comme le délai entre 2 envoie vers jeedom était de 0.1 secondes systématiquement puisque ms était toujours plus grand que timer_duration

1 « J'aime »

C’est ballot, j’ai pas testé … j’ai bien vu qu’il y avait mismatch entre secondes et millisecondes mais j’ai pas été au bout pour corriger ça. J’aurais pas cru que ça allait finalement empiler les données de ce que je comprenais du code.

Bon tant pis … je vais laisser comme j’ai fais mais merci pour le complément d’analyse et la correction qui sera donc surement à apporter au plugin template :+1:

ca n’aurait de toute facon pas été pour toi puisque les valeurs auraient été mises à jour hors car tu avais toujours la meme clés
ou alors j’ai rien compris à ce que tu voulais

tout à fait s’il n’y a pas de nouvelles clés alors tu ne renvoie que la dernière valeur de chaque clé et non pas toutes les valeurs qu’a eu cette clé pendant le cycle :wink:

Pour téléinfo par contre ça peut me servir car je n’envoie déjà vers jeedom à chaque fois que les clés qui ont changées et donc là ça va ajouter au fur et à mesure celles qui n’y étaient pas au début.

Je sais pas bien ce que je comprends ou pas à force :slight_smile:

Je voulais faire ça :

jeedom_com.add_changes('blitzortung::data', mesdata)

Donc la clef est data n’est-ce pas ?

Si je fais par exemple :

mesdata = '{'time': 1692450879173591800, 'lat': 42.555941, 'lon': 18.942078, 'status': 1, 'region': 8, 'delay': 4, 'sig_num': 37}'
jeedom_com.add_changes('blitzortung::data', mesdata)

mesdata = '{'blitzortung': {'impacts': {'time': 1692450879173591800, 'lat': 42.555941, 'lon': 18.942078, 'status': 2, 'region': 9, 'delay': 4.1, 'sig_num': 37}}}'
jeedom_com.add_changes('blitzortung::data', mesdata)

Si on est dans le même cycle il aurait du se passer quoi du coup ? J’utilise la même clef data et je charge 2 json différents, je devrais donc, pour moi, avoir 2 json à récupérer et non pas le dernier uniquement ?

1 « J'aime »

non juste le dernier

alors désolé si je m’exprime mal mais pour moi ce que j’appelle la clé c’est ce qui est avant les :

donc dans ton exemple les clés sont dans un premier temps time, lat, lon, status, region, delay et sig_num

par contre dans le 2ème tu as blitzortung qui contient la clé impacts qui contient time, … mais comme je suis autodidacte des fois je dis n’importe quoi :wink:

donc si je comprends tout bien alors tu vas te retrouver avec en changes:

{'time': 1692450879173591800, 'lat': 42.555941, 'lon': 18.942078, 'status': 1, 'region': 8, 'delay': 4, 'sig_num': 37}
{'blitzortung': {'impacts': {'time': 1692450879173591800, 'lat': 42.555941, 'lon': 18.942078, 'status': 2, 'region': 9, 'delay': 4.1, 'sig_num': 37}}}'

faudrait que j’essaies ça

je viens de faire l’essai en simulant 2 compteurs qui envoient leurs infos alternativement avec teleinfo et un cycle de 10 secondes et j’ai ça:

[2023-08-22 18:47:25]ERROR : avant : {}
[2023-08-22 18:47:25]ERROR : apres : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970'}}}
[2023-08-22 18:47:27]ERROR : avant : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970'}}}
[2023-08-22 18:47:27]ERROR : apres : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970'}, '0001': {'SINSTI': '00369', 'device': '0001'}}}
[2023-08-22 18:47:29]ERROR : avant : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970'}, '0001': {'SINSTI': '00369', 'device': '0001'}}}
[2023-08-22 18:47:29]ERROR : apres : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970', 'ERQ3': '000956617'}, '0001': {'SINSTI': '00369', 'device': '0001'}}}
[2023-08-22 18:47:31]ERROR : avant : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970', 'ERQ3': '000956617'}, '0001': {'SINSTI': '00369', 'device': '0001'}}}
[2023-08-22 18:47:31]ERROR : apres : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970', 'ERQ3': '000956617'}, '0001': {'SINSTI': '00363', 'device': '0001'}}}
[2023-08-22 18:47:33]ERROR : avant : {'device': {'021775250970': {'SINSTI': '00368', 'device': '021775250970', 'ERQ3': '000956617'}, '0001': {'SINSTI': '00363', 'device': '0001'}}}
[2023-08-22 18:47:33]ERROR : apres : {'device': {'021775250970': {'SINSTI': '00362', 'device': '021775250970', 'ERQ3': '000956617', 'STGE': '013A0501', 'STGE08': 'Energie active positive'}, '0001': {'SINSTI': '00363', 'device': '0001'}}}

Je retrouve bien les 2 compteurs dans le changes

le avant et aprres c’est la valeur de self.ranges avant et après le merge dict

OK merci @Noyax37

j’ai simulé en faisant ça pour l’exemple:

                        if test == 0:
                            _SendData["device"] = data["ADSC"]
                            test = 1
                            globals.JEEDOM_COM.add_changes('device::' + data["ADSC"], _SendData)
                        else:
                            _SendData["device"] = "0001"
                            test = 0
                            globals.JEEDOM_COM.add_changes('device::0001', _SendData)

donc une fois j’envoie le bon compteur en et une fois celui que j’ai appelé « 0001 »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.