ich bin noch recht frisch in der ganzen Scripting Materie und Homematic (IP), möglicherweise fehlen mir die richtigen Suchbegriffe, eine passende Lösung hier im Forum zu finden; dazu noch mein allererster Post überhaupt (gibt's hier einen Vorstellungsbereich?) - möge Gnade walten
<tldr>
Code: Alles auswählen
var url = "http://wttr.in/Berlin?format=%t+%w+%h";
url.ToUTF8().UriEncode()
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string wetter_txt = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
WriteLine(wetter_txt);
Code: Alles auswählen
+20°C ↖13 km/h 46%
Auf der Commandline via ssh funktioniert es, via CUxD kommt es zu fehlerhaften Daten.
Was mache ich falsch?
</tldr>
<ausführlich>
Da es weatherundergrund.com ja leider nicht mehr mit freien API Keys gibt ohne eigene, registrierte Hardware, versuche ich mich grade an einer alternativen Quellen.
Mein Wunschkandidat ist https://de.wttr.in für die rudimentäre Steuerung (wie warm, wie stark ist der Wind) von Rollos und Sonnenschutz.
Stadtname mit z. B. /Berlin oder /San Francisco an die URL anhängen und schwupps gibts den Wetterbericht ohne API Key oder sonstigem für die gewünschte Stadt.
Auf der GitHub Projektseite https://github.com/chubin/wttr.in sieht man auch die Parameter via curl um die Ausgabe anzupassen.
Code: Alles auswählen
curl wttr.in/Berlin?format=%t+%w+%h
Code: Alles auswählen
+20°C ↖13 km/h 46%
Via ssh auf meinem RaspberryMatic kommts in der Shell sauber an.
Code: Alles auswählen
+20°C ↖13 km/h 46%
Die Sonderzeichen hätte ich ja mit den Trim Befehlen noch wegschneiden können, aber die Zahlenwerte selbst stimmen schon nicht mehr (23 statt 20 und 60 statt 46).
Ein
Code: Alles auswählen
wetter_txt.ToUTF8();
RaspberryMatic und CUxD sind beide auf dem aktuellsten Stand. Ich vermute, dass es irgendwo den Zeichensatz verhaut - aber leider weiß ich nicht an welcher Stelle.
Zur Vollständigkeit hier der Codeschnippsel:
Code: Alles auswählen
var url = "http://wttr.in/Berlin?format=%t+%w+%h";
url.ToUTF8().UriEncode()
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string wetter_txt = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
WriteLine(wetter_txt);
Code: Alles auswählen
-np -nc --restrict-file-names=nocontrol
</ausführlich>
Jemand eine Idee, wie ich die Werte korrekt in die Variable bekomme oder wie ich das weiter troubleshooten kann?
Danke und Gruß
Markus
Edit: selbst copy & paste von RM in den Forumspost verändert die Darstellung - daher per Screenshot eingefügt