Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zur Codeoptimierung WG-Plugin

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

  • Sandman60
    antwortet
    Über den eingebauten WebServer des StecaGrid Connect-Interfaces. Solarlog-Box geht leider für die 2000er Serie nicht (zu spät an die Einbindung gedacht ). Analyse des Codes hab ich schon abgeschlossen. Eigentlich problemloses Erfassen des Online-Status, der kompletten History, momentan und Gesamtverbrauch). Deine Scripts für SunnyWeb habe ich mir schon parallel gezogen und hangle mich dann bzgl. Bus und RRDs daran entlang.

    Einen Kommentar schreiben:


  • NetFritz
    antwortet
    Hallo
    Wie fragst Du den Steca-WR ab.
    Über einen eingebauten WebServer oder SolarLog oder was?
    Gruß NetFritz

    Einen Kommentar schreiben:


  • makki
    antwortet
    Siehste, das wollte ich wissen
    Vermutlich kommen die Daten (geparsed durch eines der JS) in wesentlich sauberer Form als JSON/XML; (das war die Frage die ich noch nicht gestellt hatte: HTML-parsen ist was für Sisiphus und hält genau bis zum nächsten Upgrade der SW im WR/Gateway..)

    Gibts zu dem Teil irgendwo ne Online-Demo? dann wäre das mit Firebug&schnell gefunden..

    Makki

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Einen Versuch noch bitte:
    Code:
    chomp $content;
    #Ertrag
    my $ertrag = $content =~ />.*?.(\d+\.\d+).(W)/ ;
    $ertrag = $1;
    #Leistung
    my $leistung = $content =~ />.*?.(\d+\.\d+).(MWh)/ ;
    $leistung = $1;

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    @ Waldemar: Danke für den Tipp. So hatte ich das auch verstanden und probiert, allerdings bleibt dann das Ergebnis leer, obwohl der nächste x.y im Code ist. Dennoch bringt mich das zur Erkenntnis, das ich dann doch nicht so falsch mit meinen Kenntnissen gelegen habe und stattdessen im HTML-Code irgendwas den Match unmöglich macht...
    Das bringt mich dann zähneknirschend zu Makki's Einwurf den Inhalt von Content (via CURL exportiert) mal anzuhängen... Im Beispiel hier taucht zuerst als Anhaltspunkt "lang_sysperf3" aus gefolgt von "18.0 W" für den Ertrag (und später 4.0 MW für den Gesamtertrag). Kann es sein, dass das ganze aufgrund von Zeilenumbrüchen innerhalb des Dumps ins Trudeln kommt?
    @JuMi: Oh oh, jetzt hab ich aber doch ein schlechtes Gewissen, klappt aber leider auch nicht, der Inhalt von $ertrag ist wieder leer....

    So ne Ka... (net in der Windel und auch net auf der Strasse)

    Ich würde sagen an der Stelle dann erst mal Abbruch.... Ich danke Euch dennoch für die wertvollen Einwürfe und Tipps, da ich zumindest bzgl. der RegEx-Syntax nun denke auf dem richtigen gedanklichen Weg zu sein (=~m// bringt hier nix) und aus den Beispielen die logische Vorgehensweise verstanden habe. Ich schraube nun mal weiter und werde natürlich am Ende das komplette Plugin für die Steca-WR posten...
    Angehängte Dateien

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Das sollte es eigentlich machen:

    Sucht die Zahl die zwischen ">" und der jeweiligen Einheit "W/MWh" steht

    EDIT: Hatte da noch nen Fehler drin wo ich aber jetzt auch nicht weiterkomme. Man müsste vorher noch nen chomp $content machen weil der Zeilenumbruch sonst irgendwie stört.
    Code:
    chomp $content;
    #Ertrag
    my $ertrag = $content =~ />.*?.(\d+\.\d+).(W)/ ;
    #Leistung
    my $ertrag = $content =~ />.*?.(\d+\.\d+).(MWh)/ ;

    Gruß

    P.S.: Hat aber auch lange gedauert Dafür wieder ein Teil Regex verstanden.

    Einen Kommentar schreiben:


  • makki
    antwortet
    Naja, ohne zu wissen was in $content denn nun genau steht (CODE verwenden!), wirds wohl keine fertige AW geben, sonst kann ich nur sagen das mir da manches mal die Windel, nicht nur die Strasse nass wurde

    Finally müsste man auch sehen, was sich davon ändern kann und berücksichtigen (Einheiten -/k/M z.B.)

    Makki

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    äquivalent zu Deinem Coding müsste folgendes sein:
    Code:
    my $ertrag = $content =~ /.{89}(\d+\.\d+)/;
    wobei ich hier annehme, dass wirklich x.y im string stehen. In kurz: 89 beliebige Zeichen, dann eine Zahl, gefolgt von einem Punkt, dann wieder ne Zahl. Wobei die Zahlen und der Punkt das gewünschte Ergebnis sind.

    Ich hab es aber nicht ausprobiert.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    Hallo zusammen,
    danke für das Feedback.
    @Mirko:
    Das mit RegEx und dem reinfuchsen ist mir klar, hatte vor Urzeiten als SysAdmin auch einiges gemacht, aber wie Du schon geschrieben hast, wenn man es nicht täglich macht wird es schwierig und man sieht den Wald vor lauter Bäumen nicht. Daher auch meine Frage ob in der Community irgendwo ein Crack sitzt, der die Logik sozusagen aus dem Ärmel schüttet ohne recherchieren zu müssen. Mir gehen auch Posts auf den Keks wo man feststellt, dass mit einer einfachen Googlesuche das Problem geklärt werden kann, daher habe ich auch schon viel Zeit in die Recherche und in die Vorselektion des Problems gesteckt, aber irgendwann sollte auch jeder Wissen, wann er die Fahne hebt...
    Ich schaue mir den Link an, vielleicht kommt mir dann wieder die zündende Idee, ansonsten bleibt es dann erst mal bei den Codezeilen und gut.

    @NetFritz:
    Danke für den Tipp mit dem regEx-Tester (REGex TESTER v1.5.3 - test/validate regular expressions, online tester), kannte ich noch nicht! Ich glaube das spart mir Test-Zeit...

    Einen Kommentar schreiben:


  • NetFritz
    antwortet
    Hallo
    Es gibt auch online REDex Tester.
    Einfach mal bei Goggle suchen.
    Gruß NetFritz

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Hallo Oliver, ich komme frühestens heute Abend dazu mir das genauer anzusehen. Noch dazu bin ich auch nur Perl-Anfänger. Aber ich würde versuchen eine RegEx zu kreieren die nach diesen Strings sucht:

    Leistung:
    > x.x W

    Ertrag
    > x.x MWh

    Der erste Trenner ist > und der zweite jeweils MWh/W. Da gibt es ein ganz gutes Beispiel von amaridian im Forum bzgl. der Zählerauslesung. Er hat das auch sehr schön im Anschluss erklärt. Hier:https://knx-user-forum.de/wiregate/1...plugin-18.html
    Danke noch mal dafür! Und passender gehts ja kaum ... nur das wir Ertrag und Bezug austauschen

    Was greentux meint ist wohl eher dass Perl mit der RegEx-Geschichte recht mächtig ist und sich nahezu alles damit finden/erschlagen lässt. Ergo macht es durchaus Sinn sich damit intensiver zu beschäftigen. Aber ganz ehrlich ohne google und diverse RegEx-tutorials tut man sich da sehr schwer das im Kopf zu behalten. Hat man es aber einmal in den Grundzügen verstanden wird das ganze nachvollziehbar.

    Gruß

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    ??? und Dein Post hilft mir wie die Erkenntnis, dass bei Regen die Strasse nass wird...

    Einen Kommentar schreiben:


  • greentux
    antwortet
    Naja Perl ohne RE ist wie KNX ohne Bus

    Einen Kommentar schreiben:


  • makki
    antwortet
    Naja, RE kann man verstehen, muss man aber nicht

    Meine persönliche Einstellung dazu ist: lieber fünf Zeilen, die ich in 12Monaten noch auf Anhieb verstehe, als eine RE, die man sich nie wieder traut anzufassen..

    Geschmackssache, wirklich Performance-relevant ist das IMHO nicht bei solchen Anwendungen..

    Makki

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    THX! Ich hab Dir mal ein paar Sachen via Email zukommen lassen. P.S.: Bin auch noch an dem ebus-Thema dran. Allerdings bin ich erst noch am Decodieren der Hautec bzw. TEM-Commandos...

    Einen Kommentar schreiben:

Lädt...
X