Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - Perl - If Statement String Vergleich
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Schön. Dann kann ja der »gelöst« Haken dran (Grünes Menü »Themen-Optionen« > »Dieses Thema als gelöst kennzeichnen«)
Einen Kommentar schreiben:
-
Vielen Dank Dominic!Zitat von dombn Beitrag anzeigenDamit werden alle Whitespaces (also auch CR LF) vom Ende des Strings entfernt.
Nach löschen der Whitespaces (Zeilenumbrüche) funktioniert es jetzt wie es soll.
Sehr cool
Gruß Moritz
Einen Kommentar schreiben:
-
0D 0A == CR LF (also ein »Windows«-Zeilenumbruch)Zitat von kleinklausi Beitrag anzeigen[…]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.Code:7 66616c73650d0a
Nach einem chomp $online ist die Länge übrigens 6. Was kann da noch dranhängen?
Bau bitte mal in deinen Code ein:
Damit werden alle Whitespaces (also auch CR LF) vom Ende des Strings entfernt. Am besten direkt unterhalb der Zuweisung.Code:$online =~ s/\s+$//;
Dann sollte alles wieder passen.
Einen Kommentar schreiben:
-
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.Zitat von vlamers Beitrag anzeigenJa meinte natürlich min_days.js.
meiner sagt immer false
welchen hast du? 500PM+?
ich werde besser mal ein software update machen.
Einen Kommentar schreiben:
-
Danke, gute Idee!Zitat von dombn Beitrag anzeigenVermutlich 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";
Also
gibt aus:Code:print length($online)."\n"; print unpack("H*", $online) . "\n";
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.Code:7 66616c73650d0a
Nach einem chomp $online ist die Länge übrigens 6. Was kann da noch dranhängen?
Gruß Moritz
Einen Kommentar schreiben:
-
hatte ich auch mal versucht. Änderte leider nichts.Zitat von JuMi2006 Beitrag anzeigenUnd wenn Du "true" vorher nochmal in eine variable $test legst und dann $online per eq mit $test vergleichst ?
Einen Kommentar schreiben:
-
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:
-
Vermutlich hängt da noch irgendetwas (nicht sichtbares) an "true" im $online Skalar an.
Deswegen gib doch mal bitte aus:
Dann sollte leichter heraus zu bekommen sein, was da anders ist. Dein Vergleich ist ansonsten ja korrekt so.Code:print length($online)."\n"; echo unpack("H*", $online) . "\n";
Einen Kommentar schreiben:
-
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:
-
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:
-
Gute Idee finde ich.
Wen ich chomp $online; einfüge blicke ich das Ergebnis aber erst recht nicht mehr:
der verschluckt jetzt alle Zeilenumbrüche...Code:moi@vdr:~/src$ perl perl_test.pl moi@vdr:~/src$ true
Einen Kommentar schreiben:
-
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:
-
$online ist true.Zitat von JuMi2006 Beitrag anzeigen... aber was gibt denn $online nun aus ?
Ich blicks nicht...Code:moi@vdr:~/src$ perl perl_test.pl is not online: true
Einen Kommentar schreiben:
-
Bei mir kommt da verlässlich true oder bei Dunkelheit falseZitat von vlamers Beitrag anzeigenmein 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.
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 anzeigenWas 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)
Ich hatte gehofft, dass es ganz simpel geht. Ich werde wohl doch auf ein "umständlicheren" Weg zurückgreifen müssen.Zitat von vlamers Beitrag anzeigennebenbei 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.
Bisher hat das Plugin unter 1 Sekunde gebraucht - jedenfalls wenn der SL nicht Nachts den HTTP Server abgeschossen hat.
Einen Kommentar schreiben:


Einen Kommentar schreiben: