ich habe IPS 4 auf eine Raspberry 3, dazu einen USB-Lesekopf von Udo.
Die Hardware Installation paßt und ist getestet.
Auf der Konsole des Raspi kann ich die Daten durch senden des Strings „/?!“ an /dev/ttyUSB0 den Zähler dazu bringen Daten zu senden. Mit cat /dev/ttyUSB0 bekomme ich diese dann auch angezeigt, sieht dann so aus (Auszug): 0.0.0(03227938)
0.9.1(205210)
0.9.2(130429)
0.1.203(1304010000)
0.1.202(1303010000)
0.1.2*01(13 02010000)
Jetzt komme ich in IPS nicht weiter.
Ich möchte die folgenden Werte weiterverarbeiten:
Wie kann ich den String an die Serielle Schnittstelle senden und dann anschließend die empfangenen Daten den Variablen zuordnen?
Benötige ich einen Cutter?
Muss das Ganze in ein PHP-Script?
danke für den Tip.
ist wahrscheinlich das was ich benötige um die Daten anzufordern.
Aber wie verbinde ich das Script mit der Seriellen Schnittstelle, eine Instanz kann ich ja nicht auswählen?
NACHTRAG >> OK, hab es gerade heraus gefunden, die ID bei SPRT_send_Text ist die ID der I/O Instanz.
Wenn ich das Script ausführe wird die Anforderung an den Zähler gesendet.
Im Debug von der I/O-Instanz kann man das auch sehen, leider kommen
eber keine Daten vom Zähler bei der I/O Instanz an.
Wenn ich auf der Konsole ein cat /dev/ttyUSB0 laufen lasse, sehe ich die Antwort aber.
Kann mir jemand hierzu einen Tipp geben, warum die Daten nicht ankommen?
kann mir bitte mal einer helfen bezüglich des scriptes.
Versuch nun einen Zähler (MT174) mit d0 Ausgabe in IPS zu integrieren.
Leider kommt im Script immer folgende Fehlermeldung.
Parse error: syntax error, unexpected ‚$daten‘ (T_VARIABLE) in C:\IP-Symcon\scripts\28811.ips.php on line 11
das Script ist lediglich in der Variable von mir angepasst, sonst nix.
Danke für deine schnelle Antwort.
Aber gehört die „rote“ Klammer nicht zum Ausgabetext, bzw. zu den empfangenen Daten, also hat doch gar nix mit php zu tun. Oder bin ich da verkehrt?
Gruß Remo
PS: empfangende Daten : 1.8.0255(0016431.587kWh) - so kommt es in der RegVar an
Hast Recht, bei mir funktioniert Dein Script, Deine $header ausgabe ist aber nicht wie gewünscht, schätze ich.
Mach mal
echo $header;
rein.
Gruß Helmut
der schmeißt mir immer noch ein Fehler raus.
Hab mal den Header angepasst, da es ja in der RegVar anders ankommt, also (1.8.0*255).
Fehler: Parse error: syntax error, unexpected ‚$daten‘ (T_VARIABLE) in C:\IP-Symcon\scripts\28811.ips.php on line 11
Ich habe auf IPS 4.3 umgestellt. Seit dem habe ich Probleme auch mit kopieren von Scripten. Ich muss immer in die Zeilen reingehen, da er mir z.B. ein „if“ oder ein „true“ nicht erkennt.
Aber na gut … andere Geschichte.
echo $header; eingesetzt
Auf Grund des Fehlers führt er mir es allerdings nicht aus.
kurz um: bei dir funktioniert es ich verstehe es nicht.
mal anders gefragt: das kommt aus der RegVar: 1.8.0255(0016431.587kWh)
Für mich sind die Werte in den Klammern wichtig, die sollen in die Variable geschrieben werden.
Grundsätzlich ist doch das Script so i.O. , oder?
ich schaue mir das gerade auf dem Handy an , Tatsache voller Sterne.
Im Edge Browser sieht man da nix , das gibt es doch nicht.
Sobald ich vor dem PC sitze , probieren ich da noch einmal mit einem anderen Browser.
Wenn das funktioniert werde ich verrückt.
Ich melde mich.
so , ausprobiert und siehe da, tatsächlich ein Problem beim kopieren.
So weit so gut, Danke dafür.
Allerdings habe ich immer noch Probleme mit dem Script. Die Ausgabe in die Variable funktioniert nicht.
Mit „echo $header“ bekomme ich kein Feedback. Bedeutet: der header wird so nicht erkannt bzw. läuft er durch ohne von der RegVar so wahrgenommen zu werden.
Ich stelle noch einmal die Ausgabe und das Script hierein, vielleicht hat jemand noch eine Idee.
Ich glaube du müsstest deine Überprüfung für den 1.8.0-Fall anpassen. Der empfangene Wert ist 1.8.0255(…) und mit strstr schneidest du die öffnende Klammer und alles dahinter weg. Dann bleibt allerdings 1.8.0255 zurück und nicht, wie in deiner Überprüfung, 1.8.0. Ich kenne das Protokoll jetzt nicht, aber so wie ich deinen Code lese kommt nach der 1.8.0 immer ein 255 also könntest du einfach prüfen ob $header == 1.8.0255. Dann sollte der Fall auch triggern und echo gibt die entsprechende Ausgabe.
das Script habe ich nochmal angepasst bzw. immer wieder die „Trennung“ verändert.Leider ohne Erfolg.
Die Überprüfung sollte so richtig sein, allerdings kommt kein echo bzw. wird die Variable gesetzt.
Da ich nicht der große php Experte bin, nur mal zur Verständigung:
mit
$string = $_IPS['VALUE'];
und
$header = strstr ($string,'(',true);
lege ich fest, dass ein string immer eine Zeile in der RegVar ist bzw. ein string ist immer eine Zeile. Ich hoffe man kann das so einfach formulieren
Ist das so richtig von mir verstanden?
Hast du das echo sonst einfach mal aus den if-Blöcken gezogen? Dann siehst du in jedem Fall was darin steht und kannst mal schauen was eventuell nicht passt. Also einfach echo $header direkt nach $header = strstr(…)
was das mit dem echo angeht, nun ja, was soll ich sagen, es passiert überhaupt nichts.
Keine Ausgabe vorhanden.
Das Script wird bei jedem Datenempfang getriggert, allerdings scheint, das dass mit header nicht funktioniert.
ps: hab mal noch dem dump der RegVar angehängt, vielleicht hilft es.
ich hatte es zwischen zeitlich mal mit den HEX Werten probiert, aber auch hier ohne Erfolg
Das echo von einer RegisterVariable landet im Message Log. Hast du da geschaut? Hast du das Modul korrekt eingerichtet? Siehe hier für Doku: RegisterVariable IP-Symcon :: Automatisierungssoftware
Wird das Skript ausgeführt? Wird also die Zeit der letzten Ausführung regelmäßig hochgesetzt?