Seite 6 von 8

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Mo 7. Mär 2022, 22:41
von sirathan
Hallo

Kann ich eigentlich auch nicht mehr als 6 MQTT Geräte (Sender) haben? Z.B. wenn ich 10 Sonoff R2 habe und die senden per MQTT an die Solaranzeige.
Gibt es da irgend einen Weg? Danke

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Di 8. Mär 2022, 01:32
von Bogeyof
Nicht über die normale Multi Regler Funktion, da ist bei 6 Geräten Schluss. Wenn du aber über eine _math.php einfach weitere SonOffs ausliest und die Werte in der Datenbank speicherst, dann schon. Dazu musst du aber etwas PHP Code erstellen. Alternativ findest du hier im Forum Beiträge über eigene_werte.php welche ebenfalls beliebige selbst ausgelesene Werte speichert. Leider wieder PHP Skript erforderlich.
Ich habe z.B. 12 Tasmota Geräte und 9 Thermostate zusätzlich zu meinen 4 offiziellen Solaranzeige Geräten in den Datenbanken...

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Mo 14. Mär 2022, 21:07
von sirathan
Hallo

Das wäre genau mein Case. Ich habe einige Sonoff POWR2 die ich auslesen möchte und in eine DB schreiben möchte. Z.B. hängt einer am Trockner und ein anderer an der Waschmaschine. Ich habe bereits 5 der 6 "Regler" genutzt. Wie bist du vorgegangen?

hast du für den ersten Sonoff eine x.user.config.php erstellt und dann alle Sonoff's in der selben _math ausgelesen?
hast du alle in die selbe DB geschrieben?
hast du irgendwo noch den code, den du in der _math verwendet hast?


merci

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Di 15. Mär 2022, 09:11
von Bogeyof
Am Problem mit MQTT bin ich auch gescheitert. Ich denke, hier liegt ein Missverständnis vor, welches in der Anleitung nicht ausreichend beschrieben wird. Die Topics für MQTT in der x.user.config.php sind Einzelwerte, d.h. es wird davon ausgegangen, dass z.B. ein Homeserver einzelne Daten je Feldname schickt. Die SonOff (bzw. alle Tasmotas) schicken aber ganze JSON-Strings als Nachrichten, die noch zerlegt werden müssten. Dies tut aber die einfache MQTT-Routine nicht. Daher gibt es einzelne Geräte-Skripte wie shelly.php oder sonoff_mqtt.phh, die genau dieses extra durchführen.

Man kann also Tasmota-Geräte nicht einfach mit Topics in der x.user.config.php aufführen und dann hoffen, die Daten landen in der Datenbank. Man müsste sie daher als einzelne Geräte einbinden, soweit sie von den vorhandenen Skripten überhaupt unterstützt werden. Leider kann man aber auch nur insgesamt 6 Geräte definieren, was für viele Tasmota Schalter natürlich auch zu wenig ist.

Ich bin daher den Weg über eine eigene Ausleseroutine gegangen, welche (bei mir) derzeit 10 Tasmota Schalter in die Datenbank schreibt. Ich habe mich dabei auf die für mich interessanten Werte wie Leistung Current, Today und Total beschränkt, natürlich können alle weiteren Werte auf diese Art auch ausgelesen werden. Ich nutze auch nicht MQTT, sondern einfach die WEB-API Schnittstelle.

Im Anhang eine beispiel_math.php, welche einen Tasmota-Schalter ausliest, die 3 Leistungswerte werden dann in der Datenbank des Gerätes gespeichert, welche die _math.php dann ausführt. Zu finden im Measurement Energy. Falls das Auslesen nicht klappt (Tasmota nicht erreichbar, Stromausfall...) wird der bisherige Total-Wert aus der Datenbank ausgelesen und fortgeschrieben, die anderen Werte auf 0 gesetzt. Es muss natürlich die entsprechende IP für das gewünschte Tasmota-Gerät im Skript eingetragen werden.

Die Erweiterung für x weitere Tasmotas wäre einfach, nur den Anteil des Auslesens vervielfältigen, IP anpassen, die Bezeichnung der Datenfelder anpassen, die Zusatzquery anpassen/erweitern und fertig. Die Durchlaufzeiten liegen hier auch bei 10 Tasmotas unter 3 Sekunden...

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Di 15. Mär 2022, 22:41
von sirathan
So, nun habe ich es hingekriegt. Vielen Dank. Musste noch etwas üben, anfangs wurden die Daten nicht ins Zusatz Query übernommen.

Problem war, dass bei dir die Variable $daten anstelle $aktuelleDaten hiess. Aber nun geht es!!

Code: Alles auswählen

$aktuelleDaten["ZusatzQuery"]  = "Energy ";
$aktuelleDaten["ZusatzQuery"] .= "WaschmaschineToday=" . $aktuelleDaten["WaschmaschineToday"];
$aktuelleDaten["ZusatzQuery"] .= ",WaschmaschineTotal=" . $aktuelleDaten["WaschmaschineTotal"];
$aktuelleDaten["ZusatzQuery"] .= ",WaschmaschineCur=" . $aktuelleDaten["WaschmaschineCur"];
$aktuelleDaten["ZusatzQuery"] .= "  ".$aktuelleDaten["zentralerTimestamp"];

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: So 25. Feb 2024, 21:44
von UNCLE03
Hi,

