Unterstützung Auswertung Server Socket

Hallo zusammen,

bin gerade darüber, meine iSpindel (gehört zum Hobby Bier brauen) an IP-Symcon anzubinden.

https://github.com/universam1/iSpindel

Hierzu bekomme ich mittels Server Socket die Daten alle drei Minuten bereit gestellt, das Ergebnis schaut so aus:

https://github.com/universam1/iSpindel/tree/master/tools/generic-TCP

Kann mir jemand einen Tipp geben, wie ich das weiterverarbeiten kann?
Cutter? Register Variable?

Mit diesen Sachen habe ich noch nicht gearbeitet, deshalb fällt mir hier der Start so schwer…

Alternativ könnte ich mir die Daten auch per HTTP POST schicken lassen. Was müsste ich hier beachten?

Danke für eure Hilfe.

Daniel

Mach doch Cutter und RegVar (also dem Cutter folgt eh ne RegVar) :wink:

Im Cutter stellst du die geschweifte Klammer als Anfang und Ende ein und hast somit immer einen ganzen Datensatz und den übergibst Du in der RegVar an ein Script und pflückst dort den String mit explode() auseinander. Trennzeichen sind ja super erkennbar.

Gruß
Jens

Solange da nicht mehr Klammern kommen, ist der Cutter eine gute Idee.
Anstatt explode jedoch $data =json_decode($_IPS[‚VALUE‘], true); nutzen und schon ist in Data ein Array mit allen Werten.
http://php.net/manual/de/function.json-decode.php
Michael

Hallo Michael,

danke, ich werde es mal probieren…
Bei Rückfragen melde ich mich nochmal :slight_smile:

Schöne Grüße
Daniel

Hallo nochmal,

also folgendes habe ich jetzt gemacht:

Cutter angelegt:

Register Variable + Script angelgt:

und mein Script folgend gestartet:

<?


// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
if ($_IPS['SENDER'] == "RegisterVariable")
{
    // bereits im Puffer der Instanz vorhandene Daten in $data kopieren
    $data  = RegVar_GetBuffer($_IPS['INSTANCE']);
    
	
	$data = json_decode($_IPS['VALUE'], true);

echo $data;

}

?>

Nun meine Frage, wie bekomme ich die Daten jetzt aus der Registervariabel bzw. wie muss das Script weiter gehen?
Gibt es hierzu eine gute Anleitung oder ein gutes Beispiel?

Danke!

Daniel

Getbuffer brauchst du nicht, wenn du den Cutter nutzt.
Mach aus dem Echo Mal ein var_dump($data);
Dann siehst du im Log (Meldungen) deine Daten.
$_IPS[‚VALUE‘] enthält schon die Daten der Registervariable :wink:
Du musst eigentlich nur noch mit SetValue die Werte in eine IPS-Variable schreiben.
SetValue(12345, $data[‚battery‘]);
Michael

Hallo Michael,

nochmal vielen Dank für deine bisherigen Tipps und Hilfen.
Leider zeigt das Var_Dump nun NULL an, meine Variable wird auch mit 0 beschrieben…
Hast du hierzu noch ein Lösung?

Register_var.png

Script_neu.png

Danke!

Grüße
Daniel

Schau bitte mal im Debug der Registervariable nach, ob die Daten vom Cutter dort korrekt ankommen.
Michael

Hier scheinen Daten anzukommen…

Allerdings habe ich aktuell auch das Problem, dass dieses Skript meinem IPS gar nicht gefällt. Kommt jetzt immer früher oder später die altbekannte Meldung:

Dauert keine Minute nach Neustart :frowning:

Grüße
Dan

Klar … Oh man, ganz vergessen, der Cutter entfernten ja die Klammern :smiley:
Probiere mal
$data =json_decode(’{’.$_IPS[‚VALUE‘].’}’, true);
Michael

Jawoll, jetzt geht es… :smiley:

Vielen Dank für deine Mithilfe und Lösungsfindung!

Schönen Abend noch.
Daniel

Hallo,

wie müsste denn der Code aussehen wenn man direkt vom Serversocket zur RegisterVariable geht und den Cutter weg lässt?

Ich komme einfach nicht weiter :frowning:

Viele Grüße!

Hi zusammen,

hab jetzt nun auch endlich meine Ispindel und würd die gern einbinden ins Symcon. Gibt’s hierfür auch eine Anleitung bzw. wie oder mit welchen Einstellungen muss ich den Server Socket belegen?

Schönen Gruß
CX