Aussentemperatur von OpenWeatherMap.Org laden

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

hoffmakl
Beiträge: 51
Registriert: 29.11.2010, 17:45

Aussentemperatur von OpenWeatherMap.Org mit CUxD Beta - Test

Beitrag von hoffmakl » 30.10.2014, 21:35

Hallo,
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"}]}]}
Gibt es eine Beschreibung für diese Wetterparameter?

"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
!       
 }
Ich bin völlig unerfahren mit HM script,wäre deshalb für Hinweise dankbar, wie man es besser bzw. richtig macht.
Wenn der HM script fertig ist, werde ich den hier noch einstellen.


Viel Spaß, wer Lust hat zum Testen. :roll:

Cu Herbert
Zuletzt geändert von hoffmakl am 31.10.2014, 14:28, insgesamt 2-mal geändert.

Benutzeravatar
papi
Beiträge: 371
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von papi » 30.10.2014, 22:06

Regen und Schnee stehen vermutlich da, wo jetzt "Mist" steht - aber nur, wenn es regnet oder schneit.

Sieh mal in den Link von Beitrag 8, Zeile 4.

nibblersrevenge
Beiträge: 27
Registriert: 08.10.2014, 09:38

Re: Aussentemperatur von OpenWeatherMap.Org mit CUxD Beta -

Beitrag von nibblersrevenge » 31.10.2014, 08:58

Cool dass Du das Script erweitert hast!
Da die Frage nach CUxD bei mir schon mehrfach auftauchte:
Was bringt der CUxD fürVorteile gegenüber dem direkten Aufruf in der CCU2?
Irgendwie komme ich da nicht dahinter :roll:
hoffmakl hat geschrieben: Gibt es eine Beschreibung für diese Wetterparameter?
Ja, hier: http://openweathermap.org/weather-data#current

Eine Unsauberkeit ist meiner Meinung nach in Deinem Script:
Du deklarierst die Variablen im selben Gültigkeitsbereich immer wieder neu.
z.B. string pos1.
Ich habe das mal korrigiert.
Außerdem habe ich am Kopf des Scripts eine Variable CityName und eine CUxD eingebaut.
Mit CUxD kann man entscheiden wie die URL aufgerufen wird.

in der Zeile:
dom.GetObject("W_Wind_Speed").Variable(a_wert.ToString(1,6));
ist ein Fehler. Das muß heißen:
dom.GetObject("W_Wind_Speed").Variable(a_wert.ToString(1));

Hier das vollständige und korrigierte Script:

Code: Alles auswählen

! ######################################################################################################################
!   Internet Wetter                                                                                                    #
!   Version 0r1                                                                                                        #
! ######################################################################################################################
!                                                                                                                      #
string CityName='Berlin';
boolean CUxD=true;


string txt;
real wert;
real a_wert;
integer wert_pos;
string pos1;
var stdout;    
string stderr;
string pos1;
string pos2=",";
string weatherUrl="http://api.openweathermap.org/data/2.5/find?q=" + CityName;

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   --> {"temp" -->  in [°C]
!-----------------------------------------------------------------------------
pos1="{\"temp\":";
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.
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]
    !-----------------------------------------------------------------------------
    pos1="\"pressure\":";
    wert_pos = stdout.Find(pos1) +  pos1.Length();
    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 [%]
    !-----------------------------------------------------------------------------
     pos1="\"humidity\":";
    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]
    !-----------------------------------------------------------------------------
    pos1="\"wind\":{\"speed\":";
    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));
    
    WriteLine("Windgeschwindigkeit: " + a_wert.ToString(1) +" m/s");

    !-----------------------------------------------------------------------------
      ! Windrichtung  -->  "deg":     Umrechnung in Himmelsrichtung
    !-----------------------------------------------------------------------------
    ! wird noch ergänzt
    !
    !
    !-----------------------------------------------------------------------------
    ! Bewölkung   -->  clouds":{"all":     Bewölkung in [%]
    !-----------------------------------------------------------------------------
    ! wird noch ergänzt
    !

 }

Benutzeravatar
funkleuchtturm
Beiträge: 2368
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von funkleuchtturm » 31.10.2014, 09:17

Himweis:
Das Skript hier kann man mit geringen Anpassungen auch für openweathermap verwenden.
http://homematic-forum.de/forum/viewtop ... nd#p139456
Ist eigentlich alles drin, was man für die Hausautomation so braucht!
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

hoffmakl
Beiträge: 51
Registriert: 29.11.2010, 17:45

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von hoffmakl » 31.10.2014, 14:51

@ funkleuchtturm, es gibt viele Wege nach Rom.

