[gelöst per scripting] Tasmota rule, OBIS Zähler und deutliche Power-Änderungen

Begonnen von Beta-User, 08 März 2023, 21:58:34

Vorheriges Thema - Nächstes Thema

The-Holgi

Genau das funktioniert bei mir leider nicht. Egal welchen Wert ich da eingebe, es ändert sich nichts.
Raspberry Pi 5

RalfRog

Tja...

Ich kann das auch in der Konsole sehen. Habe mal 120 Sekunden eingestellt und dann wieder zurück auf 300.
12:29:59.313 MQT: tele/Zaehler_ESP/STATE = {"Time":"2024-04-04T12:29:59","Uptime":"44T14:10:08","UptimeSec":3852608,"Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":170,"Wifi":{"AP":1,"SSId":"WLAN","BSSId":"22:99:AA:99:DD:BB","Channel":6,"Mode":"11n","RSSI":46,"Signal":-77,"LinkCount":118,"Downtime":"0T00:19:10"}}
12:29:59.321 MQT: tele/Zaehler_ESP/SENSOR = {"Time":"2024-04-04T12:29:59","MT691":{"energy":39129.6,"power":0,"Meter_id":"49534b"},"hz_t":{"Total_in":0.000,"Power_cur":0,"Meter_id":""}}
12:31:59.331 MQT: tele/Zaehler_ESP/STATE = {"Time":"2024-04-04T12:31:59","Uptime":"44T14:12:08","UptimeSec":3852728,"Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":170,"Wifi":{"AP":1,"SSId":"WLAN","BSSId":"22:99:AA:99:DD:BB","Channel":6,"Mode":"11n","RSSI":52,"Signal":-74,"LinkCount":118,"Downtime":"0T00:19:10"}}
12:31:59.338 MQT: tele/Zaehler_ESP/SENSOR = {"Time":"2024-04-04T12:31:59","MT691":{"energy":39129.6,"power":0,"Meter_id":"49534b"},"hz_t":{"Total_in":0.000,"Power_cur":0,"Meter_id":""}}
12:32:11.900 MQT: stat/Zaehler_ESP/RESULT = {"SerialLog":{"0":{"Active":"0"}}}
12:32:11.910 MQT: stat/Zaehler_ESP/RESULT = {"WebLog":2}
12:32:11.917 MQT: stat/Zaehler_ESP/RESULT = {"MqttLog":0}
12:32:11.925 MQT: stat/Zaehler_ESP/RESULT = {"SysLog":{"0":{"Active":"0"}}}
12:32:11.931 MQT: stat/Zaehler_ESP/RESULT = {"LogHost":""}
12:32:11.937 MQT: stat/Zaehler_ESP/RESULT = {"LogPort":514}
==>>  12:32:11.942 MQT: stat/Zaehler_ESP/RESULT = {"TelePeriod":300}
12:32:12.346 MQT: tele/Zaehler_ESP/STATE = {"Time":"2024-04-04T12:32:12","Uptime":"44T14:12:21","UptimeSec":3852741,"Heap":15,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":170,"Wifi":{"AP":1,"SSId":"WLAN","BSSId":"22:99:AA:99:DD:BB","Channel":6,"Mode":"11n","RSSI":52,"Signal":-74,"LinkCount":118,"Downtime":"0T00:19:10"}}
12:32:12.356 MQT: tele/Zaehler_ESP/SENSOR = {"Time":"2024-04-04T12:32:12","MT691":{"energy":39129.6,"power":0,"Meter_id":"49534b"},"hz_t":{"Total_in":0.000,"Power_cur":0,"Meter_id":""}}

Könnte eventuell der MQTT-Log-Level in die Suppe spucken? Steht bei mir auf 0 (keine).

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

The-Holgi

Zitat von: RalfRog link=msg=1309717 date=17122270

Könnte eventuell der MQTT-Log-Level in die Suppe spucken? Steht bei mir auf 0 (keine).

Gruß Ralf
/quote]
Da habe ich auch schon die Einstellung geändert. Leider auch ohne Erfolg
Raspberry Pi 5

Beta-User

