HttpGetValue und Google Sheets - Was ist hier falsch?

  • (Ich bin kein Programmierer.. also bitte habt Erbarmen wenn ich irgendwas kleines übersehen habe)


    Ich hole mir mit HttpGetValue eine einzelne Zelle aus einem Google Sheet. Sonst ist in dem Sheet nichts drin.
    Beispiel: https://docs.google.com/spread…=0&single=true&output=csv
    Da ich nur eine einzige Zelle in dem Sheet belegt habe, benutze ich kein Pattern Matching (Text before/after ist nicht gesetzt). Der obige Link generiert im Modul einen Wert in _value der dem Zelleninhalt von 1,1 entspricht.


    Das funktioniert grundsätzlich schon, nur sind die gelesenen Werte nicht konsistent. Gibt es bei HttpGetValue ein Cache das ich jeweils löschen muss?
    Ich starte aus Testzwecken das Modul im Moment über "Instance activated" (Modul manuell im Admin GUI aktivieren)


    Vorgehen:
    - ich setze mit Google Sheet manuell die Zelle 1,1 auf einen Wert, z.B. 15
    - Kontrolle mit https://docs.google.com/spread…ZEY/pub?gid=0&single=true bestätigt dass der zurückgegebene Wert 15 ist
    - ich starte (aktiviere) das Modul und im Log sehe ich dass der gelesene Wert = 15 ist. Soweit so gut
    - ich stoppe (bzw. deaktiviere) das Modul
    - ich setze mit Google Sheet manuell die Zelle 1,1 auf einen anderen Wert, z.B. 14
    - Kontrolle mit https://docs.google.com/spread…ZEY/pub?gid=0&single=true bestätigt dass der zurückgegebene Wert 14 ist
    - ich starte (aktiviere) das Modul und im Log sehe ich dass der gelesene Wert immer noch 15 ist ??? Warum?


    Das gleich Vorgehen etwas später und _value ändert ev. auf 14. Wann und warum genau ist mir nicht ganz klar. In Tests verbleibt der Wert auf dem erstmalig gelesenen (15) für etliche Testzyklen...


    Um ein Problem mit der Variable _value zwischen den Aufrufen des Moduls auszuschliessen (obwohl meiner Meinung nach dies im Testprogramm vorerst nicht nötig wäre, da das Modul ja immer wieder neu gestartet wird und _value in meinem Verständnis doch eine lokale Variable ist die sowieso erst beim Aufruf von HttpGetValue gesetzt wird....) setze ich _value auf 0 nachdem ich den Wert per HttpGetValue gelesen und verarbeitet habe.


    Woran kann es liegen dass HttpGetValue nicht den selben Wert zurück gibt wie wenn ich den selben Link in einem Browser aufrufe?




    2015-10-09_01-15-28.jpg




    2015-10-09_01-17-19.jpg



    Danke für jeden Tip.


    Daniel

  • Sieht so aus als wäre da eine nicht immer gleich grosse Verzögerung zwischen dem Ändern einer Google Sheet Zelle und dem Veröffentlichen des veränderten Inhalts auf dem Public URL...
    Also wahrscheinlich kein HttpGetValue Problem...


    ..muss mir wohl eine bessere Variante ausdenken. Einen eigene Webserver möchte ich für das kleine Projekt nicht aufsetzen.


    Never Mind...
    ...inzwischen habe ich das Ganze mit ThingSpeak gelöst.. geht eh besser :)

  • Hallo Niklas,
    Thingspeak ist ok, ich benütze unter anderen diese Seite für kleinere Projekte mit ESP8266, Arduino und Raspberry (hobbymässig).
    Aber man kann dort keine Variablen direkt am Web GUI setzen. Ich bin deshalb für das Prototyping auf Ubidots gewechselt.


    Mein Problem ist ja dass ich aus technischen Gründen an 2 Starface Zentralen gleichzeitig angeschlossen bin und zusätzlich noch eine Lync/Skype for Business Implementation habe. Ein Telefon auf dem Pult mit den zwei SF Anlagen aufgesetzt und Skype auf dem PC. Wenn ich nun auf einer Anlage besetzt bin, wissen das die anderen Anlagen nicht. Ist ziemlich mühsam, aber ich kann und darf am Anlagensetup zurzeit nichts ändern.


    Ich brauche also eine Lösung die ohne grosse Programmierung (wie gesagt, ich bin wirklich kein Programmierer) dieses Problem etwas mindert oder aus der Welt schafft. Das DND setzen ist der erste Schritt dazu. Und nebenbei lerne ich wie man mehrere Anlagen gleichzeitig übers Internet beeinflussen kann. Ich könnte mir noch weitere Bereiche vorstellen die so einfach integriert werden könnten...
    (Eigentlich wünschte ich mir dass man mit der SF ähnlich einfach kommunizieren könnte wie mit Thingspeak und Ubidots... wenn man das kann, habe ich es bisher noch nicht rausgefunden.. ich träume von NodeRed auf der Starface Linux Box, integriert in Starface Asterisk.. träumen darf man, gell?)



    Inzwischen habe ich bei Ubidots eine simple "app" die auf den zwei SF mein jeweiliges DND synchron ein- oder ausschaltet. War gar nicht so schwer.
    Auf den beiden Starface Anlagen frage in einem Modul regelmässig die Ubidots Variable ab und setze dann den DND Status entsprechend.


    2015-10-09_17-36-30.jpg


    Der nächste Schritt ist dann wohl das selektive setzen des DND Status (oder busy?.. ) wenn ich auf einer der anderen Anlagen besetzt bin.
    Für grössere Projekte ist dieses regelmässige Abfragen wahrscheinlich nicht das Idealste. Aber es war einfach zu implementieren.


    Daniel

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!