NEWS
DMP8624 -> iobroker
-
@wal okay danke. Ich verstehe nicht ganz wie ich den ausgelesenen Wert am Stromzähler als Variable verpacke ...
(hier ein screen von einem Beispiel an dem ich mich orientiere)
(und hier mein Script)
>D g:pwr=0 >T pwr=1,77070100100700ff@1,Verbrauch aktuell,W,Power_curr,0 >B ->sensor53 r >M 1 +1,5,s,0,9600,LK13BE,1,10,2F3F210D0A,063035310D0A 1,77070100100700ff@1,Verbrauch aktuell,W,Power_curr,0 1,77070100010800ff@1000,Zählerstand,kWh,Power_total_in,1 #
ich denke das ist falsch doch wenn ich
1,77070100100700ff@1,Verbrauch aktuell,W,Power_curr,0
als globale Variable g setzen möchte was muss ich dann schreiben?
Ich gehe mal davon aus, dass #define USE_SCRIPT_GLOBVARS definiert ist auf meiner Firmware.
-
@jonas-haber sagte in DMP8624 -> iobroker:
ich denke das ist falsch doch wenn ich
Copy to Clipboard1,77070100100700ff@1,Verbrauch aktuell,W,Power_curr,0als globale Variable g setzen möchte was muss ich dann schreiben?
Ich gehe mal davon aus, dass #define USE_SCRIPT_GLOBVARS definiert ist auf meiner Firmware.Ja das ist falsch, du nutzt einfache schlechte Variablenamen nimm einfach P wie in diesem Beispiel.
>D g:pwr=0 >T pwr=LK13BE#P >B ->sensor53 r >M 1 +1,5,s,0,9600,LK13BE,1,10,2F3F210D0A,063035310D0A 1,77070100100700ff@1,P,W,P,0 1,77070100010800ff@1000,Zählerstand,kWh,Power_total_in,1 #
-
@jonas-haber ,
es geht noch einfacher ohne die Variablen zu ändern.>D g:pwr=0 >S pwr=sml[1] >B ->sensor53 r >M 1 +1,5,s,0,9600,LK13BE,1,10,2F3F210D0A,063035310D0A 1,77070100100700ff@1,Verbrauch aktuell,W,Power_curr,0 1,77070100010800ff@1000,Zählerstand,kWh,Power_total_in,1 #
sml[Zeilennummer vom Wert]
Vorteil: du hast jetzt jede Sekunde den Wertedit:
#define USE_SCRIPT_GLOBVARS
musst du setzen, habe keine Tasmotafirmware gefunden in der das aktiviert ist.
-
Hallo zusammen,
Bin neu hier bei euch. Habe zufällig euer Beitrag im Netz gefunden. Bin Dabei den Vorschlag von Andreas Schmidt umzusetzen wobei ich keine nulleinspeisung sondern eine konstante Einspeisung des Grundverbrauches realisiert habe. Mein Problem ist nur dass der Dmp natürlich ausgegangen ist wenn der akku leer war. Meine Idee ist jetzt den dmp abhängig von der akkuladung zu steuern.
Habe mit Interesse obiges durchgelesen und dies auch bereits umgesetzt.@fimoknete wie hast du das hinbekommen?
Bei mir sendet der ESP wie verrückt. erhalte aber keine antwort vom dmp.
habe dazu die minimale version vom skript genommen:
D
B
->sensor53 r
M 1
+1,3,m,16,9600,DC,1,2,010300000001,010300010001,010300020001,010310030001
1,010302SSssxxxx@i0:100,Spannung,V,sVolt,2
1,010302SSssxxxx@i1:1000,Strom,A,sCur,2
1,010302SSssxxxx@i2:1,Ausgang,,sSwitch,0
1,010302SSssxxxx@i3:1,Temp,°C,tCur,1das verrückte dabei ist, dass wenn ich die dmp software über den esp und ein ttl wandler direkt am pc anschließe, ich den dmp steuern kann. wenn ich das so mache funkt auch rx ganz normal. ansonsten blinkt die ganze zeit tx
das ganze habe ich wie unten dargestellt angeschlossen und auch die firmware von @Wal genutzt.
@Wal hast du ne Idee wieso ich standalone mit dem esp keine antwort vom dmp erhalte.
Habe jetzt den dmp auch direkt ohne ttl/485 Wandler ohne erfolg angeschlossen. Kann ich diesen mit deiner Firmware überhaupt ansteuern?bin am verzweifeln :(. Weiss gar nicht wo ich ansetzen kann. Habe alles mögliche probiert :D.
-
@wal wow. Schonmal einen riesen Dank hierfür. Allein der Typ mit dem Global Variable und Websend hat mich tausend Meilen weiter gebracht. Ich weiss nicht wie ich das von vornherein übersehen konnte.
-
@eri82 ,
ich habe den DMP8624 mit RS485 nicht und kann dir da bei Kommunikationsfehlern leider nicht helfen, da ich selber nicht testen kann. -
@wal danke für die Antwort. Habe das schon nach Recherche gestern befürchtet. Hast du vielleicht eine Idee, wo ich ansetzen kann? Der ttl/485 wandler, esp2866, die modbus Schnittstelle des dmp und der dmp scheinen ja zu funktionieren. Muss ich eine neue tasmota Firmware compilen?
-
@eri82 ,
die Firmware hier im Thread sollte funktionieren. -
-
@wal hey habe jetzt #define USE_SCRIPT_GLOBVARS eingefügt. Bin mir nur nicht sicher ob es an der richtigen Stelle ist. Hab es direkt an den Anfang gesetzt.
Alles zusammen gestartet mit deinem Code. Die Console zeigt dann folgendes:
Man kann nicht direkt sehen ob es funktioniert oder?
-
@jonas-haber ,
hier meine user_config_override.h/* user_config_override.h - user configuration overrides my_user_config.h for Tasmota Copyright (C) 2021 Theo Arends This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef _USER_CONFIG_OVERRIDE_H_ #define _USER_CONFIG_OVERRIDE_H_ /*****************************************************************************************************\ * USAGE: * To modify the stock configuration without changing the my_user_config.h file: * (1) copy this file to "user_config_override.h" (It will be ignored by Git) * (2) define your own settings below * ****************************************************************************************************** * ATTENTION: * - Changes to SECTION1 PARAMETER defines will only override flash settings if you change define CFG_HOLDER. * - Expect compiler warnings when no ifdef/undef/endif sequence is used. * - You still need to update my_user_config.h for major define USE_MQTT_TLS. * - All parameters can be persistent changed online using commands via MQTT, WebConsole or Serial. \*****************************************************************************************************/ // -- Master parameter control -------------------- #undef CFG_HOLDER #define CFG_HOLDER 4617 // [Reset 1] Change this value to load SECTION1 configuration parameters to flash // -- Setup your own Wifi settings --------------- #undef STA_SSID1 #define STA_SSID1 "deine SSID" // [Ssid1] Wifi SSID #undef STA_PASS1 #define STA_PASS1 "dein WIFI Passwort" // [Password1] Wifi password // -- Setup your own MQTT settings --------------- #undef MQTT_HOST #define MQTT_HOST "192.168.122.34" // [deine ioBroker IP] #undef MQTT_PORT #define MQTT_PORT 1837 // dein MQTT Port #undef MQTT_USER #define MQTT_USER "dein User" // [MqttUser] Optional user #undef MQTT_PASS #define MQTT_PASS "dein Password" // [MqttPassword] Optional password #define MY_LANGUAGE de_DE // German in Germany #define USE_SCRIPT_WEB_DISPLAY #ifndef USE_SCRIPT #define USE_SCRIPT #define SUPPORT_MQTT_EVENT #define USE_SCRIPT_GLOBVARS #endif #ifndef USE_SML_M #define USE_SML_M #define USE_SML_SCRIPT_CMD #endif #ifdef USE_RULES #undef USE_RULES #endif #undef USE_TASMOTA_DISCOVERY #undef USE_DOMOTICZ // -- Optional modules ---------------------------- #undef ROTARY_V1 // Add support for Rotary Encoder as used in MI Desk Lamp (+0k8 code) #undef USE_SONOFF_RF // Add support for Sonoff Rf Bridge (+3k2 code) #undef USE_SONOFF_SC // Add support for Sonoff Sc (+1k1 code) #undef USE_TUYA_MCU #undef USE_ARMTRONIX_DIMMERS // Add support for Armtronix Dimmers (+1k4 code) #undef USE_PS_16_DZ // Add support for PS-16-DZ Dimmer (+2k code) #undef USE_SONOFF_IFAN // Add support for Sonoff iFan02 and iFan03 (+2k code) #undef USE_BUZZER // Add support for a buzzer (+0k6 code) #undef USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) #undef USE_SHUTTER // Add Shutter support for up to 4 shutter with different motortypes (+11k code) #undef USE_DEEPSLEEP // Add support for deepsleep (+1k code) #undef USE_EXS_DIMMER // Add support for ES-Store Wi-Fi Dimmer (+1k5 code) #undef USE_DEVICE_GROUPS // Add support for device groups (+5k5 code) #undef USE_PWM_DIMMER // Add support for MJ-SD01/acenx/NTONPOWER PWM dimmers (+2k3 code, DGR=0k7) #undef USE_SONOFF_D1 // Add support for Sonoff D1 Dimmer (+0k7 code) #undef USE_SHELLY_DIMMER // Add support for Shelly Dimmer (+3k code) // -- Optional light modules ---------------------- #undef USE_LIGHT // Add support for light control #undef USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #undef USE_MY92X1 // Add support for MY92X1 RGBCW led controller as used in Sonoff B1, Ailight and Lohas #undef USE_SM16716 // Add support for SM16716 RGB LED controller (+0k7 code) #undef USE_SM2135 // Add support for SM2135 RGBCW led control as used in Action LSC (+0k6 code) #undef USE_SM2335 // Add support for SM2335 RGBCW led control as used in SwitchBot Color Bulb (+0k7 code) #undef USE_BP1658CJ // Add support for BP1658CJ RGBCW led control as used in Orein OS0100411267 Bulb #undef USE_BP5758D // Add support for BP5758D RGBCW led control as used in some Tuya lightbulbs (+0k8 code) #undef USE_SONOFF_L1 // Add support for Sonoff L1 led control #undef USE_ELECTRIQ_MOODL // Add support for ElectriQ iQ-wifiMOODL RGBW LED controller (+0k3 code) #undef USE_LIGHT_PALETTE // Add support for color palette (+0k7 code) #undef USE_LIGHT_VIRTUAL_CT // Add support for Virtual White Color Temperature (+1.1k code) #undef USE_DGR_LIGHT_SEQUENCE // Add support for device group light sequencing (requires USE_DEVICE_GROUPS) (+0k2 code) // -- Counter input ------------------------------- #undef USE_COUNTER // Enable inputs as counter (+0k8 code) #undef USE_DS18x20 // Add support for DS18x20 sensors with id sort, single scan and read retry (+2k6 code) #undef USE_I2C #undef USE_SPI #undef USE_ENERGY_SENSOR #undef USE_IR_REMOTE #endif // _USER_CONFIG_OVERRIDE_H_
-
@jonas-haber sagte in DMP8624 -> iobroker:
Man kann nicht direkt sehen ob es funktioniert oder?
Nein du brauchst 2 Tasmota Device, einmal den Sender(SML Zähler) und einmal den Empänger(DMP8624).
-
@wal Danke danke. Weisst du zufällig ob der DPM auch die input Spannung anzeigen / auslesen kann? Benutze nämlich einen Victron Laderegler den ich nicht so einfach mit Tasmota bedienen kann. Müsste nämlich für eine Nulleinspeisung noch den Wert der Arbeit der Solarpaneele haben sowie die Aktuell anliegende Spannung des Akkus (bzw. die aktuell anliegende Spannung am DPM würde ausreichen um ein automatisches abschalten des Akkus zu verhindern). Grund zu der Annahme, dass er es kann nehme ich aus dieser Fernbedienung, die man dazu bestellen kann und welche über den selben Anschluss verbunden ist. Dort kann man den Batteriestatus auslesen.
Noch eine Frage zu dem Script den du für mich erstellt hast.
In den letzten Zeilen steht am Ende eine 1 und eine 0. Hat das was mit dem SML zutun? Ich frage, da du 1 eingetragen hast aber ich ja den aktuellen Verbrauch benötige und nicht den Zählerstand.
-
@jonas-haber sagte in DMP8624 -> iobroker:
In den letzten Zeilen steht am Ende eine 1 und eine 0. Hat das was mit dem SML zutun? Ich frage, da du 1 eingetragen hast aber ich ja den aktuellen Verbrauch benötige und nicht den Zählerstand.
<precision> number of decimal places. Add 16 to transmit the data immediately. Otherwise it is transmitted on TelePeriod only.
-
SML ist doch eine Sprache. Und der Wert [1] gehört dem SML energy register an. Somit sind jenes und precision nicht die gleichen Sachen. Ich frage mich nur wo ich den Wert [1] im SML energy register finde und sehen kann, dass er dem aktuellen Verbrauch angehört.
-
@jonas-haber ,
jetzt ich verstehen will.
Der Wert 1 ist die 1 Zeile von>M 1 +1,5,s,0,9600,LK13BE,1,10,2F3F210D0A,063035310D0A 1,77070100100700ff@1,Verbrauch aktuell,W,Power_curr,0 1,77070100010800ff@1000,Zählerstand,kWh,Power_total_in,1 #
also Power_curr, sml[2] ist die 2 Zeile also Power_total_in
-
@wal top danke. Werde alles in der kommenden woche testen.
-
@wal eine frage hätte ich tatsächlich noch zur global variable auf die ich noch keine antwort gefunden habe. Da ich zur Steuerung des DPM zwingend die anliegende Spannung der Batterie wissen muss habe ich mich dazu entschieden einen PZEM-017 zu verbauen der ebenfalls über Tasmota laufen soll.
Allerdings muss man hier nur in der Konfiguration die richtigen Ports auswählen und kein Script haben wie beim DPM oder dem IR-Lesekopf.
Kann ich dann trotzdem mit der entsprechenden Firmware auf edit script gehen und dort einfach eine global variable definieren ?
>D u:spa=0 ; Global Variable u >S spa=sml[1] ; Werte aus der ersten Zeile #
-
@jonas-haber ,
viel kann ich dir dazu nicht sagen, da ich das Teil nicht habe.
Ist in dem Teil schon ein ESP eingebaut oder hängst du das Teil an ein Wemos ?
Falls ein ESP eingebaut ist, kann es schon an dem vorhandenen Speicher scheitern Script zu aktivieren.Man kann die Daten von Teleperiode im Script auslesen und in eine Globalen Variablen schreiben.
>D g:cur=0 >T cur=ENERGY#Power >S if upsecs%10==0 { print Solar %cur%W }
hier die Teleperiode und die Ausgabe von print Solar.
09:39:12.251 MQT: tele/Haus.Balkonkraftwerk/SENSOR = {"Time":"2024-04-19T09:39:12","ENERGY":{"TotalStartTime":"2023-08-17T21:06:39","Total":383.286,"Yesterday":2.448,"Today":0.021,"Period":0,"Power":20,"ApparentPower":45,"ReactivePower":41,"Factor":0.43,"Voltage":232,"Current":0.194}} 09:39:20.196 Solar 19.00W 09:39:21.201 Solar 19.00W 09:39:22.210 MQT: tele/Haus.Balkonkraftwerk/STATE = {"Time":"2024-04-19T09:39:22","Uptime":"199T13:43:36","UptimeSec":17243016,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":96,"POWER":"ON","Wifi":{"AP":1,"SSId":"1000MBit","BSSId":"B0:F2:08:54:F3:97","Channel":11,"Mode":"11n","RSSI":70,"Signal":-65,"LinkCount":6,"Downtime":"0T00:00:17"}} 09:39:22.223 MQT: tele/Haus.Balkonkraftwerk/SENSOR = {"Time":"2024-04-19T09:39:22","ENERGY":{"TotalStartTime":"2023-08-17T21:06:39","Total":383.287,"Yesterday":2.448,"Today":0.022,"Period":0,"Power":19,"ApparentPower":45,"ReactivePower":40,"Factor":0.43,"Voltage":231,"Current":0.193}} 09:39:22.230 Solar 19.00W 09:39:31.225 Solar 19.00W 09:39:32.233 MQT: tele/Haus.Balkonkraftwerk/STATE = {"Time":"2024-04-19T09:39:32","Uptime":"199T13:43:46","UptimeSec":17243026,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":96,"POWER":"ON","Wifi":{"AP":1,"SSId":"1000MBit","BSSId":"B0:F2:08:54:F3:97","Channel":11,"Mode":"11n","RSSI":70,"Signal":-65,"LinkCount":6,"Downtime":"0T00:00:17"}} 09:39:32.245 MQT: tele/Haus.Balkonkraftwerk/SENSOR = {"Time":"2024-04-19T09:39:32","ENERGY":{"TotalStartTime":"2023-08-17T21:06:39","Total":383.287,"Yesterday":2.448,"Today":0.022,"Period":0,"Power":19,"ApparentPower":45,"ReactivePower":41,"Factor":0.42,"Voltage":231,"Current":0.193}} 09:39:40.201 Solar 19.00W 09:39:41.200 Solar 19.00W 09:39:42.205 MQT: tele/Haus.Balkonkraftwerk/STATE = {"Time":"2024-04-19T09:39:42","Uptime":"199T13:43:56","UptimeSec":17243036,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":96,"POWER":"ON","Wifi":{"AP":1,"SSId":"1000MBit","BSSId":"B0:F2:08:54:F3:97","Channel":11,"Mode":"11n","RSSI":70,"Signal":-65,"LinkCount":6,"Downtime":"0T00:00:17"}} 09:39:42.215 MQT: tele/Haus.Balkonkraftwerk/SENSOR = {"Time":"2024-04-19T09:39:42","ENERGY":{"TotalStartTime":"2023-08-17T21:06:39","Total":383.287,"Yesterday":2.448,"Today":0.022,"Period":0,"Power":19,"ApparentPower":45,"ReactivePower":41,"Factor":0.42,"Voltage":232,"Current":0.193}} 09:39:42.222 Solar 19.00W 09:39:51.228 Solar 18.00W 09:39:52.235 MQT: tele/Haus.Balkonkraftwerk/STATE = {"Time":"2024-04-19T09:39:52","Uptime":"199T13:44:06","UptimeSec":17243046,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":96,"POWER":"ON","Wifi":{"AP":1,"SSId":"1000MBit","BSSId":"B0:F2:08:54:F3:97","Channel":11,"Mode":"11n","RSSI":70,"Signal":-65,"LinkCount":6,"Downtime":"0T00:00:17"}} 09:39:52.248 MQT: tele/Haus.Balkonkraftwerk/SENSOR = {"Time":"2024-04-19T09:39:52","ENERGY":{"TotalStartTime":"2023-08-17T21:06:39","Total":383.287,"Yesterday":2.448,"Today":0.022,"Period":0,"Power":18,"ApparentPower":45,"ReactivePower":41,"Factor":0.41,"Voltage":232,"Current":0.192}} 09:40:00.219 Solar 18.00W 09:40:01.225 Solar 18.00W 09:40:02.234 MQT: tele/Haus.Balkonkraftwerk/STATE = {"Time":"2024-04-19T09:40:02","Uptime":"199T13:44:16","UptimeSec":17243056,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":96,"POWER":"ON","Wifi":{"AP":1,"SSId":"1000MBit","BSSId":"B0:F2:08:54:F3:97","Channel":11,"Mode":"11n","RSSI":70,"Signal":-65,"LinkCount":6,"Downtime":"0T00:00:17"}} 09:40:02.247 MQT: tele/Haus.Balkonkraftwerk/SENSOR = {"Time":"2024-04-19T09:40:02","ENERGY":{"TotalStartTime":"2023-08-17T21:06:39","Total":383.287,"Yesterday":2.448,"Today":0.022,"Period":0,"Power":18,"ApparentPower":44,"ReactivePower":41,"Factor":0.40,"Voltage":231,"Current":0.191}} 09:40:02.254 Solar 18.00W 09:40:11.216 Solar 17.00W
-
@wal nein ich hänge das Teil nur an einen NodeMcuESP mit aktiviertem Script und global variable in der Tasmota Firmware. Ich kann also ganz sicher im Script schreiben.
"Man kann die Daten von Teleperiode im Script auslesen und in eine Globalen Variablen schreiben."
Das klingt doch super.
>D g:cur=0 ; globale Variable wird definiert. >T ; Teleperiod cur=ENERGY#Power ; Teleperiod wird aktiviert für cur und nur in Verbindung mit print Solar%cur%W >S ; ausgeführt jede Sekunde if upsecs%10==0 { ; wenn ... print Solar %cur%W ; schreibe in der Konsole / hier wird die variable geprinted und kann von Teleperiod weiter genutzt werden }
Dann schreibe ich meins mal um:
>D u:volt=0 ; Global Variable u >T volt=ENERGY#Voltage >S print Battery %volt%V ; Spannungswert jede Sekunde #
Edit:
>T ; Teleperiod cur=ENERGY#Power ; oder wird hier ein Wert vom WebUI "ENERGY" mit cur verbunden? Wo kann ich sehen dass cur und mein Voltage im WebUI fest verbunden sind?