Hallo, ich bin Anfänger in Sachen Modbus und noch wirklich weit drin in IP-Symcon.
Ich habe das Waveshare Modbus Gateway an meine Elektrolyse vom Pool angeschlossen.
Hier handelt es sich um eine Infinity Hydrolife, baugleich mit Sugar Valley und viele anderen.
Die ersten Register konnte ich schon auslesen und zuordnen (lesend).
Jetzt möchte ich z.B. den Status der Register 0x010E (270) auslesen und als Statusled visualisieren.
Das sind ja eigentlich alles 1bit Werte. Wie muss ich hier vorgehen ? Mas bedeutet hier das Mask in der zweiten Spalte ?
Woran scheitert es denn? Hast du das Script mal ausgeführt? Liefert es die passenden Werte? Achtung: du kannst mit ECHO keinen boolean ausgeben. Dafür brauchst du var_dump.
Starten des Script dann über ‚bei Variablenänderung‘ der Modbus Variable, welche über den Timer in der Instanzkonfiguration (oder im Splitter, je nach Konzept) entsprechend abgefragt wird.
Na du hast erfolgreich an Script angelegt und mit Inhalt befüllt. Die Variablen-ID (32980) hast du leider im Objektbaum abgeschnitten, ob die Stimmt kann ich so nicht prüfen. Gehen wir mal davon aus, dass du die korrekte ID genommen hast.
Allerdings ist gleich in Zeile 1 ein Fehler. Es heißt
<?php
$byte = .....
Ich hatte das exemplarisch für BIT 3 und Bit8 gemacht. Die sind (Wert aktuell binär 00000001) aber beide auf 0. Daher solltest du auch noch bit0 auswerten.
$bit0 = $byte & 0x0001;
var_dump($bit0);
Wenn du jetzt erfolgreich den Wert siehst, kannst du an einer ANDEREN Stelle (also nicht unmittelbar unter der Instanz „Modbus-Gerät“) noch 8 boolean Variablen erzeugen und dann statt var_dump, SetValue verwenden.
PS: Da du hier die neue Modbus-Instanz verwendest, könnte man theoretisch auch innerhalb der Instanz die neuen Variablen anlegen und intern füllen. Das wird aber deutlich komplexer und würde ich hinten anstellen, bis du diese Variante verstanden hast.
Vielen Dank Tobi für deine Unterstützung.
Es schaut so aus dass ich jetzt die Daten habe die ich benötige. Ob es der richtige Weg ist weiß ich nicht, aber zumindest habe ich jetzt für mich einen kleinen Einstieg.
Du solltest dich nur entscheiden, ob du ‚Führe PHP Code aus‘ oder ‚Starte Script‘ nimmst und das andere entsprechend auch löschen. Zudem kann man das Script deutlich kompakter schreiben.