Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Perl - If Statement String Vergleich

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

  • kleinklausi
    antwortet
    argh, ich hatte dran gedacht und dann doch vergessen :-)

    Einen Kommentar schreiben:


  • dombn
    antwortet
    Schön. Dann kann ja der »gelöst« Haken dran (Grünes Menü »Themen-Optionen« > »Dieses Thema als gelöst kennzeichnen«)

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    Zitat von dombn Beitrag anzeigen
    Damit werden alle Whitespaces (also auch CR LF) vom Ende des Strings entfernt.
    Vielen Dank Dominic!
    Nach löschen der Whitespaces (Zeilenumbrüche) funktioniert es jetzt wie es soll.

    Sehr cool
    Gruß Moritz

    Einen Kommentar schreiben:


  • dombn
    antwortet
    Zitat von kleinklausi Beitrag anzeigen
    […]
    Code:
    7
    66616c73650d0a
    Eine Länge von 7 ist wirklich seltsam. Der Rückgabewert ist mittlerweile "false" weil der Wechselrichter nicht mehr online ist. Aber "false" hat ja nun mal nur 5 Buchstaben.
    Nach einem chomp $online ist die Länge übrigens 6. Was kann da noch dranhängen?
    0D 0A == CR LF (also ein »Windows«-Zeilenumbruch)

    Bau bitte mal in deinen Code ein:
    Code:
    $online =~ s/\s+$//;
    Damit werden alle Whitespaces (also auch CR LF) vom Ende des Strings entfernt. Am besten direkt unterhalb der Zuweisung.
    Dann sollte alles wieder passen.

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    Zitat von vlamers Beitrag anzeigen
    Ja meinte natürlich min_days.js.
    meiner sagt immer false welchen hast du? 500PM+?
    ich werde besser mal ein software update machen.
    Ich hab ein 200er mit Firmware 2.7.1 Build 45 - 26.04.2012. Es gibt auch eine wesentlich neuere Firmware. Da bin ich aber eher zurückhaltend mit dem Update - komme noch aus den guten alten Bios Zeiten, als man sowas nur aktualisiert hat, wenn es einen sehr guten Grund dafür gab.

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    Zitat von dombn Beitrag anzeigen
    Vermutlich hängt da noch irgendetwas (nicht sichtbares) an "true" im $online Skalar an.
    Deswegen gib doch mal bitte aus:
    Code:
    print length($online)."\n"; echo unpack("H*", $online) . "\n";
    Danke, gute Idee!
    Also
    Code:
    print length($online)."\n"; 
    print unpack("H*", $online) . "\n";
    gibt aus:
    Code:
    7
    66616c73650d0a
    Eine Länge von 7 ist wirklich seltsam. Der Rückgabewert ist mittlerweile "false" weil der Wechselrichter nicht mehr online ist. Aber "false" hat ja nun mal nur 5 Buchstaben.
    Nach einem chomp $online ist die Länge übrigens 6. Was kann da noch dranhängen?

    Gruß Moritz

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Und wenn Du "true" vorher nochmal in eine variable $test legst und dann $online per eq mit $test vergleichst ?
    hatte ich auch mal versucht. Änderte leider nichts.

    Einen Kommentar schreiben:


  • vlamers
    antwortet
    Ja meinte natürlich min_days.js.
    meiner sagt immer false welchen hast du? 500PM+?
    ich werde besser mal ein software update machen.
    Deshalb meine lösung den aktuellen ertrag mit 0 zu vergleichen.

    Gruß

    Gesendet von meinem Sony Tablet S mit Tapatalk 2

    Einen Kommentar schreiben:


  • dombn
    antwortet
    Vermutlich hängt da noch irgendetwas (nicht sichtbares) an "true" im $online Skalar an.

    Deswegen gib doch mal bitte aus:
    Code:
    print length($online)."\n"; echo unpack("H*", $online) . "\n";
    Dann sollte leichter heraus zu bekommen sein, was da anders ist. Dein Vergleich ist ansonsten ja korrekt so.

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Und wenn Du "true" vorher nochmal in eine variable $test legst und dann $online per eq mit $test vergleichst ? Ich hab grad nix zum testen hier.

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    ok, ich hab beim print am Ende noch \n Zeilenumbrüche eingefügt. Leider das gleiche Ergebnis:

    Code:
    moi@vdr:~/src$ perl perl_test.pl 
    is not online: true
    moi@vdr:~/src$

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    Gute Idee finde ich.

    Wen ich chomp $online; einfüge blicke ich das Ergebnis aber erst recht nicht mehr:

    Code:
    moi@vdr:~/src$ perl perl_test.pl 
    moi@vdr:~/src$ true
    der verschluckt jetzt alle Zeilenumbrüche...

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Hmm sieht ja alles richtig aus ... steckt im true vielleicht noch nen Zeilenumbruch (mit "chomp $online" entfernen) dass er deswegen daran vorbei läuft ... komisch

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    ... aber was gibt denn $online nun aus ?
    $online ist true.

    Code:
    moi@vdr:~/src$ perl perl_test.pl 
    is not online: true
    Ich blicks nicht...

    Einen Kommentar schreiben:


  • kleinklausi
    antwortet
    Zitat von vlamers Beitrag anzeigen
    mein solarlog sagt bei der Abfrage immer false. (auch im Terminal).
    Da sich der Wert in der base_vars.js nicht ändert.
    Da steht immer var isOnline=false.
    Bei mir kommt da verlässlich true oder bei Dunkelheit false

    Zitat von vlamers Beitrag anzeigen
    Was genau möchtest du vom Solarlog wissen? Vermute ob die WR online sind? Oder nur ob der SL online ist?
    Wenn die Module, wäre es leichter den Wert aus der min_days mit 0 zu vergleichen... (und nebenbei ein rrd zu füllen)
    An sich will ich wissen ob die Wechselrichter online sind, ja. min_days.js gibt es bei nicht. Du meinst min_days.js, oder? Ok, da könnte ich in der ersten Zeile nach der 0 schauen.

    Zitat von vlamers Beitrag anzeigen
    nebenbei sind die Abfragezeiten sehr lang ( >1,2 sek bei mir??) warum holst du die Daten nicht per cron ins tmp Verzeichniss, und diese dann im Plugin zerlegen. So mache ich das. Laufzeit des Plugins ca 0,1sek.
    Ich hatte gehofft, dass es ganz simpel geht. Ich werde wohl doch auf ein "umständlicheren" Weg zurückgreifen müssen.
    Bisher hat das Plugin unter 1 Sekunde gebraucht - jedenfalls wenn der SL nicht Nachts den HTTP Server abgeschossen hat.

    Einen Kommentar schreiben:

Lädt...
X