kostenlos Wetterdaten aus dem Internet

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

cimi25
Beiträge: 10
Registriert: 26.04.2017, 23:07

kostenlos Wetterdaten aus dem Internet

Beitrag von cimi25 » 10.07.2018, 11:38

Hallo Leute,
das Programm ist zwar noch nicht vollends ausgereift aber zumindest ein Anfang ist gemacht.
- Zuerst hole ich mir die Wetterdaten von OWM, die es in 2 Ausführungen gibt. Einmal die aktuellen und einmal die Voraussicht für 3 Tage. Dafür braucht man nur einen Account bei openweathermap.org und eine kostenlose API abonieren.
Unter: http://api.openweathermap.org/data/2.5//weather?q= Stadtname ,de&appid= APInummer &lang=de"; bekommt man die aktuellen Wetterdaten.
Unter http://api.openweathermap.org/data/2.5/forecast?id= Stadtid &appid= APInummer &lang=de für die 5 Tages Auskunft
Die StadtID findet man einfach ein in der Browseradresszeile. Auf openweather.org seine Stadt suchen und von dort die StadtID kopieren. https://openweathermap.org/city/StadtID

Dann sind alle Vorbereitungen getroffen und es kann losgehen :)

Aktuelles Wetterabrufen

Dafür habe ich mich aus dem Skript aus dem Forum bedient und leicht angepasst. Hier muss im String" weatherURL" den APIID und den Stadtname(zb. Berlin) eingetragen werden.

Code: Alles auswählen

boolean CUxD=true;

    string txt; 
    var stdout; 
    real wert;
    real a_wert;
    integer wert_pos;
    string stderr;
    string pos2;
    string weatherUrl="http://api.openweathermap.org/data/2.5//weather?q=Stadtname,de&appid=APIID&lang=de";

    if(CUxD){
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '" # weatherUrl # "'");
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    stdout = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
}else{
    system.Exec("wget -q -O - '" # weatherUrl # "'", &stdout, &stderr);}

    ! Aussentemperatur
           string pos1="{\"temp\":"; 
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           wert = stdout.Substr(wert_pos,10).StrValueByIndex(pos2,0);
           real a_wert = wert.ToInteger() - 273;
            dom.GetObject("AKT_OWM_AussenTemperatur").Variable(a_wert); 
            !WriteLine ("aktuelle Aussentemperatur: " # a_wert # "°C"); 

        


    ! Windgeschwingigkeit
           string pos1="\"wind\":{\"speed\":";
           string pos2=",";
           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("AKT_OWM_Wind").State(txt);
           dom.GetObject("AKT_OWM_Wind_Speed").Variable(a_wert.ToString(1));
           !WriteLine("Windgeschwindigkeit: " + txt + " mit " + a_wert.ToString(1) +" km/h");
    
           
           
     ! Beschreibung
           string pos1="description\":\"";
           string pos2="\"";
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           string a_wert;
           a_wert = stdout.Substr(wert_pos,30).StrValueByIndex(pos2,0);
           a_wert = a_wert.ToUTF8();
           dom.GetObject("AKT_OWM_Beschreibung").Variable(a_wert); 
           WriteLine ("Beschreibung: " # a_wert);   
           
           
     ! Wetter
           string pos1="main\":\"";
           string pos2="\"";
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           string a_wert;
           a_wert = stdout.Substr(wert_pos,30).StrValueByIndex(pos2,0);
           dom.GetObject("AKT_OWM_Weather").Variable(a_wert); 
           WriteLine ("Weather: " # a_wert);   
           
                     

    ! Niederschlag über 3h
           real a_wert;
           string pos1="rain\":{\"3h\":";
           string pos2="}";
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           a_wert = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
           dom.GetObject("AKT_OWM_Regen3h").Variable(a_wert.ToInteger());
           !WriteLine ("Regen in 3h: " # a_wert # " mm");
    }
    

Im System muss jetzt eine ganze Reihe Variablen eingetragen werden: AKT_OWM_Regen3h, AKT_OWM_Weather, AKT_OWM_Beschreibung, AKT_OWM_Wind, AKT_OWM_Wind_Speed, AKT_OWM_AussenTemperatur.

Die Daten kann man für eine ganze Reihe Programme auswerten. Wie ob man heute draußen die Wäsche aufhängen soll, bin mal gespannt auf eure Anwendnen


Das Tageswetter

Hier Werte ich aus dem Wust von Daten das Tageswetter aus. Dies geschieht im 3 Stundentackt
Hier muss im String" weatherURL" den APIID und den StadtID(zb. 2953321 für Frankfurt) eingetragen werden.

Code: Alles auswählen

boolean CUxD=true;

    string txt; 
    var stdout; 
    real wert;
    real a_wert;
    integer wert_pos;
    string stderr;
    string pos2=",";    ! oder   string pos2="}";
    string weatherUrl="http://api.openweathermap.org/data/2.5/forecast?id=&appid=&lang=de";

    if(CUxD){
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '" # weatherUrl # "'");
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    stdout = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
}else{
    system.Exec("wget -q -O - '" # weatherUrl # "'", &stdout, &stderr);}

 
 
   !das heutige Datum herausfinden
   
   string pos_date1="dt_txt\":\"";
   string pos3= " ";
   integer wert_pos_date1 = stdout.Find(pos_date1) +  pos_date1.Length();
   string date1 = stdout.Substr(wert_pos_date1,20).StrValueByIndex(pos3,0);
   string date2= date1;
   
 
   
  while (date1==date2){
   
     ! Aussentemperatur
           string pos1="{\"temp\":"; 
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           wert = stdout.Substr(wert_pos,10).StrValueByIndex(pos2,0);
           real atemp = wert.ToInteger() - 273;
           !WriteLine ("aktuelle Aussentemperatur: " # a_wert # "°C"); 

              
     ! Beschreibung
           string pos1="description\":\"";
           string pos2="\"";
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           string beschr = stdout.Substr(wert_pos,30).StrValueByIndex(pos2,0);
           beschr = beschr.ToUTF8(); 
           
     ! Wetter
           string pos1="main\":\"";
           string pos2="\"";
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           string bwetter = stdout.Substr(wert_pos,30).StrValueByIndex(pos2,0); 
           
       !Niederschlag über 3h
           integer niederschlag3h;
           string pos1="rain\":{\"3h\":";
           string pos2="}";
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           niederschlag3h = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
           
      ! Windgeschwingigkeit
      
           string pos1="\"wind\":{\"speed\":";
           string pos2=",";
           integer wert_pos = stdout.Find(pos1) +  pos1.Length();
           integer speed = stdout.Substr(wert_pos,20).StrValueByIndex(pos2,0);
             if (speed <     0.00) {txt = "Fehler";                      } else {
             if (speed <     1.85) {txt = "Windstille";                  } else { 
             if (speed <     9.00) {txt = "geringer Wind";               } else {
             if (speed <    19.00) {txt = "leichter Wind";               } else {
             if (speed <    28.00) {txt = "schwacher Wind";              } else {
             if (speed <    37.00) {txt = "mäßiger Wind";                } else {
             if (speed <    46.00) {txt = "frischer Wind";               } else {
             if (speed <    56.00) {txt = "starker Wind";                } else {
             if (speed <    65.00) {txt = "starker bis stürmischer Wind";} else {
             if (speed <    74.00) {txt = "stürmischer Wind";            } else {
             if (speed <    83.00) {txt = "Sturm";                       } else {
             if (speed <   102.00) {txt = "schwerer Sturm";              } else {
             if (speed <   117.00) {txt = "orkanartiger Sturm";          } else {
             if (speed >=  117.00) {txt = "Orkan";                      }}}}}}}}}}}}}}
           
   
   !Die Uhrzeit herausfinden und den String kuerzen 
   string pos_time="dt_txt\":\"";
   string pos3 = "country\": \"DE\""; 
   pos2= "\"";
   pos3= " ";
   
   integer wert_pos_time = stdout.Find(pos_time) +  pos_time.Length()+11;
   integer wert_pos_date2 = stdout.Find(pos_time) +  pos_time.Length();
   string time = stdout.Substr(wert_pos_time,20).StrValueByIndex(pos2,0);
   string date2 = stdout.Substr(wert_pos_date2,20).StrValueByIndex(pos3,0);
   integer pos4 =wert_pos_date2+21;
   stdout = stdout.Substr(pos4,16000);
   
     
   !WriteLine("UZ: "#time);
   !WriteLine("Temperatur: " #atemp);
   !WriteLine("Wettertyp: " #bwetter);
   !WriteLine("Windgesch: "#speed);
   !WriteLine("" #beschr);
   !WriteLine("" #bwetter); 
   
   !WriteLine(niederschlag3h);
   
if (time=="00:00:00"){
   dom.GetObject("OWM_AussenTemperatur_00").Variable(atemp);
   dom.GetObject("OWM_Beschreibung_00").Variable(beschr);
   dom.GetObject("OWM_Weather_00").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_00").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_00").State(txt);
   dom.GetObject("OWM_Wind_Speed_00").Variable(speed);
}
  
      if (time=="03:00:00"){
   dom.GetObject("OWM_AussenTemperatur_03").Variable(atemp);
   dom.GetObject("OWM_Beschreibung_03").Variable(beschr);
   dom.GetObject("OWM_Weather_03").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_03").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_03").State(txt);
   dom.GetObject("OWM_Wind_Speed_03").Variable(speed);
}

     if (time=="06:00:00"){
   dom.GetObject("OWM_AussenTemperatur_06").Variable(atemp);
   !dom.GetObject("OWM_Beschreibung_06").Variable(beschr);
   dom.GetObject("OWM_Weather_06").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_06").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_06").State(txt);
   dom.GetObject("OWM_Wind_Speed_06").Variable(speed);
   }

if (time=="09:00:00"){
   dom.GetObject("OWM_AussenTemperatur_09").Variable(atemp);
   dom.GetObject("OWM_Beschreibung_09").Variable(beschr);
   dom.GetObject("OWM_Weather_09").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_09").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_09").State(txt);
   dom.GetObject("OWM_Wind_Speed_09").Variable(speed);
   }

     if (time=="12:00:00"){
   dom.GetObject("OWM_AussenTemperatur_12").Variable(atemp);
   dom.GetObject("OWM_Beschreibung_12").Variable(beschr);
   dom.GetObject("OWM_Weather_12").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_12").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_12").State(txt);
   dom.GetObject("OWM_Wind_Speed_12").Variable(speed);
   }

    if (time=="15:00:00"){
   dom.GetObject("OWM_AussenTemperatur_15").Variable(atemp);
   dom.GetObject("OWM_Beschreibung_15").Variable(beschr);
   dom.GetObject("OWM_Weather_15").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_15").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_15").State(txt);
   dom.GetObject("OWM_Wind_Speed_15").Variable(speed);
   }

if (time=="18:00:00"){
   dom.GetObject("OWM_AussenTemperatur_18").Variable(atemp);
   dom.GetObject("OWM_Beschreibung_18").Variable(beschr);
   dom.GetObject("OWM_Weather_18").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_18").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_18").State(txt);
   dom.GetObject("OWM_Wind_Speed_18").Variable(speed);
   }

if (time=="21:00:00"){
   dom.GetObject("OWM_AussenTemperatur_21").Variable(atemp);
   dom.GetObject("OWM_Beschreibung_21").Variable(beschr);
   dom.GetObject("OWM_Weather_21").Variable(bwetter);
   dom.GetObject("OWM_Regen3h_21").Variable(niederschlag3h);
   dom.GetObject("OWM_Wind_21").State(txt);
   dom.GetObject("OWM_Wind_Speed_21").Variable(speed);
   }


 }

Hierbei braucht man eine Unmenge an Variablen und ob alle interessant sind, weiß ich noch nicht. Ein bisschen Feedback wäre ganz nett :). Ich nutze das ganze um zu wissen ob ich abends noch Blumen gießen muss, oder es es heute Regnet stürmt und alle Fenster geschlossen werden müssen etc.
OWM_Beschreibung_00, OWM_AussenTemperatur_00, OWM_Weather_00, OWM_Regen3h_00, OWM_Wind_00,
OWM_Beschreibung_03, OWM_AussenTemperatur_03, OWM_Weather_03, OWM_Regen3h_03, OWM_Wind_03,
OWM_Beschreibung_06, OWM_AussenTemperatur_06, OWM_Weather_06, OWM_Regen3h_06, OWM_Wind_06,
OWM_Beschreibung_09, OWM_AussenTemperatur_09, OWM_Weather_09, OWM_Regen3h_09, OWM_Wind_09,
OWM_Beschreibung_12, OWM_AussenTemperatur_12, OWM_Weather_12, OWM_Regen3h_12, OWM_Wind_12,
OWM_Beschreibung_15, OWM_AussenTemperatur_15, OWM_Weather_15, OWM_Regen3h_15, OWM_Wind_15,
OWM_Beschreibung_18, OWM_AussenTemperatur_18, OWM_Weather_18, OWM_Regen3h_18, OWM_Wind_18,
OWM_Beschreibung_21, OWM_AussenTemperatur_21, OWM_Weather_21, OWM_Regen3h_21, OWM_Wind_21,
Regenmenge, Giessen.

Tageswetter per Telegram
Wenn ein Telegram-bot eingerichtet wurde ((Hier für weitere Infos)), kann man sich sehr einfach per Telegramm morgens das Tageswetter schicken lassen

Code: Alles auswählen

  integer Rmax;
  integer max;
  integer regenmenge;
  string regen="Es besteht eine hohe Regenwahrscheinlichkeit um:  ";
  string klar;
  string sturm="Es soll heute stürmen um: ";
 string niederschlag;
 boolean giessen;
  
   integer T00=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_00").Value();
   integer T03=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_03").Value();
   integer T06=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_06").Value();
   integer T09=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_09").Value();
   integer T12=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_12").Value();
   integer T15=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_15").Value();
   integer T18=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_18").Value();
   integer T21=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_AussenTemperatur_21").Value();
  
  if (T00>T03){max=T00;}else{max=T03;}
  if (max>T06){max=max;}else{max=T06;}
  if (max>T09){max=max;}else{max=T09;}
  if (max>T12){max=max;}else{max=T12;}
  if (max>T15){max=max;}else{max=T15;}
  if (max>T18){max=max;}else{max=T18;}
  if (max>T21){max=max;}else{max=T21;}
  
  
  
   string W00=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_00").Value();
   string W03=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_03").Value();
   string W06=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_06").Value();
   string W09=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_09").Value();
   string W12=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_12").Value();
   string W15=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_15").Value();
   string W18=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_18").Value();
   string W21=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Weather_21").Value();
   
   
   
   if (W03=="Rain"){regen=regen+"03 Uhr, ";}
   if (W06=="Rain"){regen=regen+"06 Uhr, ";}
   if (W09=="Rain"){regen=regen+"09 Uhr, ";}
   if (W12=="Rain"){regen=regen+"12 Uhr, ";}
   if (W15=="Rain"){regen=regen+"15 Uhr, ";}
   if (W18=="Rain"){regen=regen+"18 Uhr, ";}
   if (W21=="Rain"){regen=regen+"21 Uhr, ";}
   if (W00=="Rain"){regen=regen+"24 Uhr, ";}
   if (regen =="Es besteht eine hohe Regenwahrscheinlichkeit um:  ") {regen ="";}
  
   if (W00=="clear" & W03=="clear" & W06=="clear" & W09=="clear" & W12=="clear" & W15=="clear" & W18=="clear" & W21=="clear"){klar="Es bleibt den ganzen Tag klar";} else {klar="Es wird heute bewölkt";}
   
  
  
  integer S00=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_00").Value();
   integer S03=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_03").Value();
   integer S06=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_06").Value();
   integer S09=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_09").Value();
   integer S12=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_12").Value();
   integer S15=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_15").Value();
   integer S18=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_18").Value();
   integer S21=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Wind_Speed_21").Value();
  
    
    if (S03 > 39){sturm=sturm+"03 Uhr, ";}
    if (S06 > 39){sturm=sturm+"06 Uhr, ";}
    if (S09 > 39){sturm=sturm+"09 Uhr, ";}
    if (S12 > 39){sturm=sturm+"12 Uhr, ";}
    if (S15 > 39){sturm=sturm+"15 Uhr, ";}
    if (S18 > 39){sturm=sturm+"18 Uhr, ";}
    if (S21 > 39){sturm=sturm+"21 Uhr, ";}
    if (S00 > 39){sturm=sturm+"24 Uhr, ";}
    
    if (sturm=="Es soll heute stürmen um: "){sturm="Es weht kaum wind";}
   max = max.ToString(1);

   integer R00=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_00").Value();
   integer R03=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_03").Value();
   integer R06=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_06").Value();
   integer R09=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_09").Value();
   integer R12=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_12").Value();
   integer R15=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_15").Value();
   integer R18=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_18").Value();
   integer R21=dom.GetObject(ID_SYSTEM_VARIABLES).Get("OWM_Regen3h_21").Value();

if (R00>R03){Rmax=R00;}else{Rmax=03;}
  if (Rmax>R06){Rmax=Rmax;}else{Rmax=R06;}
  if (Rmax>R09){Rmax=Rmax;}else{Rmax=R09;}
  if (Rmax>R12){Rmax=Rmax;}else{Rmax=R12;}
  if (Rmax>R15){Rmax=Rmax;}else{Rmax=R15;}
  if (Rmax>R18){Rmax=Rmax;}else{Rmax=R18;}
  if (Rmax>R21){Rmax=Rmax;}else{Rmax=R21;}
  regenmenge= R00+R03+R06+R09+R12+R15+R18+R21; 
  dom.GetObject("regenmenge").Variable(Regenmenge);
  if (regenmenge>20){giessen=false; dom.GetObject("Giessen").Variable(false);}else{giessen=true; dom.GetObject("Giessen").Variable(true);}
  regenmenge = regenmenge.ToString(1);  
  WriteLine(regenmenge);

  if (Rmax>0 ){niederschlag="Es gibt leichten Regen";} 
  if (Rmax>=2.5 ){niederschlag="Es gibt mittleren regen";}
  if (Rmax>=10){niederschlag="Es gibt ein starkes Gewitter";} 


  
string message = klar+ "\n" + "Temperatur bis " +max+" °C," +"\n"+sturm +"\n"+regen+"\n"+niederschlag; 
message= message.ToUTF8();
WriteLine(message);
!string chatid = ""; ! chat_id des Empfängers 
!string botAPI = ""; ! API des eingerichteten Bots
!dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/botAPI/sendMessage -d text='"#message#"' -d chat_id="#chatid);


mcbert
Beiträge: 69
Registriert: 03.07.2018, 18:51

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von mcbert » 10.07.2018, 23:34

du kannst die Stadt eigentlich immer angeben:

Sprich auch bei der Vorhersage

Code: Alles auswählen

http://api.openweathermap.org/data/2.5/forecast?q=Muenchen,de&appid.....

Alexxx2005
Beiträge: 250
Registriert: 17.12.2014, 18:56
Hat sich bedankt: 19 Mal
Danksagung erhalten: 3 Mal

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von Alexxx2005 » 06.08.2018, 22:23

Hallo Cimi,

wollte gerade dein Skript testen allerdings ändert sich
nichts bis auf die Windrichtung, auch die Tagesauswertungen
funktionieren nicht , kannst du das bestätigen ?

Grüße Alex

ist
Beiträge: 1
Registriert: 02.09.2018, 09:23

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von ist » 02.09.2018, 09:28

Hallo Cimi,

ich habe Dein Script übernommen und mir bei OWM ein Konto eingerichtet. Den Link für die API habe ich ausprobiert und ich bekomme die Seite mit den Eintragungen für meine Stadt.

Leider bekomme ich bei der Homematic nur drei "???" in der jeweiligen Variablen. CuxD habe ich installiert. Müsste ich hier noch eine gewisse Vorbereitung treffen?

Ich denke ich habe alles nach der Anleitung erstellt, jedoch bekomme ich nicht das richtige Ergebnis.

Gruß Ingo

Maddin75
Beiträge: 10
Registriert: 16.06.2016, 15:39

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von Maddin75 » 23.09.2018, 13:49

Funktioniert ganz gut aber wieso wir -273 Grad Ceksius angezeigt? hat das noch jemand?

Chemieka
Beiträge: 649
Registriert: 03.01.2017, 17:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 9 Mal

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von Chemieka » 03.10.2018, 18:28

Das hört sich doch nach der selben Quelle wie hier an:
viewtopic.php?f=18&t=35702
Ich brauche noch die Niederschlagsmenge der letzten 24h.
PI3+ mit RaspberryMatic; PI4 mit IOBroker; Samsung Tab A mit Mediola Visualisierung; Harmony Hub; Philips Hue; Drei IP Cams; Zwei Leseköpfe an den Stromzählern; Reedkontakt (Arduino) am Wasserzähler; Drucksensor (Arduino); CUL433 für Intertechno und Somfy RTS; Nuki Bridge

LibertyX
Beiträge: 767
Registriert: 10.11.2012, 19:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: RP
Hat sich bedankt: 1 Mal
Danksagung erhalten: 19 Mal

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von LibertyX » 02.12.2018, 15:29

Gibt nur 1 und 3 Stunden

https://openweathermap.org/current#data
RaspberryMatic (3.71.12.20231020) @RPI3 | 218 Kanäle in 53 Geräten und 72 CUxD-Kanäle in 8 CUxD-Geräten (2.11) | iobroker.pro - CCU-Historian (3.4.0)

Chemieka
Beiträge: 649
Registriert: 03.01.2017, 17:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 9 Mal

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von Chemieka » 02.12.2018, 21:12

Könnte man doch evtl. die Werte nehmen und in der CCU aufsummieren oder? Nur mal nachdenken wie man das machen könnte.
PI3+ mit RaspberryMatic; PI4 mit IOBroker; Samsung Tab A mit Mediola Visualisierung; Harmony Hub; Philips Hue; Drei IP Cams; Zwei Leseköpfe an den Stromzählern; Reedkontakt (Arduino) am Wasserzähler; Drucksensor (Arduino); CUL433 für Intertechno und Somfy RTS; Nuki Bridge

Mallet125
Beiträge: 3
Registriert: 07.07.2022, 17:07
System: CCU

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von Mallet125 » 07.07.2022, 17:19

hi,

vielen Dank für deinen Beitrag. Ich habe versucht dein Skript "Das Tageswetter" zu übernehmen. Leider habe ich etwas Probleme:

1. weiß ich nicht sicher, ob ich die Variablen vom richtigen Typ angelegt habe.
2. und das könnte die Folge von 1. sein - Ich bekomme das skript nicht zum laufen. In den Messages sehe ich folgende Meldungen:
local0.debug ReGaHss: Verbose: called Program ID = 8649 'OpenWeather Daten abrufen 2' [ExecuteProgram():iseDOMPrg.cpp:596]
local0.debug ReGaHss: Verbose: execute Program ID = 8649 'OpenWeather Daten abrufen 2'; Destination ID = 8651 [ExecuteProgram():iseDOMPrg.cpp:602]
local0.debug ReGaHss: Verbose: execute Program ID = 8649 'OpenWeather Daten abrufen 2'; Destination ID = 8651 [Execute():iseDOMPrg.cpp:626]
local0.debug ReGaHss: Verbose: start execute Destination within the trigger delay 0 [Execute():iseDOMPrg.cpp:630]
local0.info ReGaHss: Info: added script element id= 8651; time= 0 [Add():iseRTScheduler.cpp:341]
local0.debug ReGaHss: Verbose: ExecuteDestination succeeded from Program ID = 8649 'OpenWeather Daten abrufen 2' with valNew = '1' [Execute():iseDOMPrg.cpp:640]
local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2081]
local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 73 0x0049 [1] 0 0x0000 [2] 58 0x003a [3] 0 0x0000 [4] 59 0x003b [ExecError():iseESPexec.cpp:12882]
local0.err ReGaHss: ERROR: ScriptRuntimeError: boolean CUxD=true; string txt; var stdout; real wert; real a_wert; integer wert_pos; string stderr; string pos2=",";
local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 73 0x0049 [1] 0 0x0000 [2] 61 0x003d [3] 0 0x0000 [4] 0 0x0000 [ExecError():iseESPexec.cpp:12882]
local0.err ReGaHss: ERROR: ScriptRuntimeError: boolean CUxD=true; string txt; var stdout; real wert; real a_wert; integer wert_pos; string stderr; string pos2=",";
local0.debug ReGaHss: Verbose: ExecuteScript: id = 8651; ticks = 7 [Execute():iseRTScheduler.cpp:604]
local0.info ReGaHss: Info: wait for event ms= 4294967295 [ThreadFunction():iseRTScheduler.cpp:484]
local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208]
local0.info ReGaHss: Info: recvd 326 bytes by web server #1 [ThreadFunction():httpServer.cpp:799]
local0.info ReGaHss: Info: IseSession GetSessionId from URL: /tclrega.exe [GetSessionId():iseSession.cpp:185]
local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2081]
local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208]
local0.info ReGaHss: Info: recvd 1183 bytes by web server #1 [ThreadFunction():httpServer.cpp:799]
local0.info ReGaHss: Info: IseSession GetSessionId from URL: /esp/system.htm?sid=@Znz6Ugw76Y@&action=UpdateUI [GetSessionId():iseSession.cpp:185]
local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2081]
local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208]
local0.info ReGaHss: Info: recvd 815 bytes by web server #1 [ThreadFunction():httpServer.cpp:799]

CUXDeamon version: 2.9.3
CCU3: 3.65.6
Hat jemand eine Idee?

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: kostenlos Wetterdaten aus dem Internet

Beitrag von MichaelN » 07.07.2022, 17:43

Wieso nimmst du nicht ein aktuelles, funktionierendes Skript?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „Projektvorstellungen“