Auch ich bin neu hier und nicht wirklich programmierbewandert...
Nachdem ich dank der guten Anleitungen und Forenbeiträge ein schönes Dashboard für meinen E3DC S10X erstellt habe, versuche ich nun Daten aus der Heizung (Solarfocus Octoplus) via Modbus TCP in die influxdb zu bekommen und nutze dafür die "function modbus_register_lesen" aus der "funktionen.inc.php" im Ordner "phpinc".
Ich habe für meine "user_device.php" die "kostal_meter.php" als Basis hergenommen, weil hier auch Modbus TCP - Register ausgelesen werden. Den aktuellen Arbeitsstand habe ich mal angehängt. Es ist noch ziemlich viel auskommentiert, weil ich erstmal nur mit einem Wert "Außentemperatur" erfolgreich sein möchte und erst aufräume, wenn es so funktioniert, wie ich es mir vorstelle.
Die für mich interessanten Größen habe ich nach Schnittstellenbeschreibung und Ausprobieren mit CASModbusScanner in die "user_device.php" eingetragen. Nach schrittweiser Annäherung ans Ziel mittels viel Lesen und Probieren scheitere ich aber leider daran einen anderen Wert als 0 herauszubekommen.
Nun zu meinen Fragen:
1. Folgende Meldung steht dauerhaft in der "php.log":
Kann mir jemand erklären, wie das Programm darauf kommt, dass es sich bei dem Wert um ein Boolean handelt?Trying to access array offset on value of type bool in /var/www/html/user_device.php on line 214
2. Ein vollständiger Programmablauf sieht bei mir in der "solaranzeige.log" so aus:
Grundsätzlich scheint das Programm schonmal zu funktionieren (Kontakt zum Gerät und Schreiben in db)...148195 25.09. 20:32:01 -Multi Regler Auslesen [Start].
148196 25.09. 20:32:01 -Verarbeitung von: '1.user.config.php' Regler: 18
148197 25.09. 20:32:01 |---------------- Start E3DC Wechselrichter ---------------.
148198 25.09. 20:32:01 -E3DC: 192.168.178.25 Port: 502 GeräteID: 1
148199 25.09. 20:32:01 * -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet..
148200 25.09. 20:32:01 -Multi-Regler-Ausgang. 7
148201 25.09. 20:32:08 -OK. Datenübertragung erfolgreich.
148202 25.09. 20:32:08 -Solarleistung: 0 Watt - WattstundenGesamtHeute: 63971.72
148203 25.09. 20:32:08 |---------------- Stop E3DC Wechselricter ---------------.
148204 25.09. 20:32:09 -Verarbeitung von: '2.user.config.php' Regler: 1001
148205 25.09. 20:32:09 -Datei 'user_device.php' gefunden.
148206 25.09. 20:32:09 |---------------- Start user_device.php ---------------.
148207 25.09. 20:32:09 -Zentraler Timestamp: 1695666721
148208 25.09. 20:32:09 -Octoplus: 192.168.178.26 Port: 502 GeräteID: 1
148209 25.09. 20:32:09 o -Hardware Version:.
148210 25.09. 20:32:09 + -Die Daten werden ausgelesen...
148211 25.09. 20:32:09 o -Antwort = 0001000000033e1401
148212 25.09. 20:32:09 -array (
148213 'zentralerTimestamp' => 1695666731,
148214 'Außentemperatur' => 0,
148215 'Regler' => '1001',
148216 'Objekt' => 'Heizung',
148217 )
148218 25.09. 20:32:09 -Aktuelle Daten:.
148219 Array
148220 (
148221 [zentralerTimestamp] => 1695666731
148222 [Außentemperatur] => 0
148223 [Regler] => 1001
148224 [Objekt] => Heizung
148225 [Timestamp] => 1695666729
148226 [Monat] => 9
148227 [Woche] => 39
148228 [Wochentag] => Montag
148229 [Datum] => 25.09.2023
148230 [Uhrzeit] => 20:32:09
148231 [InfluxAdresse] =>.
148232 [InfluxPort] => 8086
148233 [InfluxUser] =>.
148234 [InfluxPassword] =>.
148235 [InfluxDBName] => solarfocus
148236 [InfluxDaylight] =>.
148237 [InfluxDBLokal] => solarfocus
148238 [InfluxSSL] =>.
148239 [Demodaten] =>.
148240 )
148241
148242 25.09. 20:32:09 -Query:.
148243
148244 25.09. 20:32:09 * -Daten zur lokalen InfluxDB [ solarfocus ] gesendet..
148245 25.09. 20:32:09 -Multi-Regler-Ausgang. 8
148246 25.09. 20:32:17 !! -Keine gültigen Daten empfangen.
148247 25.09. 20:32:17 |---------------- Stop user_device.php ---------------.
148248 25.09. 20:32:19 -Multi Regler Auslesen [Stop].
Ich bekomme aber keine Werte ins Array. Mit dem CASModbusScanner sehe ich, dass unter der angegebenen Adresse der richtige Wert ausgegeben wird.
Die Funktion "modbus_register_lesen" nutzt die Funktion "kostal_com_lesen". Die letztgenannte scheint aber zu funktionieren, seit dem ich die Fehlermeldung "Keine Häppchen empfangen" wegbekommen habe. Meine Vermutung ist, dass die Variable $Daten["Wert"] in der Funktion "modbus_register_lesen" nicht mit dem Antwortwert überschrieben wird.
Kann mir bitte jemand helfen?