wie und wo binde ich denn die obige beispiel.php ein ?


Angepasst als user_init.php im Ordner \www\html ?

Gruß

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Mo 26. Feb 2024, 06:48
von Bogeyof
Eine _math.php gehört zu einem Gerät, welches von Dir ausgelesen wird. D.h. Du nimmst z.B. Deinen Wechselrichter (sagen wir es wäre der Kostal Plenticore), dann muss die passende _math.php eben kostal_plenticore_math.php heißen. Diese _math.php wird dann bei jedem Auslesen des Wechselrichters am Ende durchlaufen und kann auch andere Daten auslesen und Routinen ausführen, die nicht zwingend mit dem Wechselrichter zu tun haben müssen.
Als Beispiel nimm dein Gerät der 1.user.config.php, suche die dafür verwendete Geräte-PHP und suche in dieser nach math.php. Dadurch siehst Du wie diese genau heißen muss. Dann kopierst Du Deine für Dich angepasste _math.php mit diesem Namen nach /var/www/html und fertig...

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Mo 26. Feb 2024, 10:00
von UNCLE03
super Danke, das klappt schon einmal

jetzt habe ich nur das Problem mit der Anpassung, da ich Solaranzeige im Docker laufen hab.

Log sagt:
25.02. 23:42:06 -Daten nicht zur lokalen InfluxDB gesendet! info: array (
'url' => 'http://localhost/write?db=solaranzeige&precision=s',
'content_type' => 'application/json',
'http_code' => 400,
'header_size' => 421,
'request_size' => 1127,
usw

Hast Du da auch eine Idee ?

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Mo 26. Feb 2024, 10:06
von Bogeyof
Da müsste ich mehr von der Log-Datei sehen, ich denke das ist ein Fehler in den Daten oder bei der Versorgung der Namen der Datenbank usw. Es werden ja die Standardroutinen von Solaranzeige benutzt, da dürfte ja dann alles andere auch nicht speichern können. Ich glaube nicht, dass es etwas Dicker spezifisches ist...

Re: Sonoff POW R2 mit Tasmota Firmware als Messstelle

Verfasst: Mo 26. Feb 2024, 10:27
von UNCLE03
Na dann hier aus dem Log:

26.02. 10:28:05 MQT-MQTT Daten zum Broker gesendet bzw. vom Broker empfangen. Adresse: 192.168.1.200 Port: 1883
26.02. 10:28:08 -InfluxDB => [ Energy TasmotaWZToday=0,TasmotaWZTotal=,TasmotaWZCur=0 1708939691
AC Verbrauch=1565,Bezug=-200,Solarleistung=935,AC_Wallbox_Leistung=0,AutarkieProzent=94,VerbrauchProzent=92,Leistungsmesser=1,Leistung_L1_in_Watt=-1018,Leistung_L2_in_Watt=161,Leistung_L3_in_Watt=657,ExterneLeistung=-962,Phasen_Frequenz=50.03 1708939691
Batterie SOC=49,Leistung=132 1708939691
PV Gesamtleistung=935,String1_Spannung=632,String1_Strom=0.82,String1_Leistung=523,String2_Spannung=524,String2_Strom=0.79,String2_Leistung=412,String3_Spannung=0,String3_Strom=0,String3_Leistung=0,PV_Wallbox_Leistung=0 1708939691
Wallbox CTRL=10000000000000,Aktiv=0,Modus=0,Laden=0,Auto=0,verriegelt=0,gesteckt=0,3Ph_16A=0,3Ph_32A=0,Kabel_Ph=0,AC_Leistung=0,PV_Leistung=0 1708939691
Notstrom CTRL=10000100,Laden=0,Entladen=0,Notstrom=1,Wetter=0,Abregelung=0,Ladesperre=0,Entladesperre=0 1708939691
Service Modell="S10 E AIO Pro 912",Seriennummer="P10-702101016465",PowerStatus=0002 1708939691
Summen Wh_Heute=1056.02 1708939691
]
26.02. 10:28:08 -Daten nicht zur lokalen InfluxDB gesendet! info: array (
'url' => 'http://localhost/write?db=solaranzeige&precision=s',
'content_type' => 'application/json',
'http_code' => 400,
'header_size' => 421,
'request_size' => 1154,
'filetime' => -1,
'ssl_verify_result' => 0,
'redirect_count' => 0,
'total_time' => 0.022852,
'namelookup_time' => 2.2E-5,
'connect_time' => 2.2E-5,
'pretransfer_time' => 4.2E-5,
'size_upload' => 997.0,
'size_download' => 143.0,
'speed_download' => 6500.0,
'speed_upload' => 45318.0,
'download_content_length' => 143.0,
'upload_content_length' => 997.0,
'starttransfer_time' => 0.022827,
'redirect_time' => 0.0,
'redirect_url' => '',
'primary_ip' => '127.0.0.1',
'certinfo' =>
array (
),
'primary_port' => 8086,
'local_ip' => '127.0.0.1',
'local_port' => 40878,
'http_version' => 2,
'protocol' => 1,
'ssl_verifyresult' => 0,
'scheme' => 'HTTP',
'appconnect_time_us' => 0,
'connect_time_us' => 22,
'namelookup_time_us' => 22,
'pretransfer_time_us' => 42,
'redirect_time_us' => 0,
'starttransfer_time_us' => 22827,
'total_time_us' => 22852,
)