ein paar Fragen sind doch dabei,
habe ich die Wetterinformationen für Regen und Schnee übersehen, oder fehlen diese?
Code: Alles auswählen
{"message":"accurate","cod":"200","count":1,"list":[{"id":2950159,"name":"Berlin","coord":{"lon":13.41053,"lat":52.524368},"main":{"temp":282.35,"pressure":1026,"humidity":87,"temp_min":281.95,"temp_max":283.15},"dt":1414696508,"wind":{"speed":2.1,"deg":210},"sys":{"country":"DE"},"clouds":{"all":75},"weather":[{"id":701,"main":"Mist","description":"mist","icon":"50n"}]}]}
"name":" = Ort
{"temp": = aktuelle Temperatur in Kelvin,
"temp_min": = min. Tagestemperatur,
"temp_max": = max. Tagestemperatur,
"pressure": = Luftdruck in hPa (?),
"humidity": = Luftfeuchtigkeit in %,
"wind":{"speed": = Windgeschwindigkeit in m/s (?),
"deg": = Windrichtung;
"clouds":{"all":75} = Bewölkung in % pro Tag oder aktuell (?),
??? = Regen
??? = Schnee
Für den folgenden Script sind Systemvariablen anzulegen
W_AussenTemperatur
W_Aussen_max_Temperatur
W_Aussen_min_Temperatur
W_Luftdruck
W_RelFeuchte
W_Wind
W_Wind_Speed
W_Windrichtung
W_Bewoelkung
schön wäre noch Schnee und Regen, Regenmenge
noch unvollständiger HM script code mit CUxD Beta - Test
Code: Alles auswählen
! ######################################################################################################################
! Internet Wetter #
! Version 0r1 #
! ######################################################################################################################
! #
string txt;
string pos2=",";
string weatherUrl="http://api.openweathermap.org/data/2.5/find?q=Berlin";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - " # weatherUrl);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!-----------------------------------------------------------------------------
! Aussentemperatur --> {"temp" --> in [°C]
!-----------------------------------------------------------------------------
real wert;
string pos1="{\"temp\":";
integer wert_pos = stdout.Find(pos1) + pos1.Length();
wert = stdout.Substr(wert_pos,10).StrValueByIndex(pos2,0);
! Die Werte sind in Kelvin, deswegen muss 273.15 abgezogen werden um auf Grad - Celsius zu kommen.
real a_wert = wert.ToFloat() - 273.15;
! Manchmal gibt es Fehler beim Abfragen, dann entsteht eine Temperatur von - 273Grad.
if (a_wert>-273.15) {
dom.GetObject("W_AussenTemperatur").Variable(a_wert);
WriteLine ("aktuelle Aussentemperatur: " # a_wert # "°C");
!-----------------------------------------------------------------------------
! minimal Aussentemperatur --> "temp_min": Umrechnung in Himmelsrichtung
!-----------------------------------------------------------------------------
! wird noch ergänzt
!
!-----------------------------------------------------------------------------
! maximal Aussentemperatur --> "temp_max": Umrechnung in Himmelsrichtung
!-----------------------------------------------------------------------------
! wird noch ergänzt
!
!-----------------------------------------------------------------------------
! Luftdruck --> "pressure": --> in [hPa]
!-----------------------------------------------------------------------------
string pos1="\"pressure\":";
integer wert_pos = stdout.Find(pos1) + pos1.Length();
integer a_wert;
a_wert = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
dom.GetObject("W_Luftdruck").Variable(a_wert.ToInteger());
WriteLine ("Luftdruck " # a_wert # " hPa");
!-----------------------------------------------------------------------------
! Relative Luftfeuchtigkeit --> "humidity": --> in [%]
!-----------------------------------------------------------------------------
string pos1="\"humidity\":";
integer wert_pos = stdout.Find(pos1) + pos1.Length();
a_wert = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
dom.GetObject("W_RelFeuchte").Variable(a_wert.ToInteger());
WriteLine ("Relative Luftfeuchtigkeit " # a_wert # " %");
!-----------------------------------------------------------------------------
! Windgeschwingigkeit --> {"speed": in [m/s]
!-----------------------------------------------------------------------------
string pos1="\"wind\":{\"speed\":";
integer wert_pos = stdout.Find(pos1) + pos1.Length();
wert = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
a_wert = wert.ToFloat() / 3.6; ! Umrechnung in km pro Stunde
if (a_wert < 0.00) {txt = "Fehler"; } else {
if (a_wert < 1.85) {txt = "Windstille"; } else {
if (a_wert < 9.00) {txt = "geringer Wind"; } else {
if (a_wert < 19.00) {txt = "leichter Wind"; } else {
if (a_wert < 28.00) {txt = "schwacher Wind"; } else {
if (a_wert < 37.00) {txt = "mäßiger Wind"; } else {
if (a_wert < 46.00) {txt = "frischer Wind"; } else {
if (a_wert < 56.00) {txt = "starker Wind"; } else {
if (a_wert < 65.00) {txt = "starker bis stürmischer Wind";} else {
if (a_wert < 74.00) {txt = "stürmischer Wind"; } else {
if (a_wert < 83.00) {txt = "Sturm"; } else {
if (a_wert < 102.00) {txt = "schwerer Sturm"; } else {
if (a_wert < 117.00) {txt = "orkanartiger Sturm"; } else {
if (a_wert >= 117.00) {txt = "Orkan"; }}}}}}}}}}}}}}
dom.GetObject("W_Wind").State(txt);
dom.GetObject("W_Wind_Speed").Variable(a_wert.ToString(1,6));
! WriteLine ("Windgeschwindigkeit: " + a_wert # " m/s"); ! funktioniert nicht
!-----------------------------------------------------------------------------
! Windrichtung --> "deg": Umrechnung in Himmelsrichtung
!-----------------------------------------------------------------------------
! wird noch ergänzt
!
!
!-----------------------------------------------------------------------------
! Bewölkung --> clouds":{"all": Bewölkung in [%]
!-----------------------------------------------------------------------------
! wird noch ergänzt
!
}
Wenn der HM script fertig ist, werde ich den hier noch einstellen.
Viel Spaß, wer Lust hat zum Testen.
Cu Herbert