Ankündigung

Einklappen
Keine Ankündigung bisher.

Regelmäßiger automatischer Neustart / Wettervorhersage von wunderground.com

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [EibStudio] Regelmäßiger automatischer Neustart / Wettervorhersage von wunderground.com

    Hallo,

    sorry wenn das bereits irgendwo steht, aber ich habe es nicht finden können:

    Wie kann ich den eibPC so programmieren, dass er regelmäßig (z.B. einmal täglich) automatisch einen Neustart macht?
    Hintergrund der Frage: Ich nutze das Makro "Wetter", um die Wettervorhersage von wunderground.com für die Visu abzurufen. Das klappt auch prima, aber alle paar Tage werden nur noch alte Daten angezeigt. Ich habe noch nicht herausgefunden, wie man das endgültig und richtig beheben könnte, aber ein Neustart des eibPC über das Eibstudio tut's auch. Nur will ich das natürlich nicht ständig manuell machen, sondern suche eine Möglichkeit, das automatisch im Hintergrund ablaufen zu lassen.

    Alternativ würde es mich natürlich auch freuen, wenn jemand die richtige Lösung zum Problem mit wunderground.com kennt.

    Danke,
    Marcus

    #2
    Sowas ist nicht vorgesehen - das hat stabil zu laufen , wir haben keinen Reset eingebaut.
    Fragt sich nur, was du da genau für ein Problem hast. Ich habe das Makro monatelang stabil am Laufen. Welche Version des Makros nutzt Du (es gab mal eine ältere Version, die war nicht stabil)? Welche Makrolib (Version und Datum)?
    Das aktuelle wird über den Aufruf
    Code:
    Wetter(key,Ort,Germany)
    eingebunden, ältere Versionen benötigten immer noch einen Trigger, der hier Probleme gemacht hatte.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Also ich sehe das auch ein reset ist wirklich nicht sauber.

      Aber psst lass das enertegus nicht lesen:
      Aber du kannst ja ein schaltaktor peogrammieren so das du die Spannungsversorgung kappst und nach 1 minute wieder einschaltest. Ich denke ein schaltaktor mit treppenlicht und öffner schliesser funtion hast du.

      Kommentar


        #4
        Zitat von enertegus Beitrag anzeigen
        Welche Version des Makros nutzt Du (es gab mal eine ältere Version, die war nicht stabil)? Welche Makrolib (Version und Datum)?
        Das wäre natürlich ein Ansatz. Ich habe mal nachgeschaut: Meine Makrolib ist tatsächlich nicht mehr die neuste, ich habe v3.002 der enertexV2.lib vom 25.06.2014 (Revision 1.3). Aber in der neusten Makrolib 3.004 ist dieselbe Makroversion drin, die ich auch habe, nämlich Version 1 mit dem Datum "1.09.2013 / 04.06.2014 / 18.06.2014".

        Kann es an der Art liegen, wie ich das Makro aufrufe? Das mache ich so:

        Wetter([Key],[Ort],Germany)

        if (systemstart() or change(Wetter_Heute_Wetter)) then \\
        pdisplay(WetterHeuteID,Wetter_Heute_Wetter,WEATHER ,STATE4,GREEN,AllgemeinWetterID) endif
        if (systemstart() or change(Wetter_Heute_Temperatur_Max) or change(Wetter_Heute_Temperatur_Min)) then \\
        pdisplay(TemperaturHeuteID,$Min:$+convert(Wetter_H eute_Temperatur_Min,$$)+$°C Max:$+convert(Wetter_Heute_Temperatur_Max,$$)+$&de g;C$,TEMPERATURE,DISPLAY,GREEN,AllgemeinWetterID) endif
        if (systemstart() or change(Wetter_Heute_Regenwahrscheinlichkeit)) then \\
        pdisplay(RegenHeuteID,convert(Wetter_Heute_Regenwa hrscheinlichkeit,$$)+$ %$,RAIN,DISPLAY,GREEN,AllgemeinWetterID) endif

        if (systemstart() or change(Wetter_Morgen_Wetter)) then \\
        pdisplay(WetterMorgenID,Wetter_Morgen_Wetter,WEATH ER,STATE4,GREEN,AllgemeinWetterID) endif
        if (systemstart() or change(Wetter_Morgen_Temperatur_Max) or change(Wetter_Morgen_Temperatur_Min)) then \\
        pdisplay(TemperaturMorgenID,$Min:$+convert(Wetter_ Morgen_Temperatur_Min,$$)+$°C Max:$+convert(Wetter_Morgen_Temperatur_Max,$$)+$&d eg;C$,TEMPERATURE,DISPLAY,GREEN,AllgemeinWetterID) endif
        if (systemstart() or change(Wetter_Morgen_Regenwahrscheinlichkeit)) then \\
        pdisplay(RegenMorgenID,convert(Wetter_Morgen_Regen wahrscheinlichkeit,$$)+$ %$,RAIN,DISPLAY,GREEN,AllgemeinWetterID) endif

        if (systemstart() or change(Wetter_Uebermorgen_Wetter)) then \\
        pdisplay(WetterUebermorgenID,Wetter_Uebermorgen_We tter,WEATHER,STATE4,GREEN,AllgemeinWetterID) endif
        if (systemstart() or change(Wetter_Uebermorgen_Temperatur_Max) or change(Wetter_Uebermorgen_Temperatur_Min)) then \\
        pdisplay(TemperaturUebermorgenID,$Min:$+convert(We tter_Uebermorgen_Temperatur_Min,$$)+$°C Max:$+convert(Wetter_Uebermorgen_Temperatur_Max,$$ )+$°C$,TEMPERATURE,DISPLAY,GREEN,AllgemeinWett erID) endif
        if (systemstart() or change(Wetter_Uebermorgen_Regenwahrscheinlichkeit) ) then \\
        pdisplay(RegenUebermorgenID,convert(Wetter_Uebermo rgen_Regenwahrscheinlichkeit,$$)+$ %$,RAIN,DISPLAY,GREEN,AllgemeinWetterID) endif

        Das Ergebnis sieht dann so aus:
        Wetter-Visu.jpg

        Danke,
        Marcus

        Kommentar


          #5
          Hi,

          ich nutze auch das Macro mit "Datum "1.09.2013 / 04.06.2014 / 18.06.2014"." .. bei mir läuft es eigentlich ganz gut.. bekomme
          täglich neue Werte..
          Werden die Werte nur auf der Visu nicht aktualisiert oder sind auch die Variablen nicht richtig befüllt.. einfach mal im Debugger checken.

          Gruß Martin
          Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

          Kommentar


            #6
            ach ja noch was.. hast du was an den Abfragezeiten im Macro geändert ?? glaub bei Wunderground darf man nur XY- Mal
            pro Tag abfragen.. wenn du da evlt. drüber bist (weil du öfter abfrägst) kann es sein, das es blockiert wird.. würde jetzt aber
            nicht erklären, warum es nach einem EibPC neustart wieder geht..
            während ich das schreibe fällt mir auf das es daran eigentlich nicht liegen kann... Gruß Martin
            Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

            Kommentar


              #7
              Bitte mal das Makro neu laden und einspielen. Ich will nicht ausschließen, dass da was geändert wurde bzw. ist mir da ein kleiner Fix im Hinterkopf - das Fehlerbild war auch so wie von Dir beschrieben...
              Sollte das Makro bei Dir dann hängen, mal mit dem Debugger die Werte anschauen, und schauen, ob diese aktualisiert wurden.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Zitat von enertegus Beitrag anzeigen
                Bitte mal das Makro neu laden und einspielen.
                Habe ich gemacht und seitdem ist der Fehler noch nicht wieder aufgetaucht. Danke!

                Kommentar


                  #9
                  Zitat von Brick Beitrag anzeigen
                  Werden die Werte nur auf der Visu nicht aktualisiert oder sind auch die Variablen nicht richtig befüllt.. einfach mal im Debugger checken.
                  Nun ist der Fehler wieder aufgetaucht - die Wetterdaten aktualisieren sich irgendwann einfach nicht mehr. Ein Check im Debugger zeigt, dass die Variablen falsch sind (d.h. alte Werte enthalten), die dann aber fehlerfrei (wenn auch inhaltlich falsch) an die Visu weitergegeben werden. Bin ich der einzige, der das Problem hat?

                  Kommentar


                    #10
                    Ok, dann liegt das Problem irgendwo in der Abfrage. Ich bin heute noch unterwegs und melde mich. Wenn möglich, in diesem Zustand lassen.
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Sorry für die Verzögerung: Kannst Du mal verifizieren, dass Du dieses Makro im Einsatz hast?:
                      Code:
                      // Abfrage von WundergroundWetter,
                      //  Aktuelles Wetter und die Wettervorhersage bei Weather Underground abfragen (nur für EibPC ab Patch 3.012 oder höher)
                      // @date    1.09.2013 / 04.06.2014 / 18.06.2014
                      // @version    1
                      // @author    Michael Schriefers, KNX-Forum / Enertex Bayern GmbH
                      
                      :begin Wetter(Key, Ort, Land)
                      :info $Basis Wettervorhersage bei Wunderground abfragen. Die Vorhersage wird und um 4:06 Uhr und 16:06 Uhr ausgeführt, das aktuelle Wetter alle 15 Minuten zur vollen Viertelstunde. Zusätzlich werden beide Abfragen beim Start ausgeführt$\\
                            $"Key": wird nach Registrierung bei Wetter unter http://www.wunderground.com/weather/api/ vergeben$\\
                            $"Ort": Der Standort der Wetterstation\\
                            (im Web Browser prüfen mit api.wunderground.com/api/...Key.../forecast/lang:DL/q/Germany/Duesseldorf.xml)$\\
                            $"Land": Das Land in englischer Sprache, z.B. Germany$
                      :shortinfo $Basis Wettervorhersage auf Basis von Weather Underground Daten abfragen. Min. EibPC FW V3.000 erforderlich$
                      
                      // Allgemeine Variablen definieren
                      
                      Wetter_Init = after(systemstart() == EIN, 10300u64)
                      Wetter_xmlRawData = $$c9000
                      Wetter_xmlText = $$c9000
                      Wetter_IP = 0u32
                      Wetter_Port = 80u16
                      Wetter_IP_Connected = 0u32
                      Wetter_Port_Connected = 0u16
                      
                      Wetter_CRLF = $$c10
                      Wetter_String = $$                                 
                      Wetter_Stringfor = $$                                  /* Forecast */
                      Wetter_StringCond = $$                              /* Conditions */
                      Wetter_ErrorString = $Init$c80
                      
                      Wetter_TCP_Error_Counter = 0u08
                      Wetter_TCP_ConnectionState = 100u08                        /* Inititalisieren mit erlaubtem Wert aber geschlossener TCP Verbindung */
                      Wetter_TCP_ConnectionStateResolve = 101u08
                      
                      
                      Wetter_Query_State_Idle = 0u08                        /* Kein TCP Request aktiv */
                      Wetter_Query_State_QueryStarted = 1u08                /* TCP Request wurde gesendet, auf Antwort warten */
                      Wetter_Query_State_QuerySuccess = 2u08                /* TCP Request wurde erfolgreich beantwortet, TCP Verbindung schließen */
                      Wetter_Query_State_Parsed=         3u08             /* Ein String wurde erfolgreich geparst */
                      Wetter_Query_State = Wetter_Query_State_Idle
                      Wetterbericht_Query_State_QuerySuccess = 20         /* Den Wetterbericht parsen */
                      Wetter_ValidQuery      = AUS
                      
                      Wetter_PosStart = 0u16
                      Wetter_PosEnd = 0u16
                      Wetter_Buffer = $$
                      Wetter_Parsen = AUS
                      
                      // Einzelwerte der Wetter (Forecast) Abfrage definieren
                      
                      Wetter_Heute_Temperatur_Max = 0.0f16
                      Wetter_Heute_Temperatur_Min = 0.0f16
                      Wetter_Heute_Wetter = $$c80
                      Wetter_Heute_Regenwahrscheinlichkeit = 0u16
                      Wetter_Morgen_Temperatur_Max = 0.0f16
                      Wetter_Morgen_Temperatur_Min = 0.0f16
                      Wetter_Morgen_Wetter = $$c80
                      Wetter_Morgen_Regenwahrscheinlichkeit = 0u16
                      Wetter_Uebermorgen_Temperatur_Max = 0.0f16
                      Wetter_Uebermorgen_Temperatur_Min = 0.0f16
                      Wetter_Uebermorgen_Wetter = $$c80
                      Wetter_Uebermorgen_Regenwahrscheinlichkeit = 0u16
                      
                      Wetter_Luftdruck = 0u16
                      Wetter_Luftdruck_Trend = $$c80
                      Wetter_Luftfeuchtigkeit = 0u16
                      Wetter_Regenmenge = 0.0f16
                      Wetter_Sichtgrenze = 0u16
                      Wetter_Solarstrahlung = 0s16
                      Wetter_Taupunkt = 0.0f16
                      Wetter_Temperatur = 0.0f16
                      Wetter_Temperatur_Gefuehlt = 0.0f16
                      Wetter_Wetter = $$c80
                      Wetter_Wind = 0.0f16
                      Wetter_Windrichtung = $$c80
                      Wetter_WindrichtungGrad = 0u16
                      Wetter_Startbedingung = AUS
                      
                      // Tageszähler der XML Abfragen
                      
                      Wetter_Tageszaehler = 0u16
                      if chtime(00,00,01) then \\
                          Wetter_Tageszaehler = 0u16 \\
                          endif
                          
                      // TCP Message für Wetter Abfrage
                      
                      if  systemstart() then \\
                          stringset(Wetter_CRLF,0x0A0Du16,0u16); \\
                          Wetter_Stringfor  =  $GET /api/$ + $^Key^$ + $/forecast/lang:DL/q/$ + $^Land^$ + $/$ + $^Ort^$ + \\
                                              $.xml HTTP/1.0$ + Wetter_CRLF+ \\
                                              $User-Agent: Wget/ 1.0.10$ + Wetter_CRLF + \\
                                              $Accept: */*$ + Wetter_CRLF + \\
                                              $Host: api.wunderground.com$ + Wetter_CRLF+ \\
                                              $Connection: Keep-Alive$ + Wetter_CRLF + Wetter_CRLF; \\
                          Wetter_StringCond = $GET /api/$ + $^Key^$ + $/conditions/lang:DL/q/$ + $^Land^$ + $/$ + $^Ort^$+ \\
                                              $.xml HTTP/1.0$ + Wetter_CRLF+ \\
                                              $User-Agent: Wget/ 1.0.10$ + Wetter_CRLF + \\
                                              $Accept: */*$ + Wetter_CRLF + \\
                                              $Host: api.wunderground.com$ + Wetter_CRLF+ \\
                                              $Connection: Keep-Alive$ + Wetter_CRLF + Wetter_CRLF; \\
                          Wetter_String     = Wetter_StringCond; \\
                          endif
                      
                      // IP Resolve bei Wetter_Init == EIN oder bei WetterStartbedingung == EIN
                      
                      if  (after(Wetter_Init == EIN, 1u64) \\
                          or after(Wetter_Startbedingung == EIN, 1u64)) \\
                          and Wetter_TCP_ConnectionState >= 2u08 then \\
                             Wetter_Init = AUS; \\
                          Wetter_IP = resolve($api.wunderground.com$); \\
                          endif
                      
                      // TCP Verbindung nach Resolve öffnen, sofern sie nicht bereits hergestellt wird oder bereits besteht    
                      
                      if after(Wetter_Init == EIN, 1000u64) \\
                          or after(Wetter_Startbedingung == EIN, 1000u64) \\
                          and Wetter_TCP_ConnectionState >= 2u08 then \\
                          Wetter_TCP_ConnectionState = connecttcp(Wetter_Port, Wetter_IP); \\
                          endif
                      
                      
                      // Wenn TCP Verbindung besteht und Startfreigabe besteht Wetter Anfrage an Wunderground senden
                      // Das Linux meldet die Connection schon "ready" bevor diese besteht. Daher wird an dieser
                      // Stelle noch eine Verzögerung eingebaut
                      if  after(change(Wetter_TCP_ConnectionState),100u64) \\
                          and Wetter_TCP_ConnectionState == 0u08 then \\
                          Wetter_TCP_Error_Counter = 0u08; \\
                          sendtcparray(Wetter_Port, Wetter_IP, Wetter_String, size(Wetter_String)); \\
                          Wetter_Tageszaehler = Wetter_Tageszaehler + 1u16; \\
                          Wetter_Query_State = Wetter_Query_State_QueryStarted; \\
                          endif
                      
                      
                      if change(Wetter_TCP_ConnectionState) \\
                          and Wetter_TCP_ConnectionState >= 2u08 \\
                          and Wetter_TCP_ConnectionState <= 6u08 \\
                          and Wetter_TCP_Error_Counter <= 5u08 then \\
                          Wetter_Init = EIN; \\
                          endif
                      
                      // Empfang der TCP Daten
                      if event(readtcp(Wetter_Port_Connected, Wetter_IP_Connected, Wetter_xmlRawData)) \\
                          and Wetter_TCP_ConnectionState == 0u08 \\
                          and Wetter_Port_Connected == Wetter_Port \\
                          and Wetter_IP_Connected == Wetter_IP then {
                            Wetter_Len=size(Wetter_xmlRawData);
                          Wetter_ValidQuery=find(Wetter_xmlRawData,$OK$,0u16)<17u16;
                          if Wetter_ValidQuery then {
                                 if Wetter_Len<5000u16 then
                              {    
                                    Wetter_ErrorString = $Wetterabfrage von $c80 + convert(settime(),$$c80);
                                    // Beim Kopieren auf den Verarbeitungspuffer gleich unnötige Header-Daten abschneiden, da dann die Suche beschleunigt wird:
                                    Wetter_xmlText     = split(Wetter_xmlRawData, find(Wetter_xmlRawData,$<weather>$, 0u16),Wetter_Len);
                                       Wetter_Len=size(Wetter_xmlText);
                                    Wetter_Query_State = Wetterbericht_Query_State_QuerySuccess;  
                               } else {
                                    Wetter_ErrorString = $Wettervorhersage von $c80 + convert(settime(),$$c80);
                                    // Beim Kopieren auf den Verarbeitungspuffer gleich unnötige Header-Daten abschneiden, da dann die Suche beschleunigt wird:
                                    Wetter_xmlText     = split(Wetter_xmlRawData, find(Wetter_xmlRawData,$<celsius>$, 0u16),Wetter_Len);
                                       Wetter_Len=size(Wetter_xmlText);
                                    Wetter_Query_State = Wetter_Query_State_QuerySuccess;
                               } endif
                          } else {
                              Wetter_ErrorString = $Server Timeout - $c80+ convert(settime(),$$c80);
                              Wetter_Query_State = Wetter_Query_State_Parsed;
                         } endif ;
                      } endif
                      
                      // TCP Verbindung schliessen
                      
                      if  (Wetter_Query_State == Wetter_Query_State_Parsed) then \\
                             closetcp(Wetter_Port_Connected, Wetter_IP_Connected); \\
                             Wetter_TCP_ConnectionState = 7u08; \\
                          Wetter_Query_State = Wetter_Query_State_Idle; \\
                          Wetter_Startbedingung = AUS;\\
                          endif
                      
                      // Automatische Abfrage der Daten
                      if htime(04,06,00) or htime(16,06,00) then {
                         if !Wetter_Startbedingung then {
                            // Vorcast abfragen
                            Wetter_String     = Wetter_Stringfor;
                            Wetter_Startbedingung= EIN;
                         } endif;
                      } endif
                      
                      // Beim Start wird zunächst das aktuelle Wetter abgefragt und
                      // dann soll nach 15 Sekunden auch die Vorhersage abgefragt werden
                      if after(Wetter_Init == EIN, 15000u64) then {
                         Wetter_String     = Wetter_Stringfor;
                         Wetter_Startbedingung= EIN;
                      } endif
                      
                      // Kollision der Wetterabfrage mit dem Vorhersagen vermeiden!
                      if (mtime(00,01) or mtime(15,01) or mtime(30,01) or mtime(45,01)) then {
                         if !Wetter_Startbedingung then {
                            Wetter_String     = Wetter_StringCond;
                            Wetter_Startbedingung = EIN;
                         } endif;
                      } endif
                      
                      
                      // Sollte die Wetterabfrage nicht sauber beendet werden, wird nach 60 Sekunden zurückgesetzt...
                      if after(Wetter_Startbedingung,60000u64) and Wetter_Startbedingung then {
                              Wetter_Query_State=Wetter_Query_State_Parsed;
                              Wetter_Startbedingung = AUS;
                      } endif
                      
                      
                      
                      
                      // Parsen der XML Daten
                      Wetter_Len = 0u16
                      // Einige Konstanten
                      Wetter_SizeCelius=size($<celsius>$)
                      Wetter_SizeCeliusEnd=size($</celsius>$)+1u16
                      Wetter_SizeConditions=size($<conditions>$)
                      Wetter_SizeConditionsEnd=size($</conditions>$)+1u16
                      Wetter_SizePop=size($<pop>$)
                      Wetter_SizePopEnd=size($</pop>$)+1u16
                      
                      if Wetter_Query_State == Wetter_Query_State_QuerySuccess then {
                      
                         /* --------------------------------------------------------------------- HEUTE ------------------------------------------------------------------------ */;
                         Wetter_PosStart = find(Wetter_xmlText,$<celsius>$, 0u16) + Wetter_SizeCelius;
                         Wetter_PosEnd = find(Wetter_xmlText,$</celsius>$, 0u16) - 1u16;
                         Wetter_Heute_Temperatur_Max = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0.0f16);
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<celsius>$, 1u16) + Wetter_SizeCelius;
                         Wetter_PosEnd = find(Wetter_xmlText,$</celsius>$, 1u16) - 1u16;
                         Wetter_Heute_Temperatur_Min = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0.0f16);   
                      
                         //  Hier und im folgenden könnte man den String immer wieder abspalten; dann sind allerdings split-Operationen notwendig,
                         //  die viel Speicherperformance benötigen, anderseits ist der Einsparung beim find (aufgrund des
                         //  kürzen Strings) wesentlich geringer.
                         //
                         //   Wetter_xmlText = split(Wetter_xmlText,Wetter_PosEnd+Wetter_SizeCeliusEnd,Wetter_Len);
                         //   Wetter_Len=Wetter_Len-Wetter_PosEnd-Wetter_SizeCeliusEnd;
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<conditions>$, 0u16) + Wetter_SizeConditions;
                         Wetter_PosEnd = find(Wetter_xmlText,$</conditions>$, 0u16) - 1u16;
                         Wetter_Heute_Wetter = split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd);
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<pop>$, 0u16) + Wetter_SizePop;
                         Wetter_PosEnd = find(Wetter_xmlText,$</pop>$, 0u16) - 1u16;
                         Wetter_Heute_Regenwahrscheinlichkeit = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0u16);
                      
                      
                         /* --------------------------------------------------------------------- MORGEN ------------------------------------------------------------------------ */;
                         Wetter_PosStart = find(Wetter_xmlText,$<celsius>$, 2u16) + Wetter_SizeCelius;
                         Wetter_PosEnd = find(Wetter_xmlText,$</celsius>$, 2u16) - 1u16;
                         Wetter_Morgen_Temperatur_Max = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0.0f16);
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<celsius>$, 3u16) + Wetter_SizeCelius;
                         Wetter_PosEnd = find(Wetter_xmlText,$</celsius>$, 3u16) - 1u16;
                         Wetter_Morgen_Temperatur_Min = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0.0f16);   
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<conditions>$, 1u16) + Wetter_SizeConditions;
                         Wetter_PosEnd = find(Wetter_xmlText,$</conditions>$, 1u16) - 1u16;
                         Wetter_Morgen_Wetter = split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd);
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<pop>$, 1u16) + Wetter_SizePop;
                         Wetter_PosEnd = find(Wetter_xmlText,$</pop>$, 1u16) - 1u16;
                         Wetter_Morgen_Regenwahrscheinlichkeit = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0u16);
                      
                      
                         /* --------------------------------------------------------------------- ÜBERMORGEN ------------------------------------------------------------------------ */;
                         Wetter_PosStart = find(Wetter_xmlText,$<celsius>$, 4u16) + Wetter_SizeCelius;
                         Wetter_PosEnd = find(Wetter_xmlText,$</celsius>$, 4u16) - 1u16;
                         Wetter_Uebermorgen_Temperatur_Max = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0.0f16);
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<celsius>$,5u16) + Wetter_SizeCelius;
                         Wetter_PosEnd = find(Wetter_xmlText,$</celsius>$, 5u16) - 1u16;
                         Wetter_Uebermorgen_Temperatur_Min = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0.0f16);   
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<conditions>$, 2u16) + Wetter_SizeConditions;
                         Wetter_PosEnd = find(Wetter_xmlText,$</conditions>$, 2u16) - 1u16;
                         Wetter_Uebermorgen_Wetter = split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd);
                      
                         Wetter_PosStart = find(Wetter_xmlText,$<pop>$, 2u16) + Wetter_SizePop;
                         Wetter_PosEnd = find(Wetter_xmlText,$</pop>$, 2u16) - 1u16;
                         Wetter_Uebermorgen_Regenwahrscheinlichkeit = convert(split(Wetter_xmlText,Wetter_PosStart,Wetter_PosEnd), 0u16);
                      
                         Wetter_Query_State=Wetter_Query_State_Parsed;
                      } endif
                      
                      
                      if Wetter_Query_State == Wetterbericht_Query_State_QuerySuccess then {
                          /* Parsen nach Sichtgrenze */;
                          Wetter_PosStart = find(Wetter_xmlText, $<visibility_km>$, 0u16) + size($<visibility_km>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</visibility_km>$, 0u16) - 1u16;
                          Wetter_Sichtgrenze = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0u16);
                          /* Parsen nach Wetter */;
                          Wetter_PosStart = find(Wetter_xmlText, $<weather>$, 0u16) + size($<weather>$);
                             Wetter_PosEnd = find(Wetter_xmlText, $</weather>$, 0u16) - 1u16;
                          Wetter_Wetter = split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd);
                          /* Parsen nach Regenmenge */;
                          Wetter_PosStart = find(Wetter_xmlText, $<precip_today_metric>$, 0u16) + size($<precip_today_metric>$);
                          Wetter_PosEnd =  find(Wetter_xmlText, $</precip_today_metric>$, 0u16) - 1u16;
                          Wetter_Regenmenge = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0.0f16);
                          /* Parsen nach Temperatur */;
                          Wetter_PosStart = find(Wetter_xmlText, $<temp_c>$, 0u16) + size($<temp_c>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</temp_c>$, 0u16) - 1u16;
                          Wetter_Temperatur = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0.0f16);
                          /* Parsen nach Temperatur gefühlt */;
                          Wetter_PosStart = find(Wetter_xmlText, $<feelslike_c>$, 0u16) + size($<feelslike_c>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</feelslike_c>$, 0u16) - 1u16;
                          Wetter_Temperatur_Gefuehlt = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0.0f16);
                          /* Parsen nach Luftfeuchtigkeit */;
                          Wetter_PosStart = find(Wetter_xmlText, $<relative_humidity>$, 0u16) + size($<relative_humidity>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</relative_humidity>$, 0u16) - 1u16;
                          Wetter_Luftfeuchtigkeit = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0u16);
                          /* Parsen nach Windgeschwindigkeit */;
                          Wetter_PosStart = find(Wetter_xmlText, $<wind_kph>$, 0u16) + size($<wind_kph>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</wind_kph>$, 0u16) - 1u16;
                          Wetter_Wind = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0.0f16);
                          /* Parsen nach Windrichtung */;
                          Wetter_PosStart = find(Wetter_xmlText, $<wind_dir>$, 0u16) + size($<wind_dir>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</wind_dir>$, 0u16) - 1u16;
                          Wetter_Windrichtung = split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd);
                          /* Parsen nach Windrichtung in Grad */;
                          Wetter_PosStart = find(Wetter_xmlText, $<wind_degrees>$, 0u16) + size($<wind_degrees>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</wind_degrees>$, 0u16) - 1u16;
                          Wetter_WindrichtungGrad = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0u16);
                          /* Parsen nach Luftdruck */;
                          Wetter_PosStart = find(Wetter_xmlText, $<pressure_mb>$, 0u16) + size($<pressure_mb>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</pressure_mb>$, 0u16) - 1u16;
                          Wetter_Luftdruck = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0u16);
                          /* Parsen nach Luftdrucktrend */;
                          Wetter_PosStart = find(Wetter_xmlText, $<pressure_trend>$, 0u16) + size($<pressure_trend>$^);
                          Wetter_PosEnd = find(Wetter_xmlText, $</pressure_trend>$, 0u16) - 1u16;
                          Wetter_Luftdruck_Trend = split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd);
                          /* Parsen nach Taupunkt */;
                          Wetter_PosStart = find(Wetter_xmlText, $<dewpoint_c>$, 0u16) + size($<dewpoint_c>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</dewpoint_c>$, 0u16) - 1u16;
                          Wetter_Taupunkt = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0.0);
                          /* Parsen nach Solarstrahlung (UV) */;
                          Wetter_PosStart = find(Wetter_xmlText, $<UV>$, 0u16) + size($<UV>$);
                          Wetter_PosEnd = find(Wetter_xmlText, $</UV>$, 0u16) - 1u16;
                          Wetter_Solarstrahlung = convert(split(Wetter_xmlText, Wetter_PosStart, Wetter_PosEnd), 0s16);
                      
                          Wetter_Query_State=Wetter_Query_State_Parsed;
                      } endif
                      
                      :end
                      Ansonsten bitte mal
                      Code:
                      Wetter_Startbedingung
                      Wetter_Query_State
                      mit dem Debugger abfragen und hier posten.
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #12
                        Diese Funktion hatte ich bislang noch nicht:

                        // Sollte die Wetterabfrage nicht sauber beendet werden, wird nach 60 Sekunden zurückgesetzt...
                        if after(Wetter_Startbedingung,60000u64) and Wetter_Startbedingung then {
                        Wetter_Query_State=Wetter_Query_State_Parsed;
                        Wetter_Startbedingung = AUS;
                        } endif

                        Hat aber das Problem auch nicht behoben.

                        Die beiden Variablen Wetter_Startbedingung und Wetter_Query_State zeigen im Debugger jeweils den Wert 00 00 00 00.

                        Danke,
                        Marcus

                        Kommentar


                          #13
                          Zitat von Onkel Beitrag anzeigen
                          Diese Funktion hatte ich bislang noch nicht:
                          Die beiden Variablen Wetter_Startbedingung und Wetter_Query_State zeigen im Debugger jeweils den Wert 00 00 00 00.
                          Was genau steht da im Meldungenfenster?
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            Ich habe heute bei mir dasselbe Phänomen entdeckt. Das Wetter hat sich nicht mehr aktualisiert. Der Debugger zeigt die gleichen Werte. Die Abfrage von Wunderground per Browser funktioniert und liefert aktuelle Werte in der xml-Datei

                            Draußen hat es gerade eher 2x 18°C...
                            bug.PNG


                            Die Dateiversion ist die oben genannte
                            Der Debugger zeigt folgendes an für die beiden Werte:

                            bug2.PNG


                            Ich habe jetzt obigen Code in die EnertexV2.lib kopiert und das alte Makro komplett ersetzt und teste mal weiter.

                            Kommentar


                              #15
                              Nach einem Neustart sieht es jetzt so aus:

                              (Ich habe noch die Variable der Solarstrahlung mit angezeigt, weil mir der Wert auch nie ganz klar war. Draußen strahlt die Sonne jedenfalls kräftig. Ist ein anderes Problem...)

                              neu2.PNG

                              neu3.PNG

                              Kommentar

                              Lädt...
                              X