Ankündigung
Einklappen
Keine Ankündigung bisher.
Zählerabfrage als Wiregate Plugin
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Zitat von lio123 Beitrag anzeigenund läuft als Plugin, wenn auch über cron gesteuert.
Makki
Einen Kommentar schreiben:
-
also ich hab' jenseits von Windows und android "nur" das WG.
und läuft als Plugin, wenn auch über cron gesteuert.
Ha-ich kenn mich da nun (etwas) aus.
Grüße,
Lio
Einen Kommentar schreiben:
-
Sollten wir wenigstens den Titel mal ändern?
Oder läuft das wirklich (glaube nicht) als WireGate-Plugin - oder ist es eher ein daran angelehntes, eigenständiges Script auf dem FummelPi?
Edit: Worauf man den Leser dann hinweisen sollte..
Makki
Einen Kommentar schreiben:
-
HA!
Bei den hohen Stromwerten bekomm' ich immer ne Gänsehaut-liegt aber diesmal nicht am Plugin ;-)
DANKESCHÖN!
Ich lass das nun mal an dem Haushaltszähler laufen. Wenn das bis morgen funktioniert, werde ich an den 2-Tarif-Zähler gehen. Da sehe ich aber kein Problem drinnen.
Grüße,
Lio
Einen Kommentar schreiben:
-
bedeutet ich ändere die Zeile:
$sml =~ m/$obiscnt->{obis}(.*?)0177/;
#in die Zeile
$sml =~ m/$obissearch(.*?)0177/;
???
Einen Kommentar schreiben:
-
Richtig ... ich bin auch vorhin erst über das "unitialized" so richtig gestolpert.
Einen Kommentar schreiben:
-
Fehler gefunden, war vorher quasi Zufall das das geklappt hat
Code:# alt if ($debug==1) { print $obissearch." Obis\n";} [B] $sml =~ m/$obiscnt->{obis}(.*?)0177/;[/B] my $sml_val = $1; # wir modeln das zwar vorher um, nutzen dann aber doch den Wert aus dem array, durch das F ist das gutgegangen # neu $hc =""; foreach my $c (split(/\./,$obiscnt->{obis})) { $hc .= sprintf("%02X", $c); } my $obissearch = $hc; # alles schick 0F0700FF #Fuer die Suche dann aber doch wieder $sml =~ m/$obiscnt->{obis}(.*?)0177/; # -> Error # mit dem hier saubere Werte [B] $sml =~ m/$obissearch(.*?)0177/;[/B]
Einen Kommentar schreiben:
-
AW: Zählerabfrage als Wiregate Plugin
Auf die schnelle vom Handy. Da hab ich wohl die Schleife gestern kaputt gemacht.
foreach wird zu schnell beendet. Kann ich aber erst am PC wieder fixen.
Baustelle 2.0
Einen Kommentar schreiben:
-
ich versteh noch nicht warum, aber ich hab zumindest den Fehler eingegrenzt
das alte Coding
Code:# my $obissearch = $obiscnt->{obis}; # $obissearch =~ s/\./0/g; # FF fuer Suche an Hex-Wert anhaegne # FF fuer Suche an Hex-Wert anhaegne $obissearch .="FF";
Code:[B]10800FF Obis - keine führende Null[/B] SML-VAL: FF63018201621E52FF560005658BAC FF63018201621E52FF560005658BAC contains hex 0005658BAC hex 9054.0972<<<<---- Wert GA:14/7/51 Wert:9054.0972 DPT:14 [B]F0700FF Obis - keine führende Null[/B] SML-VAL: FF0101621B52FF55000058D0 FF0101621B52FF55000058D0 contains hex 000058D0 hex
das neue Coding
Code:# Umwandeln OBIS in HEx my $hc =""; foreach my $c (split(/\./,$obiscnt->{obis})) { $hc .= sprintf("%2X", $c); } my $obissearch = $hc; liefert [B]010800FF Obis[/B] SML-VAL: FF63018201621E52FF5600056586AE FF63018201621E52FF5600056586AE contains hex 00056586AE hex 9053.9694<<<<---- Wert GA:14/7/51 Wert:9053.9694 DPT:14 [B]0F0700FF Obis[/B]
Warum das nicht matched versteh ich nun wieder nicht --> Mirko?
Einen Kommentar schreiben:
-
passt schon, sollte den Fehler nicht beheben, sondern nur mal eingrenzen.
Kurz für Dich zur Erklärung
Code:[B]# 1. Obis-Wert [/B] Step 1 - Daten holen Step 2 - Reg Exp 1 Datensatz zusammensetzen Zaehler Haushalt: Step 3 - Datensatz auswerten [B]# das liefert Dein Zähler, da taucht weiter hinten auch das auf was wir Step 2 suchen - schonmal gut[/B] SML: 76070009091DA03F6200620072630101760101070009028DE0150B06454D4801027152C87D01016394990076070009091DA040620062007263070177010B06454D4801027152C87D0172620165028D4D327777078181C78203FF0101010104454D480177070100000009FF010101010B06454D4801027152C87D0177070100[SIZE=6][B]010800FF[/B][/SIZE]63018201621E52FF5600050DC7FD0177070100010801FF0101621E52FF5600050DC7FD0177070100[SIZE=6]010802FF[/SIZE]0101621E52FF5600000000000177070100[SIZE=6][B]0F0700FF[/B][/SIZE]0101621B52FF5500007C570177078181C78205FF0101010183025590B4D1321AB69C538768156DACA7993A95576468864D78FDC121CC754507953C4B255CA3D3E5AF112F92940ADD46C401010163993E0076070009091DA0436200620072630201710163C04400001 010800FF Obis # jetzt wird der erste Wert gesucht und ausgegeben RegExp: FF63018201621E52FF5600050DC7FD FF63018201621E52FF5600050DC7FD contains hex 00050DC7FD hex 8478.9245<<<<---- Wert [URL="http://redaktion.knx-user-forum.de/lexikon/GA/"]GA[/URL]:14/7/51 Wert:8478.9245 [URL="http://redaktion.knx-user-forum.de/lexikon/DPT/"]DPT[/URL]:14 0F0700FF Obis [B]# hier sollte jetzt SML: wie oben kommen, stattdessen Fehler weil der SML-String weg ist - also Fehler im Perl [/B] Use of uninitialized value $sml_val in concatenation (.) or string at /home/user/smlMarch.pl line 107. RegExp: Use of uninitialized value $1 in concatenation (.) or string at /home/user/smlMarch.pl line 109. contains hex Use of uninitialized value $sml_val in substitution (s///) at /home/user/smlMarch.pl line 112. Use of uninitialized value $sml_val in substr at /home/user/smlMarch.pl line 113. substr outside of string at /home/user/smlMarch.pl line 113. Use of uninitialized value $sml_val in concatenation (.) or string at /home/user/smlMarch.pl line 114. hex Use of uninitialized value $value in hex at /home/user/smlMarch.pl line 117. 0<<<<---- Wert [URL="http://redaktion.knx-user-forum.de/lexikon/GA/"]GA[/URL]:14/7/50 Wert:0 [URL="http://redaktion.knx-user-forum.de/lexikon/DPT/"]DPT[/URL]:9
Einen Kommentar schreiben:
-
nix sorry-wenn, dann muss ich mich entschuldigen ;-)
hier der extrakt:
Code:Step 1 - Daten holen Step 2 - Reg Exp 1 Datensatz zusammensetzen Zaehler Haushalt: Step 3 - Datensatz auswerten SML: 76070009091DA03F6200620072630101760101070009028DE0150B06454D4801027152C87D01016394990076070009091DA040620062007263070177010B06454D4801027152C87D0172620165028D4D327777078181C78203FF0101010104454D480177070100000009FF010101010B06454D4801027152C87D0177070100010800FF63018201621E52FF5600050DC7FD0177070100010801FF0101621E52FF5600050DC7FD0177070100010802FF0101621E52FF56000000000001770701000F0700FF0101621B52FF5500007C570177078181C78205FF0101010183025590B4D1321AB69C538768156DACA7993A95576468864D78FDC121CC754507953C4B255CA3D3E5AF112F92940ADD46C401010163993E0076070009091DA0436200620072630201710163C04400001 010800FF Obis RegExp: FF63018201621E52FF5600050DC7FD FF63018201621E52FF5600050DC7FD contains hex 00050DC7FD hex 8478.9245<<<<---- Wert GA:14/7/51 Wert:8478.9245 DPT:14 0F0700FF Obis Use of uninitialized value $sml_val in concatenation (.) or string at /home/user/smlMarch.pl line 107. RegExp: Use of uninitialized value $1 in concatenation (.) or string at /home/user/smlMarch.pl line 109. contains hex Use of uninitialized value $sml_val in substitution (s///) at /home/user/smlMarch.pl line 112. Use of uninitialized value $sml_val in substr at /home/user/smlMarch.pl line 113. substr outside of string at /home/user/smlMarch.pl line 113. Use of uninitialized value $sml_val in concatenation (.) or string at /home/user/smlMarch.pl line 114. hex Use of uninitialized value $value in hex at /home/user/smlMarch.pl line 117. 0<<<<---- Wert GA:14/7/50 Wert:0 DPT:9
Einen Kommentar schreiben:
-
ok, sorry
füg mal so ein und lass dann laufen
Code:if ($debug==1) {print "Step 3 - Datensatz auswerten \n";} foreach my $obiscnt (@obis) { # Umwandeln OBIS in HEx my $hc =""; foreach my $c (split(/\./,$obiscnt->{obis})) { $hc .= sprintf("%02X", $c); } my $obissearch = $hc; # FF fuer Suche an Hex-Wert anhaegne $obissearch .="FF"; if ($debug==1) { print $obissearch." Obis\n";} [B]print "SML: $sml \n"; # da sollte recht viel zurückkommen [/B] $sml =~ m/$obiscnt->{obis}(.*?)0177/; my $sml_val = $1; [B] print "RegExp: $sml_val \n"; # hier muessten ein paar Byte auftauchen[/B] if ($debug==1) { print $1." contains hex \n";} #extract value $sml_val =~ s/^.*52FF//; $sml_val = substr($sml_val,2); if ($debug == 1) { print $sml_val." hex \n";} $value = $sml_val;
Einen Kommentar schreiben:
Einen Kommentar schreiben: