Community Forum
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Tasmota

    Scheduled Pinned Locked Moved Téléinfo
    525 Posts 31 Posters 180.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Barbu DorB Offline
      Barbu Dor @Seb H
      last edited by

      @seb-h Même chose
      Le RSSI est dans le message STATE :
      { .., Wifi: { ..., RSSI: nnn, ... } }
      Donc le trigger
      ON Wifi#RSSI DO Var3 %value% ENDON

      Seb HS 2 Replies Last reply Reply Quote
      • Seb HS Offline
        Seb H @Barbu Dor
        last edited by

        @barbu-dor
        Super simple, faut connaitre le groupe et le non de la variable que tu veux stocker dans une VAR. Tu as une doc qui regroupe toutes ces infos ??

        En tout cas merci beaucoup , je vais pouvoir tester ça.

        Barbu DorB 1 Reply Last reply Reply Quote
        • Barbu DorB Offline
          Barbu Dor @Seb H
          last edited by

          @seb-h tout Tasmota est documenté
          Après ce n'est pas toujours facile de trouver son chemin dans la doc
          Pour les rules c'est là
          https://tasmota.github.io/docs/Rules/

          1 Reply Last reply Reply Quote
          • Seb HS Offline
            Seb H @Barbu Dor
            last edited by

            @barbu-dor
            Je viens de tester le rule que tu m'as écrit. Ca fonctionne impeccable. Par contre j'aimerais faire une petite modif ou je ne m'en sort pas seul. La valeur que me renvoit Wifi#RSSI doit être divisé par 10 et doit être arrondi. En gros je dois avoir une valeur entre 1 et 10. J'ai tenté " tele-Wifi#RSSI do var2 %value%/10" mais en fait il ne fait pas le calcul et me rajoute "/10" tout simplement. Comment pourrais je faire stp ??

            Barbu DorB 1 Reply Last reply Reply Quote
            • Barbu DorB Offline
              Barbu Dor @Seb H
              last edited by

              @seb-h Par défaut Tasmota ne comprend pas les expressions mathématiques
              Tu as 2 choix

              • Il y a des commandes pour opérer des operations sur des variables:
                Add<x> n : ajoute n à var<x> (equivalent à Var<x> = Var<x> + n)
                Sub<x> n
                Div<x> n
                Mult<x> n
                Donc ce que tu as besoin de Div2 10
                Essaye ON tele-Wifi#RSSI do backlog var2 %value%; div2 10 ENDON
              • L'autre choix est de compiler Tasmota avec l'option USE_EXPRESSION (+USE_TELEINFO of course) car il n'y a pas de binaire standard avec ces 2 options
                Dans ce cas tu pourrais écrite ON tele-WIfi#RSSI do var2 = %value% / 10 ENDON
                Note l'usage du = dans ce cas pour que Tasmota utilise l'évaluation d'expression
              Seb HS 1 Reply Last reply Reply Quote
              • Seb HS Offline
                Seb H @Barbu Dor
                last edited by

                @barbu-dor
                ON tele-Wifi#RSSI do backlog var2 %value%; div2 10 ENDON
                Il n'aime pas l'insertion de "backlog" et du coup il me rajoute textuellement dans l'envoie de la commande ; div2 10 😑

                Barbu DorB 1 Reply Last reply Reply Quote
                • Barbu DorB Offline
                  Barbu Dor @Seb H
                  last edited by Barbu Dor

                  @seb-h C'est pas le backlog
                  En fait je me suis planté, j'étais persuadé que Div existait
                  Seul les 3 autres existent.
                  Donc il faut

                  ON tele-Wifi#RSSI do backlog var2 %value%; Mul2 0.1 ENDON
                  
                  19:53:41.719 MQT: tele/esp32dev3/STATE = {"Time":"2022-02-10T19:53:41+01:00","Uptime":"3T21:30:06","UptimeSec":336606,"Heap":85,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Berry":{"HeapUsed":3,"Objects":34},"Wifi":{"AP":1,"SSId":"BNETWLAN","BSSId":"88:C3:97:F2:25:EC","Channel":1,"Mode":"11n","RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:09"}}
                  19:53:41.774 RUL: TELE-WIFI#RSSI performs "backlog var9 98 ; Mult9 0.1"
                  19:53:41.887 MQT: stat/esp32dev3/VAR = {"Var9":"98"}
                  19:53:42.142 MQT: stat/esp32dev3/MULT = {"Mult9":"9.800"}
                  19:55:00.723 RUL: TIME#MINUTE|5 performs "seriallog 2"
                  19:55:00.742 MQT: stat/esp32dev3/SERIALLOG = {"SerialLog":{"2":{"Active":"2"}}}
                  
                  Seb HS 1 Reply Last reply Reply Quote
                  • Seb HS Offline
                    Seb H @Barbu Dor
                    last edited by

                    @barbu-dor
                    etrange chez moi ca ne fonctionne toujours pas..
                    56b6c0b7-c381-4a6c-a03a-a412b77cda79-image.png

                    Barbu DorB 1 Reply Last reply Reply Quote
                    • Barbu DorB Offline
                      Barbu Dor @Seb H
                      last edited by

                      @seb-h tu peux faire un Rule0 (tout attaché) et copier le résultat ici en texte (pas en image) ?

                      Seb HS 1 Reply Last reply Reply Quote
                      • Seb HS Offline
                        Seb H @Barbu Dor
                        last edited by

                        @barbu-dor
                        Aucun soucis désolé
                        20:43:46.216 CMD: rule0
                        20:43:46.221 MQT: stat/tasmota_A1AE2F/RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":236,"Free":275,"Rules":"on tele-ENERGY#Power do var1 %value% endon on tele-Wifi#RSSI do backlog Var3 %value%; Mul3 0.1 endon on tele-TIC#EASF01 do publish domoticz/in {"idx":26,"nvalue":0,"svalue":"0;%value%;0.0;0.0;%var1%;0","Battery":100,"RSSI":%var3%} endon"}}
                        20:43:46.230 MQT: stat/tasmota_A1AE2F/RESULT = {"Rule2":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":0,"Free":511,"Rules":""}}
                        20:43:46.237 MQT: stat/tasmota_A1AE2F/RESULT = {"Rule3":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":0,"Free":511,"Rules":""}}
                        20:43:46.416 MQT: tele/tasmota_A1AE2F/STATE = {"Time":"2022-02-10T20:43:46","Uptime":"0T02:44:14","UptimeSec":9854,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"Wifi":{"AP":1,"SSId":"Sylvia&Seb","BSSId":"14:91:82:FC:0E:ED","Channel":1,"Mode":"11n","RSSI":64,"Signal":-68,"LinkCount":1,"Downtime":"0T00:00:03"}}
                        20:43:46.426 RUL: TELE-WIFI#RSSI performs "backlog Var3 64; Mul3 0.1"
                        20:43:46.441 MQT: tele/tasmota_A1AE2F/SENSOR = {"Time":"2022-02-10T20:43:46","ENERGY":{"TotalStartTime":"2022-02-10T17:59:38","Total":3860.279,"Yesterday":0.000,"Today":1.335,"Period": 1,"Power":394,"ApparentPower":444,"ReactivePower":205,"Factor":0.89,"Voltage":222,"Current":2.000,"Load":33},"TIC":{"ADSC":"061961361253","VTIC":2,"NGTF":" BASE ","LTARF":" BASE ","EAST":3860279,"EASF01":2747544,"EASF02":1112735,"EASF03":0,"EASF04":0,"EASF05":0,"EASF06":0,"EASF07":0,"EASF08":0,"EASF09":0,"EASF10":0,"EASD01":2747544,"EASD02":1112735,"EASD03":0,"EASD04":0,"IRMS1":2,"URMS1":222,"PREF":6,"PCOUP":6,"SINSTS":394,"SMAXSN":2608,"SMAXSN-1":2180,"CCASN":810,"CCASN-1":268,"UMOY1":221,"STGE":"003A0001","PRM":2147483647,"RELAIS":0,"NTARF":1,"NJOURF":0,"NJOURF+1":0}}
                        20:43:46.448 RUL: TELE-ENERGY#POWER performs "var1 394"
                        20:43:46.453 MQT: stat/tasmota_A1AE2F/RESULT = {"Var1":"394"}
                        20:43:46.464 RUL: TELE-TIC#EASF01 performs "publish domoticz/in {"idx":26,"nvalue":0,"svalue":"0;2747544;0.0;0.0;394;0","Battery":100,"RSSI":70}"
                        20:43:46.469 MQT: domoticz/in = {"idx":26,"nvalue":0,"svalue":"0;2747544;0.0;0.0;394;0","Battery":100,"RSSI":70}
                        20:43:46.671 MQT: stat/tasmota_A1AE2F/RESULT = {"Var3":"64"}
                        20:43:46.872 MQT: stat/tasmota_A1AE2F/RESULT = {"Command":"Unknown"}

                        Barbu DorB 1 Reply Last reply Reply Quote
                        • Barbu DorB Offline
                          Barbu Dor @Seb H
                          last edited by

                          @seb-h C'est Mult3 0.1 , pas Mul

                          Seb HS 1 Reply Last reply Reply Quote
                          • Seb HS Offline
                            Seb H @Barbu Dor
                            last edited by

                            @barbu-dor
                            Rohh le blaireau qui a de le m.... dans les yeux.
                            Effectivement ca fonctionne !! 😊
                            En revanche, maintenant domoticz m'ennuye car il y a une virgule... Tu aurais pas une fonction qui me permet d'arrondir l'ensemble sans virgule stp ?

                            21:25:26.470 MQT: domoticz/in = {"idx":26,"nvalue":0,"svalue":"0;2747719;0.0;0.0;337;0","Battery":100,"RSSI":6.800}
                            21:25:26.671 MQT: stat/tasmota_A1AE2F/RESULT = {"Var3":"70"}
                            21:25:26.873 MQT: stat/tasmota_A1AE2F/RESULT = {"Mult3":"7.000"}
                            
                            Barbu DorB 1 Reply Last reply Reply Quote
                            • Barbu DorB Offline
                              Barbu Dor @Seb H
                              last edited by

                              @seb-h Désolé là je ne vois pas
                              Ou tu jette ton ESP8266 et tu passe à un ESP32 avec Berry 😂

                              Seb HS 1 Reply Last reply Reply Quote
                              • Seb HS Offline
                                Seb H @Barbu Dor
                                last edited by Seb H

                                @barbu-dor
                                C'est ballot ca dis donc... on peut pas faire d'arrondi avec un esp8266 !! LOL !!
                                Pourtant dans la trame domoticz/in que tasmota te fait en renseignant un numéro idx, il te sort bien en dernier un chiffre représentatif de la qualité de réception du signal. On pourrait récupérer directement cette variable utilisé pour l'utiliser directement dans le rule au lieu de s'ennuyer a calculer ?? Dans le module xdrv_07_domoticz, la valeur qui m'interesse est stocker dans DomoticzRssiQuality. On a pas un moyen simple de la récupérer pour mon rule ??

                                Barbu DorB 1 Reply Last reply Reply Quote
                                • Barbu DorB Offline
                                  Barbu Dor @Seb H
                                  last edited by

                                  @seb-h Non, les messages domoticz ne passent pas par le RulesEngine, ils sont publiés directement sur MQTT

                                  Seb HS 2 Replies Last reply Reply Quote
                                  • Seb HS Offline
                                    Seb H @Barbu Dor
                                    last edited by

                                    @barbu-dor
                                    Si je déclare une variable publique dans la source ou je recopie la valeur de DomoticzRssiQuality et je réutilise cette variable pour le rule ?? Bon j'avoue que ca commence a être compliqué..

                                    Sinon peut être une autre idée plus simple mais très certainement plus longue à écrire.

                                    Si Wifi#RSSI<20 DO var3=1 ENDON Si Wifi#RSSI<30 AND >20 DO var3=2 etc...
                                    

                                    En fait, le but est de d'obtenir un chiffre unique entre 1 et 10 à partir du RSSI sur 2 chiffre.. Je vais regarder pour essayer de m'en sortir, sinon je viendrais demander de l'aide. C'est beaucoup plus faisable ma 2è option ??

                                    1 Reply Last reply Reply Quote
                                    • Seb HS Offline
                                      Seb H @Barbu Dor
                                      last edited by

                                      @barbu-dor
                                      Bon alors j'ai "bidouiller" mais ca ne me plait pas des masses . Voici mon rule

                                      rule1 On tele-ENERGY#Power do var1 %value% endon On tele-Wifi#RSSI<30 do If Wifi#RSSI>=20 ; Var3 2 endif endon On tele-Wifi#RSSI<40 do If Wifi#RSSI>=30 ; Var3 3 endif endon On tele-Wifi#RSSI<50 do If Wifi#RSSI>=40 ; Var3 4 endif endon On tele-Wifi#RSSI<60 do If Wifi#RSSI>=50 ; Var3 5 endif endon On tele-Wifi#RSSI<70 do If Wifi#RSSI>=60 ; Var3 6 endif endon On tele-Wifi#RSSI<80 do If Wifi#RSSI>=70 ; Var3 7 endif endon On tele-Wifi#RSSI<90 do If Wifi#RSSI>=80 ; Var3 8 endif endon On tele-Wifi#RSSI<=100 do If Wifi#RSSI>=90 ; Var3 9 endif endon On tele-TIC#EASF01 do publish domoticz/in {"idx":26,"nvalue":0,"svalue":"0;%value%;0.0;0.0;%var1%;0","Battery":100,"RSSI":%var3%} endon
                                      

                                      Voici le retour que ca me donne

                                      09:09:47.433 RUL: TELE-WIFI#RSSI<80 performs "If Wifi#RSSI>=70 ; Var3 7 endif"
                                      09:09:47.437 MQT: stat/tasmota_A1AE2F/RESULT = {"If":"Done"}
                                      09:09:47.444 RUL: TELE-WIFI#RSSI<90 performs "If Wifi#RSSI>=80 ; Var3 8 endif"
                                      09:09:47.448 MQT: stat/tasmota_A1AE2F/RESULT = {"If":"Done"}
                                      09:09:47.454 RUL: TELE-WIFI#RSSI<=100 performs "If Wifi#RSSI>=90 ; Var3 9 endif"
                                      09:09:47.460 MQT: stat/tasmota_A1AE2F/RESULT = {"If":"Done"}
                                      

                                      Dès que j'ai un trigger qui rempli ma condition, il execute la commande !
                                      En fait ce qui m'arrangerait c'est dans le TRIGGER de tester de suite la plage ou se trouve WIFI#RSSI , par exemple

                                      On tele-Wifi#RSSI>20 AND tele-Wifi#RSSI <30 do  Var3 2 endon
                                      

                                      J'ai testé cette commande , mais il ne prend en compte que tele-Wifi#RSSI>20

                                      Concernant chaque RULE , c'est limité a 10 trigger ??

                                      Barbu DorB 1 Reply Last reply Reply Quote
                                      • Barbu DorB Offline
                                        Barbu Dor @Seb H
                                        last edited by Barbu Dor

                                        @seb-h
                                        Une rule n'est pas limité en terme de triggers, juste en terme de place. A partir d'une certaine taille il compresse. Tu as 512 octet par rule, ce qui représente environ 1500 à 2000 caractères une fois que la compression est utilisée.
                                        Une rule doit démarrer par 1 trigger ON trigger[condition optionelle] DO
                                        Il faut bien comprendre qu'une rule réagit à une évenement, pas à un état. Donc mettre des AND dans le trigger n'a aucun sens. Tu n'a jamais 2 évenements qui arrivent en même temps.
                                        tele-Wifi#RSSI est un trigger qui correspond à l'évenement "Publication de Wifi.RSSI dans le message de Teleperiod"
                                        Tu peux effectivement ensuite y ajouter une condition telle que "<10".

                                        Quand un évenement survient (ex publication de STATE), Tasmota prend l'evenement et scanne les rules pour les ON xxx DO qui correspondent a ce trigger.
                                        Pour un message type STATE ou SESOR, il y a autant d'évenement que de valeurs dans le JSON.

                                        Ta solution avec des conditions sur les trigegrs et des IF est un peu trop compliquée. tu peut faire plus simple notamment en utilisant BREAK (voir https://tasmota.github.io/docs/Rules/#using-break-to-simulate-ifelseifelseendif).
                                        Dans ton cas tu devrais pouvoir écrire:

                                        rule1
                                          ON Wifi#RSSI<10 DO var3 0 BREAK 
                                          ON Wifi#RSSI<20 DO var3 1 BREAK 
                                          ... etc ...
                                          ON Wifi#RSSI<100 DO var3 9 BREAK
                                          ON Wifi#RSSI>=100 DO var3 10 ENDON
                                        

                                        (j'ai écrit sur plusieurs lignes pour la lisibilité mais bien sur il faut taper sur une seule)
                                        Le fonctionnement est que BREAK stop l'évaluation de la RULE si trigger+condition sont remplie. C'est l'équivalent de :
                                        ON Wifi#RSSI DO IF (%value%<10) var3 0 ELSEIF (%value%<20) var3 1 .... ENDIF ENDON
                                        C'est le même trigger qui est utilisé mais avec des conditions différentes.
                                        Dans la même rule tu peux avoir un autre trigger après tel que ON tele-ENERGY#Power DO var1 %value% ENDON
                                        Il s'agit d'un trigger différent donc lorsque le message SENSOR avec ENERGY#Power est envoyé, les premiers ON sont ignoré et les BREAK aussi.

                                        Seb HS 1 Reply Last reply Reply Quote
                                        • Seb HS Offline
                                          Seb H @Barbu Dor
                                          last edited by Seb H

                                          @barbu-dor
                                          Super merci beaucoup. Je ne voyais pas trop comment fonctionnait le BREAK au départ, mais a tête bien posé et écris comme tu la fait ligne par ligne, c'est super visible et compréhensible 😊
                                          Du coup, tu n'écris qu'une seule fois dans VAR3 !!
                                          Ca fonctionne top !!

                                          Seb HS 1 Reply Last reply Reply Quote
                                          • Seb HS Offline
                                            Seb H @Seb H
                                            last edited by Seb H

                                            sinon pour info sur mon linky dans la console de temps à autre, je pouvais voir une erreur qui passait de temps a autre. J'avais une résistance de 1.5K en amont de l'optocoupleur. Je l'ai remplacé par une 220 ohms et c'est le drame !! Ca n'arrête plus
                                            f597db99-9637-4f39-ab38-e2720a4a3885-image.png
                                            Du coup, je vais essayer avec un 1k pour voir si il y a une différence

                                            Barbu DorB 1 Reply Last reply Reply Quote
                                            • First post
                                              Last post

                                            3

                                            Online

                                            5.7k

                                            Users

                                            534

                                            Topics

                                            5.0k

                                            Posts

                                            Top Topics

                                            • Denky 4 - Domoticz - Triphasé -
                                              Nicolas BernaertsN
                                              Nicolas Bernaerts
                                              0
                                              7
                                              266

                                            • Denky D4 et Linky Standard TInfo Rx Non Configuré
                                              CharlesC
                                              Charles
                                              0
                                              5
                                              303

                                            Popular Tags

                                            teleinfo
                                            24 topics
                                            arduino
                                            19 topics
                                            remora
                                            16 topics
                                            esp8266
                                            10 topics
                                            arduipi
                                            10 topics
                                            wifinfo
                                            7 topics
                                            raspberry
                                            7 topics
                                            broadcast
                                            7 topics
                                            Copyright © 2022 Charles-Henri Hallard | Return to blog page | Powered by NodeBB