HowTo: Wunderground-API in Programm-Baustein Abfragen

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

    #121
    Ja es kommen eben da die richtigen Werte.
    Und in der Loxone APP auch, aber irgendwann sind diese nicht mehr da.
    Und nach einer Zeit geht es dann wieder und dann wieder nicht.
    Meisten am Vormittag wo es funktioniert.

    Was ist denn der Unterschied zwischen deinen beiden links?
    Zuletzt geändert von Gast; 23.03.2017, 13:00.

    Kommentar


    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Dass es manchmal geht und manchmal nicht, habe ich schon verstanden.
      Die Frage ist warum dies so ist. Es kann ebenso an Loxone liegen wie auch am Netzwerk oder am Wetterdienst.
      Daher die Frage, ob es über den Webbrowser geht, wenn es in Loxone gerade nicht geht.

      Link "forecast" ist für die Vorhersage und "conditions" für das aktuelle Wetter.
      Über den Eingang AI1 wird das aktuelle Wetter abgerufen und über AI2 die Vorhersage.
  • Gast

    #122
    Also auf der App funktioniert es aktuell nicht.
    Die links gehen beide.
    Das es am Netzwerk liegt schliesse ich aus, denn der Rest in Loxone funktioniert fehlerfrei.

    Zuletzt geändert von Gast; 24.03.2017, 09:22.

    Kommentar


    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Die Werte welche über AI1 aktualisiert werden sind so wie ich das sehe auch aktualisiert.
      Die restlichen Werte müsstest Du über AI2 auslösen.
      Du könntest dazu versuchsweise zusätzlich mal einen virtuellen Eingang an AI2 anschliessen und diesen dann betätigen.
  • Tico
    Lox Guru
    • 31.08.2016
    • 1035

    #123
    Übersetzt von Google -

    Ich hatte ein problem ähnlich wie Loxigator (siehe Post # 107). Der PicoC hat einen bug, der für einige Miniservers erscheint, aber nicht andere.

    Ich fand das Aktuelle Wetter (AI1) war der auslöser für den bug. Löschen sie den trigger auf AI1 und ersetzen sie alle werte mit virtuellen eingängen aus dem wiki-



    Vorhersagewerte (Langtext-Strings) funktionieren gut von Eingang AI2 im PicoC-Block.
    Zuletzt geändert von Tico; 06.04.2017, 15:09. Grund: Feste defekte verbindung
    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

    Kommentar


    • Gast
      Gast kommentierte
      Kommentar bearbeiten
      Der Link funktioniert nicht. LG
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5141

    #124
    Durch Deaktivierung mittels // in folgenden PicoC Zeilen sind bei mir die "memory not valid" nicht mehr aufgetreten.
    Code:
    0170     //free(cDatenA);
    0228     //free(cDatenV);
    Möchte aber darauf hinweisen, dass Falscheingaben in PicoC - Programmen auch dazu führen können, dass der Miniserver nicht mehr erreichbar ist.
    Dann hilft nur noch eine Formatierung der SD-Karte und aufspielen einer vorhandener Datensicherung.
    Also wie immer in eigener Verantwortung!

    Nachtrag:
    Die Remanenz hatte ich schon vor dieser Änderung deaktiviert.
    Zuletzt geändert von romildo; 23.03.2017, 22:25.
    lg Romildo

    Kommentar

    • Tico
      Lox Guru
      • 31.08.2016
      • 1035

      #125
      Danke Romildo. Die Deaktivierung von (cDatenA) und (cDatenV) hat auch den PicoC-Block für mich festgelegt.
      Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

      Kommentar

      • Gast

        #126
        Hallo

        Bei mir funktioniert es immer noch nicht, bzw. gleich unregelmässsig wie vorher.
        Auch habe ich einen virtuellen Eingang auf AI2 gelegt zu aktualiesieren.
        Manchmal geht es manchmal nicht.
        Auch hat bei mir die Deaktivierung nichts gebracht.

        Schade.

        Ich werde mal alles rauswerfen und neu machen, vll klappt es ja dann.


        Vielen Dank

        Kommentar

        • Tico
          Lox Guru
          • 31.08.2016
          • 1035

          #127
          Auch sprach zu früh .... Arbeitete für eine kleine Zeit dann aufgehört zu aktualisieren. Ich habe nicht mehr den Speicherfehler in der Protokolldatei.
          Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

          Kommentar

          • romildo
            Lebende Foren Legende
            • 25.08.2015
            • 5141

            #128
            Die Deaktivierung von cDantenA und cDatenV ist nur dafür gedacht, den Programmblock nicht mehr in den Speicherfehler "memory not valid" laufen zu lassen.

            Wenn der Programmblock im Fehlerzustand und die Remanenz aktiv ist, dann bleibt dieser Zustand auch nach einem Neustart bestehen.
            Dies sollte durch die Deaktivierung der Remanenz verhindert werden.

            Meine Vermutung:
            Das Triggersignal an AI1 veranlasst den Programmblock die Daten für das aktuelle Wetter zu aktualisieren.
            Das Triggersignal an AI2 soll die Wettervorhersage aktualisieren.
            So lange wie der Programmblock mit der Aktualisierung von den aktuellen Daten beschäftigt ist, nimmt er das Triggersignal an AI2 von der Wettervorhersage nicht entgegen.
            So lange er mit der Aktualisierung von der Vorhersage beschäftigt ist, reagierter nicht auf das Triggersignal an AI1.
            Da in der OriginalConfig AI1 alle 300 Sekunden und AI2 alle 7200 Sekunden aufgerufen werden, kommen die Triggersignale an AI1 und AI2 alle 2 Stunden gleichzeitig.
            Es könnte somit einer der vorher genannten Fälle eintreten.
            Eine mögliche Abhilfe dagegen, wäre die Triggersignale an AI1 und AI2 nicht synchron zu senden, indem z.B. die Zeit für das Triggersignal an AI2 von 7200 auf 7215 gestellt wird.

            Wenn aber die Daten, wie von in Gast #126 erwähnt, auch nicht aktualisiert werden, wenn man AI2 von Hand triggert, wird auch das nicht helfen.
            Vielleicht aber ein Versuch wert.
            lg Romildo

            Kommentar

            • Tico
              Lox Guru
              • 31.08.2016
              • 1035

              #129
              Zitat von romildo
              So lange wie der Programmblock mit der Aktualisierung von den aktuellen Daten beschäftigt ist, nimmt er das Triggersignal an AI2 von der Wettervorhersage nicht entgegen.
              So lange er mit der Aktualisierung von der Vorhersage beschäftigt ist, reagierter nicht auf das Triggersignal an AI1.
              Das hilft zu erklären, was ich gesehen habe. Ich hatte AI1 deaktiviert und war mit AI2 (Wettervorhersage) Eingaben erfolgreich.

              Seit der Reaktivierung von AI1 arbeiten diese Eingänge (aktuelles Wetter), aber AI2-Eingänge (Wettervorhersage) werden nicht mehr aktualisiert.

              Es scheint, dass das eine oder das andere arbeiten kann, aber nicht zusammen. Ich habe mich auf 7215 Sekunden auf AI2 geändert und werde sehen, wie es geht.
              Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

              Kommentar

              • Gast

                #130
                Hallo zusammen!


                Also ich habe es ebenfalls getestet. Das Problem ist in der Tat das die Eingänge alle zwei Stunden zusammen aktualisiert haben. Das Problem war reproduzierbar.
                Ich habe die Zeiten geändert und siehe da bis jetzt funktioniert bis jetzt.
                Vielen Lieben Dank für eurer Unterstützung!

                LG

                Kommentar

                • michifischer
                  Smart Home'r
                  • 17.10.2015
                  • 64

                  #131
                  Hallo,

                  ich nutze seit seit etwa einem Jahr den Dienst der Underground-Wetterseite zur Wettervorhersage in Loxone und Steuer darüber beispielsweise meine Bewässerungsanlage im Garten.

                  Hierzu habe ich nach folgendem Skript alles eingerichtet:


                  Bisher lief alles super...

                  Seit kurzem gibt es Probleme mit dem Statusbaustein für die Wettericons. Hier kommen ja drei Werte (Codes) seitens der Website im Miniserver an, die dann über den Statusbaustein richtig dargestellt werden. Eine Beispiel-Programmierung findet sich ebenfalls auf der oben angegeben Seite. Leider aber kamen in den letzten Tage Werte an, für die der Baustein gar keine Zeile aufweist. Kann es sein, dass die Werte geändert wurden?

                  Wäre jemand so nett und würde eine Config-Datei mit funktionierendem Baustein online stellen?

                  Danke und VG!

                  Kommentar

                • Tico
                  Lox Guru
                  • 31.08.2016
                  • 1035

                  #132
                  Ich möchte die Loxone Log Meldung "Wunderground-Current Weather: Last Updated ....." vom Drucken in die Protokolldatei stoppen.
                  Die Protokollierung wird in Zeile 0016 - "#define LOGGING 0" ausgeschaltet.

                  Ungefähr Linie 0184 -

                  Ich sehe die Fahne "IF LOGGING == 1" für das Wunderground-Forecast Weather

                  Es scheint kein ähnliches Argument für das Wunderground-Current Weather zu sein. Wie würden Sie das hinzufügen? Ich möchte nicht in einer Mini-Server-Boot-Loop enden, wenn ich experimentiere ...




                  Linie 0176

                  char* cXMLString;
                  if((cXMLString = getxmlvalue(cDatenA,0,a[i])) != NULL){ // If the value exists.
                  strcat(cTmpA,a[i]);
                  strcat(cTmpA,":");
                  strcat(cTmpA,cXMLString);
                  strcat(cTmpA,"\0"); // Nullterminierung zum Ende des Strings.
                  stream_write(sUDPStreamA,cTmpA, strlen(cTmpA)); // To prepare
                  stream_flush(sUDPStreamA); //Send
                  if(LOGGING == 1){
                  printf("Wunderground-Forecast Weather: %s",cTmpA); // Log output
                  //setlogtext(cTmpA);
                  }
                  }
                  free(cXMLString);
                  memset(cTmpA, 0, 255); // Variable leeren.
                  i++;
                  }
                  memset(cTmpA, 0, 255); // Variable leeren.
                  }
                  stream_close(sUDPStreamA);
                  }
                  char *cObservationtimeXML;
                  if((cObservationtimeXML = getxmlvalue(cDatenA,0,"observation_time")) != NULL){
                  printf("Wunderground-Current Weather: %s", cObservationtimeXML);
                  }
                  free(cObservationtimeXML);
                  free(cDatenA);
                  //Aktuelles Wetter - Ende.
                  Zuletzt geändert von Tico; 22.06.2017, 01:30.
                  Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                  Kommentar

                  • sarnau
                    Smart Home'r
                    • 24.02.2018
                    • 46

                    #133
                    Hallo, ich schreibe mir gerade einen Simulator für PicoC mit Loxone Support für meinen Rechner und suche PicoC Programme zum Testen. Da kam mir dieses gerade recht – eine sehr schöne Lösung ohne externe Hardware. Super!

                    Aber ich glaube ich habe die Ursache für die MS Crashes gefunden: Speicher wird nicht bzw. der falsche wir freigegeben. Im letzteren Fall scheint der MS tolerant sein, aber im ersten wird irgendwann der Speicher voll sein und der MS abstürzen.

                    Was ist das Problem: strstrskip(getxmlvalue(...)). getxmlvalue() gibt einen Speicherblock zurück, der freigegeben werden muß. strstr() bzw. strstrskip() gibt jedoch einen Pointer _in_ diesen Speicherblock zurück, nicht den Originalen. Dadurch wird free() scheitern und der Speicher irgendwann überlaufen. Besser ist folgende Änderung:

                    Code:
                                char *cWetter1XML = getxmlvalue(cDatenV,0,"fcttext_metric");
                                char *cWetter1  = strstrskip(cWetter1XML,"[CDATA[");
                                char *cWetter2XML = getxmlvalue(cDatenV,1,"fcttext_metric");
                                char *cWetter2 = strstrskip(cWetter2XML,"[CDATA["); // Daten vor dem Text abschneiden
                                char *cWetter3XML = getxmlvalue(cDatenV,2,"fcttext_metric");
                                char *cWetter3 = strstrskip(cWetter3XML,"[CDATA[");
                    und weiter unten:

                    Code:
                                free(cWetter1XML);
                                free(cWetter2XML);
                                free(cWetter3XML);
                    Bitte niemals free() einfach weglassen. Der Code wird ein Weilchen funktionieren, aber der Speicher wird überlaufen und einen Reboot vom Server auslösen.

                    Ich hoffe, das euch dies Hilft.

                    Kommentar

                    • Tico
                      Lox Guru
                      • 31.08.2016
                      • 1035

                      #134
                      Danke für die Einsicht. Ich habe die Verwendung dieses PicoC-Programms wegen regelmäßiger Probleme eingestellt.

                      Die Symptome waren mehr, dass der PicoC-Block einfach nicht mehr funktionierte. Obwohl ich manchmal Neustarts erlebt habe ...

                      Simulator für PicoC klingt sehr interessant.
                      Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                      Kommentar

                      Lädt...