@ papi, wäre cool, wenn sich "Mist" in Regen und Schnee auflöst. Muss ich mir anschauen wenn es regnet.

@ nibblersrevenge,
ich habe keine Erfahrungen mit HM script, aber hier im Forum habe ich gelesen, dass es Probleme mit der Stabilität der CCU gibt, wenn system.Exec verwendet wird. CUxD sei stabiler(?).

Zum HM script:
Mein Ziel war, die Variablen "dynamisch" zu verwenden und somit die Anzahl der Variablen klein zu halten. Wird ja immer wieder für den gleichen Zweck verwendet. In der HM-script Dokumentation verweist gar eQ-3 explizit auf eine dynamische Typbindung hin. Zitat: "Variablen sind nicht durch die Deklaration an einen festen Datentyp gebunden sondern können während der Ausführung ihren Datentyp wechseln."

Ich gehe deshalb nicht davon aus, dass es wegen der dyn. Verwendung der Variablen Probleme gibt. Alles andere von dir habe ich in den HM script eingebaut und den noch fehlenden HM script Teil ergänzt.

Code: Alles auswählen

! ######################################################################################################################
!   Internet Wetter                                                                                                    #
!   Version 0r2   -----> 31.10.2014                                                                                    #
!   Ideen von                                                                                                          #
!   URL:  http://homematic-forum.de/forum/viewtopic.php?f=31&t=20599&start=10                                          #
!   Dank an  nibblersrevenge                                                                                           #
!                                                                                                                      #
! ######################################################################################################################
!                                                                                                                      #
string CityName="Berlin";  
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/find?q=" + CityName;

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   --> {"temp" -->  in [°C]
! -----------------------------------------------------------------------------       
       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");  
! -----------------------------------------------------------------------------
! minimale Aussentemperatur   --> "temp_min": -->  in [°C]
! -----------------------------------------------------------------------------
       string pos1="\"temp_min\":";  
       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_Aussen_min_Temperatur").Variable(a_wert);  
        WriteLine ("minimale Aussentemperatur: " # a_wert # "°C");  
      } 
! -----------------------------------------------------------------------------
! maximale Aussentemperatur   --> "temp_max":285.95}, -->  in [°C]
! -----------------------------------------------------------------------------     
       string pos1="\"temp_max\":";  
       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_Aussen_max_Temperatur").Variable(a_wert);  
           WriteLine ("maximale Aussentemperatur: " # a_wert # "°C");  
       }         
! -----------------------------------------------------------------------------
! Luftdruck  -->  "pressure":1025, --> in [hPa]
! -----------------------------------------------------------------------------     
       integer a_wert;
       string pos1="\"pressure\":"; 
       integer wert_pos = stdout.Find(pos1) +  pos1.Length();
       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":87,  --> in [%]
! -----------------------------------------------------------------------------     
       real a_wert;
       string pos1="\"humidity\":"; 
       string pos2=",";
       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\":";
       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("W_Wind").State(txt); 
       dom.GetObject("W_Wind_Speed").Variable(a_wert.ToString(1)); 
       WriteLine("Windgeschwindigkeit: " + txt + " mit " + a_wert.ToString(1) +" km/s");
! -----------------------------------------------------------------------------
! Windrichtung  -->  ,"deg":160},     Umrechnung in Himmelsrichtung
! -----------------------------------------------------------------------------   
     real wert;
     string pos1="\"deg\":";
     string pos2="}";
     integer wert_pos = stdout.Find(pos1) +  pos1.Length();
     wert = stdout.Substr(wert_pos,10).StrValueByIndex(pos2,0); 
     real a_wert = wert.ToFloat();
         if (a_wert <    0.0) {txt = "Fehler" ;}else { 
         if (a_wert <   22.5) {txt = "N"      ;} else { 
         if (a_wert <   67.5) {txt = "NO"     ;} else { 
         if (a_wert <  112.5) {txt = "O"      ;} else { 
         if (a_wert <  157.5) {txt = "SO"     ;} else { 
         if (a_wert <  202.5) {txt = "S"      ;} else { 
         if (a_wert <  247.5) {txt = "SW"     ;} else { 
         if (a_wert <  292.5) {txt = "W"      ;} else { 
         if (a_wert <  337.5) {txt = "NW"     ;} else { 
         if (a_wert <= 360.0) {txt = "N"      ;} else { 
         if (a_wert >  360.0) {txt = "Fehler" ;} }}}}}}}}}}   
      dom.GetObject("W_Windrichtung").State(txt); 
      WriteLine("Windrichtung: " + txt);      
