Ankündigung

Einklappen
Keine Ankündigung bisher.

Zählerabfrage als Wiregate Plugin

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • makki
    antwortet
    Ehrlich, Jungs, mir fehlt gerade die Zeit mich da (ohne jeglichen persönlichen Antrieb, habe 2xS0 mit 500 imp/kwh) reinzuhängen aber:
    Ich fände es sinnvoller den vzlogger übergreifend mit SML ans fliegen zu bekommen, als für jeden SML-Zählerwert jetzt nochmal ne RE neu zu erfinden und dann für 5 Zähler 50 Plugins zu machen..
    Nur nochmal meine 5ct..

    Makki

    Einen Kommentar schreiben:


  • amaridian
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Die Ausgabe ist Zeilenweise so dass ich jede Zeile einzeln durchsuchen kann.
    Und wo ich die Frage gerade nochmal lese:

    mit hinzufügen des g Schalters, also
    Code:
    $input  =~ m/[^(]+\(([^*]+)\*([^)]+)/g;
    kann man sich sogar das Zeilenweise durchlaufen sparen. In PHP stehen dann in den Rückreferenzen Arrays mit den gefundenen Werten drin.

    Lässt man das z.B. auf folgenden String los

    Code:
    1-1:1.8.0(0002208.118*kWh)
    1-2:1.8.2(0001118.1*V)
    1-3:1.5.3(00324*A)
    würde $1 als Array folgende Werte enthalten: [0002208.118, 0001118.1, 00324] und $2 [kWh, V, A]

    Ob das in Perl genau so funktioniert würde ich aber lieber vorher ausprobieren :-)

    Grüße
    Christian

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von amaridian Beitrag anzeigen
    Reguläre Ausdrücke haben mich seinerzeit auch einmal zum Wahnsinn und wieder zurück gebracht, aber wenn man es einmal verstanden hat, kann man damit wirklich freakiges Zeug anstellen...
    Hoi Christian

    Das kann ich bestätigen. Regex gibt es auch in anderen Sprachen (PHP z.B.)
    $input =~ m/[^(]+\(([^*]+)\*([^)]+)/;
    print $1;
    print $2;
    Die Variablen $1, $2, $3 ... werden sozusagen den Klammerinhalten zugeordnet, je mehr Klammerpaare, desto mehr Variablen.

    Einen Kommentar schreiben:


  • amaridian
    antwortet
    Nach dem klassischen RTFM-Hinweis (perlop - perldoc.perl.org) versuch ich das mal auseinanderzudröseln:

    in $input wird zunächst mal der zu durchsuchende Text reingeschrieben (der im Plugin ja sonstwoher kommt). Soweit klar glaube ich.

    In der zweiten Zeile wird dieser String nun mit dem angegebenen regulären Ausdruck (das hinterm Gleichzeichen) durchsucht. Hierbei werden so genannte Rückreferenzen genutzt, um den gewünschten Kram aus dem String rauszuholen. Ich versuche das mal auseinanderzuziehen:

    [^(]+
    steht für eine beliebig lange Zeichenkette solange kein "(" darin vorkommt

    \(
    nimmt die "(" weg, die oben als Trennzeichen genutzt wurde

    ([^*]+)
    Die Klammern außen sorgen für die Rückreferenzierung. Innen drin wird ein beliebig lange Zeichenkette gesucht mit allen Zeichen außer dem "*". Die Rückreferenz ist bis zum Ende des aktuellen Blocks oder bis zur nächsten Pattern-Matching in der Variable $1 zu finden.

    \*
    wieder Trennzeichen, genau wie oben

    ([^)]+)
    Und hier, wieder mit Rückreferenz-Klammern, alles was hinter dem "*" steht, solange keine ")" auftaucht. Die Rückreferenz wird, da $1 schon belegt ist, unter gleichen Bedingungen wie oben in $2 gespeichert.

    Fertig :-)

    Ich hoffe ich konnte ein wenig Licht ins Dunkel bringen... Reguläre Ausdrücke haben mich seinerzeit auch einmal zum Wahnsinn und wieder zurück gebracht, aber wenn man es einmal verstanden hat, kann man damit wirklich freakiges Zeug anstellen...

    Grüße
    Christian

    Einen Kommentar schreiben:


  • Robert_Mini
    antwortet
    Zitat von amaridian Beitrag anzeigen
    Code:
    $input= '1-1:1.8.0(0002208.118*kWh)';
    $input  =~ m/[^(]+\(([^*]+)\*([^)]+)/;
    in $1 sollte dann der Zählerstand, in $2 die Einheit stehen.
    Was ist das denn??? Ich hab ja inzwischen einiges in perl gesehen und gemacht, aber kann mal wer kurz erläutern was in dieser Zeile passiert.
    Ich kann hier Befehl(e) und Suchstrings etc. nicht annäherungsweise erkennen. Und wo kommen hier $1 und $2 her?

    Danke und lg Robert

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Danke!

    Dann werd ich mich die Tage die mal ran setzen.
    Dann wird es reichen nur noch die OBIS Zahlen einzugeben, die GAs einzutragen und dann werden die Werte auch auf den Bus gesendet und die RRDs erstellt.


    P.S.:
    Mit dem man von regex werd ich dann mal versuchen den Ansatz oben auch zu verstehen .

    Einen Kommentar schreiben:


  • amaridian
    antwortet
    Code:
    $input= '1-1:1.8.0(0002208.118*kWh)';
    $input  =~ m/[^(]+\(([^*]+)\*([^)]+)/;
    in $1 sollte dann der Zählerstand, in $2 die Einheit stehen.

    Ausm Kopf und ohne Garantie :-)

    Grüße
    Christian

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Ich brauch mal Hilfe zu Perl regex:

    Wie bekomme ich aus Zeilen wie:

    1-1:1.8.0(0002208.118*kWh)

    oder

    1.8.0(000344.408*kWh)

    die Werte und die Einheit für einen Vergleich ausgelesen.
    regex hab ich ja ein wenig verstanden, scheitere aber immer wieder an der Vielzahl der Möglichkeiten.
    Ich will mein Script nochmal ein wenig erleichtern und dabei nach 1.8.0( suchen, den Wert und die Einheit ausgegeben haben.
    Einheit könnten je nach dem auch V,A,W,kW sein.

    Die Ausgabe ist Zeilenweise so dass ich jede Zeile einzeln durchsuchen kann.
    Wie finde ich einen String der zwischen zwei bestimmten Zeichen steht?

    Also 1.8.0 bzw. x.x.x suche ich mit "x.x.x(". Hier zeigt mir die Klammer direkt hinter dem Suchwort dass ich richtig bin.
    Aber wie finde ich nun 000344.408 zwischen dem "(" und "*"
    Weiter will ich dann wissen was zwischen "*" und ")" steht.

    Nochmal EDIT: substr wollte ich nicht wieder anwenden. Das Auszählen soll entfallen.

    Binn vollkommen verregext

    Danke schonmal
    Gruß Mirko

    Einen Kommentar schreiben:


  • makki
    antwortet
    Zitat von lio123 Beitrag anzeigen
    welche Freizeit???
    Na eben, auf das massiv gesicherte Wartungs-VPN (isolierte VM mit OTP-Token oder 2048bit RSAkey-Anmeldung) kommt auch niemand sonst, der in seiner Freizeit auch nur den Ansatz von Lust hätte, mit den Lichtern in fremden Kinderzimmern zu gamen
    Ehrlich, dafür haben wir genug andere Probleme, Hobbys, Testsysteme und Umgebungen..
    Aktuell haben wir 184 wiregates mit aktivem Wartungs-VPN online, das dürfte daran liegen, das die meisten Wissen das es einfach nur den Support vereinfacht und da eh keiner ungefragt hinlangt, (es aber sehr oft sehr praktisch ist, wenn man mal eben kurz was querprüfen will!) wenn mir langweilig ist, nehm ich eins der eigenen 20

    Wenns bei Dir losgehen kann sag' kurz bescheid. werde Dir dann noch die Belegung der Köpfe nennen.
    Das wär doch praktisch..
    Wenn die restliche sch*** vom Tisch ist am Sa morgen oder So aber das kommt eben drauf an..
    Solche Sachen (müssen) halt async laufen, wenn grad der Exchange o.ä. mal 15min zum rebooten braucht, dann sucht man sich nen Lückenfüller..

    Unterstützend könnte ich noch anbieten eine Webcam auf den Zählerstand zu richten-dazu müsstest auf dem WG aber alles dafür zurechtlegen.
    Ich denke das sollte ich hinbekommen glaube zwar nicht das es zwingend notwendig ist (entweder es geht oder nicht, ob die Werte stimmen ist ja dann schon der zweite Schritt), aber wenn dann irgendeine mit einem grünen Haken hier
    Und Port 8080 aufs WG weiterleiten, ich mach die dann auch brav die Cam wieder zu..

    Makki

    Einen Kommentar schreiben:


  • lio123
    antwortet
    Hallo Makki,

    welche Freizeit???

    Wollte das VPN nicht die ganze Zeit offen haben.
    Können wir Deine Freizeit etwas einschränken?
    So wie ich Dich kenne wird das Freizeitfenster sich zwischen
    23:00 und 4:00 liegen- das ist natürlich kein Problem.

    Wenns bei Dir losgehen kann sag' kurz bescheid. werde Dir dann noch die Belegung der Köpfe nennen.

    Unterstützend könnte ich noch anbieten eine Webcam auf den Zählerstand zu richten-dazu müsstest auf dem WG aber alles dafür zurechtlegen.

    ... und lass im Kinderzimmer das Licht aus...

    Grüße,
    Lio

    Einen Kommentar schreiben:


  • makki
    antwortet
    Also erstmal danke!
    Momentan haben sich aber ein paar dringendere Dinge "vorgedrängelt", wenn ihr keine Sorge habt, das ich mich in der Freizeit damit beschäftige euch abzuhören oder Anhand des Stromverbrauchs euren Lebenswandel zu analysieren (was kein Witz ist! und IMHO genau der Grund, warum die Zählerdaten nur auf "meine" lokale Kiste gehören, nicht in irgendeine "Cloud". ich hab nur weder Zeit dazu, noch nutzen davon -> will nur die Zähler ans rennen bekommen.. also keine Angst)
    -> Dann bitte das VPN offen lassen bis ich dazu komme..
    Das Endergebniss soll am KNX oder in einem Plugin landen, das ist ja klar..

    @NetFritz und JuMi: Nun, den vzlogger finde ich schlank, spezialisiert auf seine Aufgabe aber übersichtlich, mit minimalen Modifikationen könnte man den IMHO gut benutzen.
    Ich mache ungerne SW neu, die es schon "in gut" gibt; eibd für EIB/KNX, owfs für 1Wire, ola für DMX (usw.) und ich glaube vzlogger für Zähler.. Sieht mir wenigstens so aus.. Lieber dann aktiv daran mitarbeiten, als neu erfinden..
    Aber das Thema muss ich noch lernen, insofern gehe ich da Ergebnisoffen ran..

    Die "Middleware" erinnert mich aber ehrlichgesagt eher an J<mehr sag ich nicht>: kompliziert, speziell, zuwas braucht man nun genau Doctrine und resourcenintensiven MySQL (ich mag den, aber den nehme ich, wenn ich 100 Zähler von 100.000 Kunden erfasse.. aber bitte nicht für 5 oder 10..) um einen Zählerstand (also eine Zahl mit 4 Byte!) regelmässig aufzumalen?
    Die Aufzeichnung macht uns perfekt das RRDtool und die Anzeige vorhandene Tools, CV o.ä...

    Und ganz im Sinne von vz.org bin ich auch der Meinung: die Daten gehören erstmal nur auf die Kiste des Besitzers, sonst nirgendwo hin. Datenvermeidung ist immernoch der beste Datenschutz.. Allgemeiner Trend zur Cloud hin oder her..

    Auch wenn ich durchaus über zentrale Dienste nachdenke für Facility-Management (wo dann die VZ-Middleware wieder interessant wird, weil aufm Octacore-Xeon mit 32GB RAM im RZ spielt das nun dann keine Rolle..) -> das wenn dann aber optional.
    Erstmal lokal! Ich freue mich schon auf eure Zähler, vermutlich aber erst am WE

    Makki

    Einen Kommentar schreiben:


  • MuckiLegden
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    01010801FF -> Obis 1.8.1
    02020805FF -> Obis 2.8.5
    00010700FF -> Obis 1.7
    Moin,

    Ich habe mir diese Diskussion hier jetzt nicht komplett durchgelesen und habe keine Ahnung, ob es in diesem Zusammenhang wichtig ist, aber die o.g. OBIS Kennzahlen dürften so nicht richtig sein.

    Ich würde eher sagen:
    Wirkarbeit Bezug:1.8.0
    Wirkarbeit Lieferung: 2.8.0
    aktuelle Leistung:1.7.0

    Vg,
    Mucki

    Einen Kommentar schreiben:


  • greentux
    antwortet
    ACE3000 läuft bei greentux jetzt wohl. Gibt aber nur sehr spärliche Daten raus (nur Zählerstand)
    Nana... Die Zählernummer kommt auch
    Bin mal froh, das das überhaupt geht. Kann ich mal schauen, wie groß der Unterschied Sommer/Winter ist.
    Aber der Hammer ist das Teil nicht.

    Einen Kommentar schreiben:


  • lio123
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    @NetFritz:

    Dein Script war doch ne sehr gute Basis für meines und damit haben wir denke ich schon 98% der Zähler abgedeckt.

    Meiner gehört dann zu den restlichen 2%.
    Warum es bei mir nicht klappte weis ich nicht, vermute aber mal, dass die Stelle falsch war. Um die Stelle heruaszufinden, fehlen mir die Hintergrundinfo und Programmierkenntnisse PERL.
    Wenn das für die Allgemeinheit nützlich werden soll, braucht's aber den Hinweis. Ansonsten bist Du nur beim beantworten derselben Fragen.

    Grüße,
    Lio

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    @NetFritz: Ich glaub wir reden wieder aneinander vorbei

    Zitat von NetFritz Beitrag anzeigen
    Hallo
    Die beiden Zähler sind in Reihe geschaltet.
    Ich habe mir den den Easymeter Q3C gekauft weil es mir nicht gelungen ist den ACE3000 auszulesen.
    Will ja nicht jeder nen zweiten Zähler kaufen, der ACE3000 läuft bei greentux jetzt wohl. Gibt aber nur sehr spärliche Daten raus (nur Zählerstand). Das kann natürlich von Messtellenbetreiber zu Messtellenbetreiber unterschiedlich sein, aber gerade deswegen sollte das der kleinste gemeinsame Nenner sein.

    Dein Script war doch ne sehr gute Basis für meines und damit haben wir denke ich schon 98% der Zähler abgedeckt.

    01010801FF -> Obis 1.8.1
    02020805FF -> Obis 2.8.5
    00010700FF -> Obis 1.7

    Wenn das mal kein gemeinsamer Nenner ist ;-)


    Gruß

    Einen Kommentar schreiben:

Lädt...
X