Hallo,
befasse mich derzeit mit IPS auf der Banane und möchte einige Werte von einer funktionierenden Client Socket Verbindung in IPS speichern und später dann mit Graphen anzeigen. Da ich keinen Plan von IPS scripten habe bräuchte ich Eure Unterstützung.
IPS auf der Banane ist installiert und läuft
Client Socket Verbindung ist eingerichtet und liefert über Debug folgende Ausgabe:
08.02.2015 13:28:55.00 | RECEIVED | MODBUS.serial.pv_energy.pv_power1=1210
08.02.2015 13:28:56.00 | RECEIVED | MODBUS.serial.pv_energy.pv_power2=1480
08.02.2015 13:28:56.00 | RECEIVED | MODBUS.serial.pv_energy.pv_power3=630
08.02.2015 13:28:56.00 | RECEIVED | MODBUS.serial.pv_energy.pv_power_tot=2680
08.02.2015 13:29:00.00 | RECEIVED | MODBUS.serial.Elsner_P03.sun.s=48
08.02.2015 13:29:01.00 | RECEIVED | MODBUS.serial.Elsner_P03.temp=2
Wie bekomme ich jetzt diese Werte in eingelesen IPS und gespeichert? Es sind übrigens noch viel mehr Werte die aber immer gleich aufgebaut sind. Ich muss ja wohl jede einzeln in eine Float Variable speichern.
PS: die Client Socket Verbindung ist übrigens zu einem DOMIQ Base das LCN, Modbus und DMX koppelt.
so habe ich es bei UweR probiert, und es geht.
$wert=(($wert-1000)/10); war die Umrechnung LCN Wert in Temperatur, da kannst du auch was anderes einbauen.
Da ich kein DOMIQ mehr habe, muss ich das leider Online machen, wenn mir ein DOMIQ zur Verfügung steht.
Die ‚VAR Wert‘ wird mit den richtigen Werten nach dem ‚=‘ gefüllt. Aber alle ‚VAR Name‘ ($typ) Inhalte haben vor dem eigentlichen Text immer noch 1.668089292921 und Zeilenumbruch vorne anstehen. Das sieht so aus:
1.668089292921
MODBUS.serial.pv_energy.pv_power1
Im Debug von Client socket oder Cutter ist nichts von 1.668089292921 zu sehen
Das letzte if Stück funktioniert daher auch nicht…
Hallo,
heute habe ich mal wieder mal wieder etwas Zeit gefunden. Und siehe da… dieser 1.668089292921 Müll ist auf einmal weg ohne das ich das Script nochmals verändert hatte.
Einzig hatte ich diese Woche ein Spannungsreset am Banana Pi und dem DOMIQ Base durchgeführt
ich habe ein ähnliches Problem. Meine neue Wetterstation liefert via RS485 Adapter (ID 44523) an den Raspi. Es kommen auch Daten an (siehe Debug)
"TXT: 26.01.2019, 12:04:36 | RECEIVED | W+19.4000000J00000.5N???
HEX: 26.01.2019, 12:04:36 | RECEIVED | 57 2B 31 39 2E 34 30 30 30 30 30 30 4A 30 30 30 30 30 2E 35 4E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F
TXT: 26.01.2019, 12:04:36 | RECEIVED | ???1995<ETX>
HEX: 26.01.2019, 12:04:36 | RECEIVED | 3F 3F 3F 31 39 39 35 03
TXT: 26.01.2019, 12:04:38 | RECEIVED | W+19.4000000J00000.4N???
HEX: 26.01.2019, 12:04:38 | RECEIVED | 57 2B 31 39 2E 34 30 30 30 30 30 30 4A 30 30 30 30 30 2E 34 4E 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F
TXT: 26.01.2019, 12:04:38 | RECEIVED | ???1994<ETX>
HEX: 26.01.2019, 12:04:38 | RECEIVED | 3F 3F 3F 31 39 39 34 03 "
Wie bekomme ich die nun in eine Variable und entsprechend geschnitten (relevant wäre der Inhalt jeweils hinter TXT:)
Ich habe schon mal versucht eine Variable (ID 38013) vom Typ String zu erstellen und darunter ein Skript (17781), aber woher weiß die Variable, von welcher ID es sich die Daten holen soll?
Mit den Beispielen komme ich leider aktuell nicht weiter
Ja, habe ich. Problematik ist jedoch die, ich habe eine IO Instanz mit der ID s.o., dann noch eine String Variable angelegt, nur wie ich nun die IO Instanz (im Debug werden sie ja angezeigt) in die String Variable respektive gecuttet bekomme, da komme ich nicht dahinter.
$_IPS habe ich gelesen, doch wie bekommt er die ID der IO Instanz mit?
Die ID brauchst Du nicht, denn wie es auch in der Doku steht, wird der Registervariablen-Instance als Parent(Gateway) die IO-Instance zugewiesen. Damit bekommt sie die Daten vom IO direkt angeliefert. Das Script zum Parsen wird dann der Registervariablen-Instance Ziel zugewiesen und mit $data=$_IPS[‚VALUE‘] hast Du die Daten
In der Webkonsole die Konfigurationsseite der Register-Variable aufrufen. Oben im Menu der Instanz-Konfiguration in der rechten Hälfte „Gateway ändern“ anklicken, Parent-Instance auswählen.oder neu erzeugen und bestätigen
Das hat sehr geholfen. Ich hatte ein grundlegendes Problem, dass ich eine normale Variable angelegt habe und hier ständig rum versucht.
Mit einer neuen Instanz und dann Register Variable kommen jetzt hier die Daten rein und ich kann mich weiter versuchen.