Hmmm, das sieht mir nach einem Fehler im Tasmota-Code aus. Auf die Schnelle habe ich dazu keinen issue gefunden, bitte dort um support nachfragen, das hat mit
Zitat von: Beta-User am 04 April 2024, 08:24:08Fragen zu "wie publishe ich außerhalb der teleperiode was aus einem SML-Script" beantworte ich gerne in dem anderen thread nach dessen (gründlicher) Lektüre deinerseits. (ich müßte den auch suchen...)
wenig zu tun...

Um "infach nur zwischendurch" was zu publishen, muss (aus dem Kopf zitiert)
- eine neue Variable definiert werden;
- die beim Auslesen gefüllt werden, und
- ein Timer angelegt werden, in dem dann der publish-Befehl steht.

Mein Tasmota-Stand ist vermutlich etwas älter, kann grade aber nicht so einfach nachsehen. Da scheint das aber noch kein Thema gewesen zu sein mit dem ungeplanten sekündlichen publish. (Also ggf. dann in dem Fall mal (interimsweise) ein downgrade versuchen?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

RalfRog

Ja meiner ist auch etwas älter und läuft mit 11.1.0. Habe auch irgendwie dunkel im Kopf, dass es für SML ne spezielle Version gab... (oder nur ne bestimmet Konfiguration?)
Zumindest für den ESP8266 hab ich was hier rumliegen.

Gruß Ralf

Edit:
in Nummer #20 zeigt @DasQ ne 12.4.0.2, die scheint dann wohl auch ok zu sein.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

The-Holgi

Hm, hab die Version mal ota geflasht. Immer noch das Gleiche.
Allerdings bleiben beim flashen ota auch alle Einstellungen erhalten.

So nach komplett neu flashen des images von DasQ funktioniert die Einstellung jetzt.
Raspberry Pi 5

DasQ

Bin leider voll beschäftigt, deshalb nur kurz


https://tasmota.github.io/docs/Peripherals/#additional-options

 
ZitatTo change the update interval (TelePeriod) of MQTT messages change the TelePeriod. Default interval is 300 seconds but can be set between 10 and 3600 seconds.
TelePeriod 10 will set the update interval to 10 seconds, so the sensor will update 6 times a minute.
Die Befehle setzt man über die Konsole in tasmota Konsole ab.
(Vorsicht,Befehle werden mit ,,Return" bestätigt nicht mit dem Button drunter.)
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

RalfRog

Zitat von: The-Holgi am 04 April 2024, 14:47:45So nach komplett neu flashen des images von DasQ funktioniert die Einstellung jetzt.
Welche Tasmota-Version war es denn die nicht ging und welche Version ist es nun die läuft?

Zitat von: DasQ am 04 April 2024, 19:01:11Die Befehle setzt man über die Konsole in tasmota Konsole ab.
Zumindest bei meiner 11.1.0 geht das auch im Webinterface (de) unter "Logging konfigurieren" / "Telemetrieperiode"

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

RalfRog

Als Befehl in der Konsole "TelePeriod 300" (oder eine andere Anzahl Sekunden bzw. ohne Paramter zur Abfrage)
   siehe: https://tasmota.github.io/docs/Commands/#mqtt

ZitatTelePeriod     See current value and force publish STATE and SENSOR message
                        0 = disable telemetry messages
                        1 = reset telemetry period to firmware default (TELE_PERIOD)
                        10..3600 = set telemetry period in seconds (default = 300)

Als Versuch auf der Konsole kann man auch einfach mal "Status" eingeben.

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

The-Holgi

Hallo,
wie ich geschrieben habe funktioniert es ja jetzt. Ich kann das Sendeintervall  übers webinterface und auch über die konsole einstellen.
Die funktionierende Version ist die 12.4.0.2 aus #20.
Die nicht funktionierende war ein fertiges .bin einer neue 13er.
Soweit bin ich erstmal zufrieden, muss nur noch herausfinden wie ich die unerwünschten readings, die tasmota so mitsended los werde. Wie zb die Zeit.

Danke für eure Hilfe.
Gruss Holger
Raspberry Pi 5

cvoigt

#40
Zitat von: The-Holgi am 04 April 2024, 11:36:56Hallo,
suche gerade nach einer Lösung das die readings nicht jede Sekunde an fhem übertragen werden. Benötige auch keine Zeitangabe, die jede Sekunde mit übertragen wird. Hier mal mein script:
>D
>B
=>sensor53 r
>M 1
+1,13,s,0,9600,SML
1,77070100010800FF@100000000,Energie Bezug,kWh,1_8_0,2
1,77070100020800FF@100000000,Energie Export,kWh,2_8_0,2
1,77070100100700FF@1,Leistung,W,16_7_0,18
1,77070100240700FF@1,Leistung L1,W,36_7_0,18
1,77070100380700FF@1,Leistung L2,W,56_7_0,18
1,770701004C0700FF@1,Leistung L3,W,76_7_0,18
#
Änderung mittels periodic brachten keine Veränderung. Im Tasmota webinterface werden die readings ca. alle 3 Sekunden angezeigt.
Vielleicht kann mir jemand helfen?

Hier das device in fhem:
Internals:
   CID        DVES_7C6865
   DEF        DVES_7C6865
   FUUID      660d6e91-f33f-6571-83ac-0bf9ec1172c9d893
   IODev      myBroker2
   LASTInputDev myBroker2
   MSGCNT     272718
   NAME       MQTT2_DVES_7C6865
   NR         533
   STATE      Aktuell: 541.07 W <br> Gesamtverbrauch: 13676.80 KWh <br> Verschenkt: 147.59 KWh
   TYPE       MQTT2_DEVICE
   eventCount 270089
   myBroker2_CONN myBroker2_192.168.178.79_54280
   myBroker2_MSGCNT 272718
   myBroker2_TIME 2024-04-04 11:37:53
   Helper:
     DBLOG:
       power:
         myDbLog:
           TIME       1712221895.61423
           VALUE      2054.97
   OLDREADINGS:
   READINGS:
     2024-04-04 11:26:23   BootCount       15
     2024-04-04 11:26:23   FallbackTopic   cmnd/DVES_7C6865_fb/
     2024-04-04 11:26:23   GroupTopic      cmnd/tasmotas/
     2024-04-04 11:37:47   Heap            11
     2024-04-04 11:26:23   Hostname        tasmota-7C6865-2149
     2024-04-03 16:59:12   IODev           myBroker2
     2024-04-04 11:26:23   IPAddress       192.168.178.79
     2024-04-04 11:26:23   LWT             Online
     2024-04-04 11:37:47   LoadAvg         19
     2024-04-04 11:06:07   LogHost        
     2024-04-04 11:06:07   LogPort         514
     2024-04-04 11:26:23   Module          Generic
     2024-04-04 11:37:47   MqttCount       1
     2024-04-04 11:06:07   MqttLog         2
     2024-04-04 11:26:23   RestartReason   Software/System restart
     2024-04-04 11:37:53   SML_16_7_0      541.07
     2024-04-04 11:25:54   SML_1_8_0       13676.80
     2024-04-03 17:06:50   SML_1_8_1       1366802948.874
     2024-04-03 17:06:50   SML_1_8_2       101700.000
     2024-04-04 11:25:54   SML_2_8_0       147.59
     2024-04-03 17:41:50   SML_32_7_0      237.4
     2024-04-04 11:37:53   SML_36_7_0      36.92
     2024-04-03 17:41:50   SML_52_7_0      237.2
     2024-04-04 11:37:53   SML_56_7_0      123.53
     2024-04-03 17:41:50   SML_72_7_0      238.5
     2024-04-04 11:37:53   SML_76_7_0      380.62
     2024-04-04 11:26:03   SML_CMD         restart
     2024-04-04 06:54:16   SaveData        off
     2024-04-04 11:37:53   Script_p_avg    479
     2024-04-04 11:37:53   Script_power    541
     2024-04-04 11:06:07   SerialLog_0_Active 0
     2024-04-03 17:01:18   SetOption26     on
     2024-04-04 11:37:47   Sleep           50
     2024-04-04 11:37:47   SleepMode       Dynamic
     2024-04-03 17:01:17   StateText1      off
     2024-04-03 17:01:17   StateText2      on
     2024-04-03 17:01:17   StateText3      toggle
     2024-04-03 17:01:17   StateText4      hold
     2024-04-04 11:06:07   SysLog_0_Active 0
     2024-04-04 11:06:07   TelePeriod      10
     2024-04-04 11:37:53   Time            2024-04-04T11:37:53
     2024-04-04 11:37:47   Uptime          0T00:11:31
     2024-04-04 11:37:47   UptimeSec       691
     2024-04-04 11:26:23   Version         13.3.0(tasmota)
     2024-04-04 11:06:07   WebLog          2
     2024-04-04 11:26:23   WebServerMode   Admin
     2024-04-04 11:37:47   Wifi_AP         1
     2024-04-04 11:37:47   Wifi_BSSId      2C:91:AB:51:80:AC
     2024-04-04 11:37:47   Wifi_Channel    1
     2024-04-04 11:37:47   Wifi_Downtime   0T00:00:05
     2024-04-04 11:37:47   Wifi_LinkCount  1
     2024-04-04 11:37:47   Wifi_Mode       11n
     2024-04-04 11:37:47   Wifi_RSSI       72
     2024-04-04 11:37:47   Wifi_SSId       TheGate
     2024-04-04 11:37:47   Wifi_Signal     -64
     2024-04-03 17:01:17   attrTemplateVersion 20210523
     2024-04-04 11:11:35   power           2054.97
   hmccu:
Attributes:
   DbLogExclude 1
   alias      Stromzaehler
   autocreate 0
   comment    NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10; 'cmnd/cmnd/tasmota_7C6865/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   event-on-change-reading .*
   genericDeviceType ignore
   icon       arduino
   model      tasmota_basic_state_power1
   readingList tele/tasmota_7C6865/LWT:.* LWT
  tele/tasmota_7C6865/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_7C6865/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_7C6865/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_7C6865/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  stat/tasmota_7C6865/POWER1:.* state
  stat/tasmota_7C6865/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       MQTT2_DEVICE,Photovoltaik
   setList    setOtaUrl:textField cmnd/tasmota_7C6865/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/tasmota_7C6865/upgrade 1
   stateFormat Aktuell: SML_16_7_0 W <br> Gesamtverbrauch: SML_1_8_0 KWh <br> Verschenkt: SML_2_8_0 KWh
Gruß Holger

Hallo The-Holgi,

das Problem sind hier die angegebenen 18 Nachkommastellen:
1,77070100100700FF@1,Leistung,W,16_7_0,18
1,77070100240700FF@1,Leistung L1,W,36_7_0,18
1,77070100380700FF@1,Leistung L2,W,56_7_0,18
1,770701004C0700FF@1,Leistung L3,W,76_7_0,18
Werte > 16 führen zum sofortigem Senden der Daten (siehe https://tasmota.github.io/docs/Smart-Meter-Interface/#meter-metrics dort unter "<precision>")
d.h. eigentlich haben Sie 2 Nachkommastellen + 16 sofortiges Senden
schauen Sie im Handbuch vom Zähler, wie viele Nachkommenstellen pro Wert er hat
ansonsten können Sie es hier herausfinden https://tasmota-sml-parser.dicp.net/
Ihr angegebener Faktor "100000000" für die kWh erscheint mir auch falsch, hier währe auch ein Muster für Ihren Zähler: https://tasmota.github.io/docs/Smart-Meter-Interface/#landis-gyr-e320-sml wobei hier oft nicht alle verfügbaren Werte im Script drin stehen

Zitat von: The-Holgi am 04 April 2024, 21:37:15Soweit bin ich erstmal zufrieden, muss nur noch herausfinden wie ich die unerwünschten readings, die tasmota so mitsended los werde. Wie zb die Zeit.
das Atribut autocreate auf 0 setzen und die unnötigen Readings löschen mit
deletereading <gerät> <reading>

Beispiel:
deletereading MQTT2_xxxxx btn_.*

zusätzlich mit Attribut suppressReading diese Readings für die Zukunft unterdrücken (falls Sie autocreate mal aktivieren müssen)

VG