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?
also unter Meldungen sieht das so aus, da hatte ich noch garn nicht rein geschaut-- man lernt nie aus.
da bringt er einen Fehler genau bei den Daten die ich haben will, aber warum?
Er soll mir die Daten doch 1-1 in die Variable schreiben, wieso Cannot auto-convert?
hab mal ne String Variable genommen und siehe da, der Wert steht drin. :):)
Ich bin happy.
Ich denke jetzt komm ich weiter, das Problem wird sein, das der Wert z.B. (93.503*kwh) ist.
Damit kann eine Float nichts anfangen bzw. kann sie es nicht wiedergeben. Richtig?
Jetzt muss ich noch (*kwh) weg bekommen, dann passt alles.
Hätte ich schreiben sollen, dass ich $string = $_IPS[‚VALUE‘]; geremmt habe um die Schleife zu testen ;-(
Dann sieht man auch beim Aufruf des Scriptes die Echo- Anweisung.
Sorry
Nutzt Du den Cutter? Wenn ja nimm doch das Sternchen als rechten Trenner * und für den linken Trenner *255(
Edit: sehe gerade, Du hast 2 Geräte, dann muß der rechte Trenner das Sternchen sein und der linke Trenner bleibt leer
Dann die Auswahl im Script anpassen.
Und String in Float geht so:
$float_value_of_string = floatval($header);
in $float_value_of_string steht der String, in $Header der Float - Wert
Mußt naturlemang auch eine Floatvariable haben in der Du das Ergebniss reinschreibst.
Gruß Helmut
@Helmut: alles gut, liegt an mir, das Verständnis wächst bei mir,ist aber noch im Babystadium
Ich werde das spätestens morgen mal erweitern bzw. für mich fertig machen.
Dann stell ich es hier rein, der Zähler ist ja nicht so selten. Da wird es schon einen geben der die selben Probleme hat :).
Das klingt doch so, als würde es gut voran gehen. Sehr schön
Das echo funktioniert genau so wie gedacht. Innerhalb von IP-Symcon gibt echo die Ausgabe immer an den Aufrufenden weiter. Wenn du beispielsweise einfach auf Ausführen klickst, dann bist du das und die Nachricht kommt per Pop-Up. Aber bei einem Aufruf via RegisterVariable kommt der Aufruf von innerhalb. Daher wird die Ausgabe im Nachrichtenlog gespeichert. Stell dir mal vor, du wärst weg und in der Zwischenzeit werden jede Menge Nachrichten über RegisterVariable ausgewertet. Dann möchtest du nicht nach Hause kommen und 100 Pop-Ups wegklicken, sondern das ganze bestimmt viel lieber geordnet im Log lesen.
Ich habe in diesem Thema Forum noch etwas gefunden, um den Zähler auszulesen. Obis Elster AS1440 Programm zum Auslesen
Er hat ein Script das die Auslesezeit viel schneller macht. Einloggen
Kann man sowas in IPS umsetzen oder auf dem Raspi laufen lassen und sich die Daten abgreifen?
(„Ja kann man“ Antwort hilft mir leider nicht, da ich so etwas nicht kann.
Daher wäre eine weiterführende Hilfe sehr willkommen.
Das Script 1440.c ist ein C-Programm, das zuerst kompiliert werden muss.
Am Raspi einloggen und „gcc“ eingeben.
Wenn folgendes kommt ist das schonmal gut:
gcc: fatal error: no input files
compilation terminated.
Bei folgendem sieht es dann eher schlecht aus:
-bash: gcc: command not found
Ich gehe mal davon aus, das das erstere kam, dann das 1440.c kompilieren.
Dies habe ich direkt ins /var/lib/symcon Verzeichniss gelegt, damit es auch mit gesichert wird.
Das geht mit
gcc as1440.c -o as1440
Danach sollte nach Aufruf von as1440 im selben Verzeichnis mit
./as1440
folgendes rauspurzeln:
usage: ./as1440 -F device -O obisval1[:obisval2…] [-p password ]
[-v]
[-n] [-e]
-v verbose
-t left trim zeros
-n don’t add units
-e endless loop (end with ctrl-c)
Wenn einn Lesekopf am Raspi ist, folgendes probieren:
./as1440 -F /dev/ttyUSB0 -O 1.7.0:1.8.0 -v
Ich hab Deinen Thread zur Verbindung eines A1500 von Elster mit einem Hichi Lesekopf gelesen und habe ein passendes Skript in mein Tasmota eingelesen.
Hast Du denn am A1500 noch irgendwas machen müssen, um den dazu zu bewegen, Daten rauszurücken?
Ich hab bei dem Netzbetreiber nachgefragt, der sagte, es gäbe keinen Pin, weil es ein Wandlerzähler sei. Gibt es denn im Menü noch irgend einen Punkt, an dem man die optische Schnittstelle aktivieren kann?
Bei mir kommen keine Daten
Gruß Rainer