! ----------------------------------------------------------------------------- 
! Bewölkung   -->  "clouds":{"all":75},     Bewölkung in [%]
! -----------------------------------------------------------------------------  
       string pos1="clouds\":{\"all\":";
       string pos2="}";
       integer wert_pos = stdout.Find(pos1) +  pos1.Length();
       integer a_wert;
       a_wert = stdout.Substr(wert_pos,10).StrValueByIndex(pos2,0);
       dom.GetObject("W_Bewoelkung").Variable(a_wert.ToInteger());  
       WriteLine ("Bewölkung: " # a_wert # " %");         
}
Im WebUI werden die Systemvariablen gefüllt und die Programmausgabe sieht wie folgt aus:

aktuelle Aussentemperatur: 14.090000°C
minimale Aussentemperatur: 14.000000°C *)
maximale Aussentemperatur: 14.200000°C *)
Luftdruck: 1024 hPa
Relative Luftfeuchtigkeit: 76 %
Windgeschwindigkeit: Windstille mit 0.6 km/s
Windrichtung: S
Bewölkung: 36 % **)

Die URL: http://openweathermap.org/weather-data#current und die Beschreibung kenne ich.


*) aber was gibt min. / max. Aussentemperatur an? (Meßfehler?)
**) pro Tag, aktuelle ?

cu Herbert

nibblersrevenge
Beiträge: 27
Registriert: 08.10.2014, 09:38

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von nibblersrevenge » 31.10.2014, 15:34

Alle Daten die unter der URL findest beziehn sich auf "Jetzt".
Temp min und max beziehen sich auf ungenauigkeiten in der Region ... so verstehe ich das.
temp_min
Minimum temperature at the moment. This is deviation from current temp that is possible for large cities and megalopolises geographically expanded (use these parameter optionally)

temp_max
Maximum temperature at the moment. This is deviation from current temp that is possible for large cities and megalopolises geographically expanded (use these parameter optionally)
Wenn Du Vorhersage suchst, dann:
http://api.openweathermap.org/data/2.5/ ... t?q=Berlin
bzw. hier:
http://openweathermap.org/api
Danke für die Erklärungen...

Grüße,
Chris

Stoni
Beiträge: 560
Registriert: 05.12.2013, 13:38
Danksagung erhalten: 1 Mal

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von Stoni » 10.11.2014, 11:56

Hallo,

Eignen sich die Variablen dann lediglich zur Einbindung in entsprechende Programme oder kann man sich die Systemvariable "Außentemperatur" in den iPhone-Apps anzeigen lassen und da steht dann die Temperatur als Wert??

hoffmakl
Beiträge: 51
Registriert: 29.11.2010, 17:45

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von hoffmakl » 10.11.2014, 20:08

Hi Stoni,
ich benutze den aio creator von mediola mit einem aio Gateway.
Damit kann man relativ einfach (meist per Mausklick) sich eigene Bedienoberflächen (auch mit eigener Grafik) zusammenstellen.
Systemvaraiblen können ebenfalls ausgelesen und dargestellt werden.

Das gibt es auch für's iPhone.

cu Herbert

Stoni
Beiträge: 560
Registriert: 05.12.2013, 13:38
Danksagung erhalten: 1 Mal

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von Stoni » 10.11.2014, 21:25

Hallo Herbert, danke für die Rückmeldung. Ich habe es mittlerweile mit einer Anleitung hier aus dem Forum umgesetzt, wo man die Wunderground Daten mit einem einfachen Programm holt und in Systemvariablen darstellt.

Gruß

firefighter166
Beiträge: 6
Registriert: 09.11.2014, 16:22

Re: Aussentemperatur von OpenWeatherMap.Org laden

Beitrag von firefighter166 » 10.11.2014, 21:53

Leider bekomme ich immer diesen Fehler:

Code: Alles auswählen

Nov 11 18:37:31 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64  [../Platform/DOM/iseESPexec.cpp (11622)]
Nov 11 18:37:31 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 102 0x66 [3] 0 0x00 [4] 0 0x00  [../Platform/DOM/iseESPexec.cpp (11622)]
Nov 11 18:37:33 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64  [../Platform/DOM/iseESPexec.cpp (11622)]
Nov 11 18:37:33 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 102 0x66 [3] 0 0x00 [4] 0 0x00  [../Platform/DOM/iseESPexec.cpp (11622)]
Nov 11 18:37:34 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64  [../Platform/DOM/iseESPexec.cpp (11622)]
Nov 11 18:37:34 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 102 0x66 [3] 0 0x00 [4] 0 0x00  [../Platform/DOM/iseESPexec.cpp (11622)]

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“