Hallo zusammen,
ich hoffe Ihr könnt mir weiterhelfen. Ich habe das Problem, dass sich mein FTUI nicht aktualisiert.
Ich bin gerade dabei mir eine TabletUI aufzubauen. Aktuell habe ich Wetter, Müllabfuhr und Raumtemp (mittels HM Thermostaten gelesen) integriert.
Allerdings werden Änderungen nicht angezeigt. Die Anzeige für die Mülltonnen ist beispielsweise 1 Woche alt (die braune Tolle sollte heute geleert werden, steht aber auf 7 Tagen).
Auch ein Reload im Browser bringt nur manchmal etwas, oft werden die gleichen alten Werte angezeigt.
Auf meinem Android Tablet verwende ich Fully (Version 1.18) zur Anzeige, auf meinem Windows 10 PC Firefox (55.0.3).
Interessant ist, dass die Temperaturanzeige im Wetter auf den verschiedenen Anzeigegeräten immer 13°C ist.
Ich habe versucht mich im Wiki und mittels Forensuche schlau zu machen.
So wie ich es verstanden habe, wird bei aktivem longpoll der Wert eines Devices, z.B. Temperatursensor, bei Änderung aktualisiert. Daher habe ich bei fhem im WEB longpoll auf 1 gesetzt.
Es müsste doch also jetzt jedesmal, wenn sich z.B. die aktuelle Wetterlage ändert, diese Änderung auch bei FTUI angezeigt werden, oder?
Des Weiteren habe ich es so verstanden, dass shortpoll in einem definierten Zeitbereich sämtliche Werte neu einliest. Ich möchte allerdings nur Änderungen aktualisieren, habe mich daher also für longpoll entschieden.
In meinem HTML File für habe ich im head Bereich folgendes gesetzt:
<meta name="longpoll" content="1">
Vielleicht habe ich ja auch Blödsinn bei den Devices geschrieben, daher hier auszugsweise meine Devices
Temperatur:
<div>
<div data-type="symbol" class="large center" data-width="205" data-icon="ro-sofa" data-color="#eee"></div>
<div data-type="label" data-device="HM_ABC123_Clima" data-unit="%B0C%0A" data-get="measured-temp" data-limits="[16, 18, 24]" data-colors='["blue", "green", "red"]' class="bigger"></div>
<div class="narrow">Wohnen</div>
</div>
Wetter:
<div data-type="label" data-device="MeinWetter" data-get="temperature" data-unit="°C " class="grande"></div>
<div>
<div data-type="weather" data-device="MeinWetter" data-get="fc1_condition" class="bigger" ></div>
<div data-type="label" data-device="MeinWetter" data-get="fc1_condition"></div>
</div>
Abfall
<div>
<div data-type="symbol" data-off-background-color="#7A7A7A" data-on-background-color="#7A7A7A" data-device="myABFALL" data-get='AbfallGoogleCalender_RSAGBiotonne2-woeinklusiveBuendel-Mitnahme_tage' data-off-color="#6E3707" data-get-on='["off","^[01]$","^[1-9][0-9]|[2-9]$"]' data-icons='["fs-dustbin warn","fs-dustbin warn blink","fs-dustbin warn"]' data-on-colors='["#6E3707","#6E3707","#6E3707"]' class="bigger"></div>
<div data-device="myABFALL" data-get="AbfallGoogleCalender_RSAGBiotonne2-woeinklusiveBuendel-Mitnahme_datum" data-type="label" class="darker"/>
<div data-device="myABFALL" data-get="AbfallGoogleCalender_Biotonne_wochentag" data-type="label" class="darker"/>
<div data-type="label" class="darker">Biomüll</div>
</div>
Ich hoffe ihr könnt mir weiterhelfen.
Ohne aktuellen Werte ist FTUI für mich eigentlich nutzlos. :(
Viele Grüße
Hallo nanocosmos,
lösen deine Geräte in FHEM auch events aus?
Setz mal zum Test ein:
attr myABFALL event-on-update-reading .*
und schaue dann ob sich die Werte aktualisieren wenn du in FHEM den Kalender neu einliest.
VG, Thomas
Hallo Thomas
vielen Dank, dass Du Dir meinen langen Beitrag durchgelesen hast!
Ich habe meinen Browser mit der FTUI Seite geöffnet, Anzeige der Mülltonne war z.B. 7 Tage.
Dann habe ich in einem parallelen Tab in FHEM den Befehl von Dir ausgeführt.
Im FTUI hat sich nichts getan, erst als ich Deine Seite neu geladen habe, wurden die korrekten Werte dargestellt.
Schonmal danke dafür!
Aber sollte es nicht so sein, dass die Daten automatisch aktualisiert werden, sonst müsste ich ja immer ein Page Reload machen?
Viele Grüße
Daniel
Ich hatte es so verstanden, dass wenn bei einem Device weder event-on-update-reading noch event-on-change-reading angegeben wurde, also quasi ein "nacktes" Device Attribute, werden für alle Readings sowohl bei Aktualisierung als auch bei der Änderung Events erzeugt.
Hallo nanocosmos,
mit dem Befehl von mir setzt du nur das Attribut.
Anschließend musst du noch deinen Kalender aktualisieren. Erst dann solltest du auch eine Aktualisierung in deinem TabletUI sehen.
Ob ein Event ausgelöst wird, ist meiner Meinung nach, modulabhängig.
Manche Module lösen bei jeder Readingänderung ein Event aus, andere wiederum nur bei bestimmten Readings, da es auch nicht immer nötig ist, ein Event zu triggern, nur weil sich ein Reading aktualisiert.
Deshalb mal das Attribut und die Kalneder-Aktualisierung danach zum testen.
VG, Thomas
Ah ok.
Da sich beim Müllkalender erst morgen wieder was ändern würde, habe ich mal das besagte Attribut auf das Wetter angewandt.
attr MeinWetter event-on-update-reading .*
Danach ein update des Wetters
set MeinWetter update
In FTUI tut sich leider gar nichts. Auch nach Page Reload werden immernoch alte Werte angezeigt (13°C usw. )
Also da sich am Müllkalender erst morgen was ändert, verwendest du ja auch event-on-update-reading und nicht event-on-change-reading.
Werden denn die Werte in FHEM aktualisiert? Ist der Zeitstempel aktuell nachdem du in FHEM die Werte holst?
ZitatAlso da sich am Müllkalender erst morgen was ändert, verwendest du ja auch event-on-update-reading und nicht event-on-change-reading.
Leider kann ich nicht mehr sehen, ob sich was in FTUI verändert, weil die Tage bis zur Entleerung ja jetzt korrekt da stehen.
Ich habe daher das Wetter gewählt, da hier wesentlich häufiger eine Änderung eintritt und man diese in FTUI dann sehen könnte.
Oder habe ich bei Deiner Aussage jetzt was total falsch verstanden?
ZitatWerden denn die Werte in FHEM aktualisiert? Ist der Zeitstempel aktuell nachdem du in FHEM die Werte holst?
Da stehe ich ehrlich gesagt etwas auf dem Schlauch.
Meinst Du den Zeitstempel der in FHEM bei den Readings steht?
Wenn ich in FHEM z.B
set MeinWetter update mache, so ändert sich der Zeitstempel in den Readings auf die aktuelle Zeit zu die der Befehl ausgeführt wurde.
Okay nanocosmos,
ich denke, du solltest dir bevor du weiter machst, erst mal die Doku in Ruhe durchlesen: https://fhem.de/Heimautomatisierung-mit-fhem.pdf
Wie es scheint, mangelt es hier sehr stark noch an Grundlagen.
Das ist nicht böse gemeint, aber wenn du dir die Doku durchliest, wird dir sicher einiges klarer.
Ansonsten schau mal wenn du ein Update machst, im Event Monitor nach ob überhaupt ein Event getriggert wird.
In deinem Fall müsste dort MeinWetter fc1_condition auftauchen. Denn darauf triggerst du ja deine Aktualisierung im TabletUI.
VG, Thomas
Danke für deinen Hilfeversuch!
Da ich leider aktuell keine Zeit habe mir die komplette Doku durchzulesen, um mein TabletUI zum Laufen zu kommen, werde ich es wohl mit dem FTUI sein lassen. :(
Nur der Vollständigkeit halber, finden sich im EventMonitor nach einem Update von MeinWetter
2017-08-29 12:52:19 Weather MeinWetter wind_chill: 25
2017-08-29 12:52:19 Weather MeinWetter wind_direction: 170
2017-08-29 12:52:19 Weather MeinWetter wind_condition: Wind: S 11 km/h
2017-08-29 12:52:19 Weather MeinWetter humidity: 62
2017-08-29 12:52:19 Weather MeinWetter pressure: 989
2017-08-29 12:52:19 Weather MeinWetter current_date_time: Tue, 29 Aug 2017 12:00 PM CEST
2017-08-29 12:52:19 Weather MeinWetter temp_c: 25
2017-08-29 12:52:19 Weather MeinWetter temperature: 25
2017-08-29 12:52:19 Weather MeinWetter T: 25 H: 62 W: 11 P: 989
Die Werte aktualisieren sich, nur leider nicht in FTUI.
sieht doch gut aus.
Gib mal bitte Dein index.html. Also da wo header und so drin stehen
Es könnte auch noch sein, dass du Codesnipsel von anderen Usern kopiert hast, ohne auf deine Device und Reading Namen geändert zu haben.
Dann funktioniert der ganze "informiere mich, wenn sich bei folgenden Geräten etwas ändert!" Auftrag an FHEM nicht. Müsste vllt. sogar im FHEM log Fehler zu finden sein.
Ich würde dann erstmal klein anfangen, nur 1-2 Widgets auf der Seite und testen.
Hey nanocosmos,
also Temperatur sollte sich mal aktualisieren, da das im EventMonitor auftaucht.
fc1_condition vermisse ich jedoch.
VG, Thomas
Erst einmal
vielen Dank, dass ihr euch die Mühe macht um mir weiterzuhelfen!
@setstate
ZitatEs könnte auch noch sein, dass du Codesnipsel von anderen Usern kopiert hast, ohne auf deine Device und Reading Namen geändert zu haben.
Dann funktioniert der ganze "informiere mich, wenn sich bei folgenden Geräten etwas ändert!" Auftrag an FHEM nicht. Müsste vllt. sogar im FHEM log Fehler zu finden sein.
Ich würde dann erstmal klein anfangen, nur 1-2 Widgets auf der Seite und testen.
Müsste ich bei FTUI bei falschen Device und Reading Namen nicht gar nichts angezeigt bekommen? ???
Es werden mir jedoch Werte angezeigt, nur leider nicht aktuelle, die ich in FHEM sehen kann.
@ToM_ToM
Die Condition hatte ich bloß nicht mit rauskopiert, sorry!
@CoolTux
Die Index habe ich mal mit angehängt. Ist noch sehr rudimentär... ich versuche alles in FTUI Flex Layout zu machen ::)
BTW: Wenn jemand weiß, wie ich die Cards in FTUI Flex dunkel bekomme, würde mich das freuen.
Sowas funktioniert bspw. in Flex nicht:
<div class="card blue-grey darken-1">Als Beispiel für die nicht aktualisierten Widgets, die Temperatur vom Wettermodul
Aus dem Eventmonitor:
2017-08-29 14:01:07 Weather MeinWetter temperature: 27
In FTUI steht beim Firefox unter Windows 25°C. Bei Android mit Fully 13°C.
Vielleicht ist der Cache Schuld, aber ich habe bei z.B. Fully mehrfach den Cache geleert.
Welchen Port verwendest du für die Anzeige (Web/Webphone/Webtablet) und auf was ist der in FHEM als longpoll Attribut konfiguriert?
Keine Ahnung ob das damit zusammenhängt, aber wäre mal ein Versuch wert.
Setzt mal in FHEM im das Attribut von (Web/Wephone/Webtablet), jenachdem welches du zum Aufruf für das TabletUI verwendest, auf "websocket" und füge folgendes in deinen Header mit ein.
<meta name="longpoll" content="websocket">
Edit: Bin gerade bei der Arbeit und kann mir den Aufbau daher leider nur aus meinen Gedanken ziehen.^^
VG, Thomas
Guten Morgen,
habe leider erst heute wieder Zeit gefunden für fhem und mein Problem.
ZitatWelchen Port verwendest du für die Anzeige (Web/Webphone/Webtablet) und auf was ist der in FHEM als longpoll Attribut konfiguriert?
https://192.168.178.38:8083/fhem/ftui/flex.html
Im WEB habe ich longpoll attr auf 1 gestellt.
Habe jetzt auf websocket umgestellt und den meta Tag im HTML File entsprechend geändert.
Es kommt dann zwei Toast Nachrichten
Fully refresh done in 0.1s for 2 parameter(s)
Longpoll (Websocket) startedLeider sind alle Werte, d.h. für das Wetter, für die Abfallanzeige und für die Temperaturen in den Wohnräumen nicht aktuell im Vergleich zu FHEM. :(
Auch nach mehrfachem Page Reload bleiben die Werte alt.
Es muss wohl daneben irgendein Problem mit dem Cache sein. FTUI müsste sich doch eigentlich zumindest beim ersten Aufruf die aktuellen Werte ziehen.
Aber die Werte sind teilweise noch von Dienstag.
Das hört sich stark danach an, dass nur die lokalen Daten aus dem Cache angezeigt werden. Ein Update erfolgt erst, nachdem alle Widgets erfolgreich initialisiert wurden.
Bleibt das "initWidgetsDone" Event aus, startet der Shortpoll (Full Refresh) auch nicht.
Da müssten Fehler in der Webconsole zu finden sein.
Danke für Deine Hilfe.
Hast Du einen Tipp wie ich weiter vorgehen soll?
Vielleicht weiß jemand noch einen Rat.
Würde FTUI gerne verwenden.
Schönen Sonntag noch!
Hallo nanocosmos,
kann es sein dass dein Browser im Offline-Modus ist?
Ansonsten geh mal nach dem Ausschlussprinzip vor.
1. schauen ob Werte in FHEM aktualisiert werden
2. irgendeinen Text in deine HTML-Datei schreiben und schauen ob dieser im Browser angezeigt wird
3. im Browser Strg+F5 für Relaod drücken
4. in unterschiedlichen Geräten / Browsern testen
VG, Thomas
Hallo Thomas,
der Browser bzw. die Browser funktionieren leider alle.
Habe auf verschiedenen Geräten (Android Handy, Android Tablet, Windows PC) getestet.
Es werden sporadisch Werte aktualisiert aber nicht zuverlässig.
Wenn ich das HTML File editiere, bspw. Text mitreinschreibe, so wird dieser auch angezeigt.
Ach ja in FHEM sind die Daten aktuell, nur halt bei FTUI nicht.
Überlege, ob ich Fhem nochmal komplett neu aufsetzen soll.
Erstell doch mal eine ganz simple HTML-Seite für das FTUI, welches nur ein Label Device enthält, auf einen dummy referenziert und dann änder den Wert des Dummys und schaue ob es dann geht.
VG, Thomas
Der Wert des dummy Devices wird sofort geändert. Das klappt also schonmal.
Nehme ich nun ein Widget, bspw. das Wetter mit rein, so werden hier wieder falsche Werte angezeigt, d.h. andere Werte im FTUI als in FHEM.
Okay, dann scheint dein FHEM und FTUI an sich schon mal zu funktionieren.
Poste mal deine neue Test-Datei und die Device-Definition von dem welches du da abfragst.
VG, Thomas
Ich nehme alles zurück, hat nur kurzfristig funktioniert mit dem dummy.
Habe gerade nochmal für FTUI ein Update gemacht.
Dann wollte ich gerade erneut das dummy device testen, jetzt wird der Status in FTUI nicht mehr aktualisiert.
Um zu Testen, ob es das Widget ist, habe ich dieses rausgeschmissen aus dem HTML FTUI File und nun geht auch das dummy device wieder.
Dann habe ich mal eine Temperaturanzeige eingestellt:
<div class"inline">
<div data-type="symbol" class="large inline" data-width="205" data-icon="fa-tint" data-color="#eee"></div>
<div data-type="label" data-device="MeinWetter" data-get="humidity" data-unit="%" data-limits='[0,40,81]' data-colors='["#0088CC","green","firebrick"]'class="big inline"></div>
</div>
Falsche Daten.
Nehme ich dann nur folgende Zeile
<div data-type="label" data-device="MeinWetter" data-get="humidity" data-unit="%" data-limits='[0,40,81]' data-colors='["#0088CC","green","firebrick"]'class="big inline"></div>
wird die richtige Temperatur angezeigt.
Gleiches für das Wetter. Nehme ich also den Code für mein Wetter Widget:
<div class="hbox items-space-between">
<div data-type="label" data-device="MeinWetter" data-get="temperature" data-unit="°C " class="grande"></div>
<div>
<div data-type="weather" data-device="MeinWetter" data-get="fc1_condition" class="bigger" ></div>
<div data-type="label" data-device="MeinWetter" data-get="fc1_condition"></div>
</div>
<div>
<div class="inline">
<div data-type="symbol" class="big inline" data-icon="fa-thermometer-full " data-color="#eee"></div>
<div data-type="label" data-device="MeinWetter" data-get="fc1_high_c" data-unit="°C " class="big inline"></div>
</div>
<div class"inline">
<div data-type="symbol" class="big inline" data-icon="fa-thermometer-empty " data-color="#eee"></div>
<div data-type="label" data-device="MeinWetter" data-get="fc1_low_c" data-unit="°C " class="big inline"></div>
</div>
</div>
<div>
<div class"inline">
<div data-type="symbol" class="large inline" data-width="205" data-icon="fa-tint" data-color="#eee"></div>
<div data-type="label" data-device="MeinWetter" data-get="humidity" data-unit="%" data-limits='[0,40,81]' data-colors='["#0088CC","green","firebrick"]'class="big inline"></div>
</div>
<div class"inline">
<div data-type="symbol" class="large inline" data-width="205" data-icon="fa-umbrella" data-color="#eee"></div>
<div data-type="label" data-device="MeinWetter" data-get="humidity" data-unit="%" data-limits='[0,40,81]' data-colors='["#0088CC","green","firebrick"]'class="big inline"></div>
</div>
</div>
<div>
<div data-type="wind_direction" data-device="Mein Wetter" data-direction="windDir" data-speed="wind" data-calm="~" data-tickstep="22.5" class="small"></div>
<div class="cell big" data-type="label" data-device="MeinWetter" data-get="wind" data-unit="km/h" data-limits="[0, 20, 29, 39, 50, 62, 75, 89, 103, 117]" data-colors='["green","green","#aa6900","#aa6900","firebrick","firebrick","firebrick","red","red","red"]'></div>
</div>
</div>
Falsche Daten werden angezeigt, sogar wenn ich neben meinem Wetter Widget nur eine Zeile daneben anzeigen lasse, z.B.
<div data-type="label" data-device="MeinWetter" data-get="humidity" data-unit="%" data-limits='[0,40,81]' data-colors='["#0088CC","green","firebrick"]'class="big inline">
Lasse ich mir also gleichzeitig das Wetter mit meinem Wetter Widget Code und der einen Zeile (z.B. Humidity) anzeigen, sind die Werte falsch.
Schmeiße ich dann den Wetter Widget Code raus und lasse nur die Zeile für Humidity stehen, so zieht FTUI sich sofort die richtigen Werte.
Ich bin etwas verwundert... ??? ???
Also du hast einige Dinge drin die mich verwirren.
Du sprichst davon dass dir richtig oder falsche Temperaturen angezeigt werden, fragst aber in deinen Beispielen die Feuchtigkeit ab und nicht die Temperatur.
Außerdem überprüf mal deinen Code. Da sind z.B. bei den data-icon Attributen immer Leerzeichen hinter dem Wert. Das dürfte dir daher auch keine Icons anzeigen.
VG, Thomas
Sorry, dass mit der Temperatur war wirklich verwirrend.
Habe sowohl den Code für die Anzeige der Temperatur eines HM Thermostates, als auch die Temperatur und Humidity vom Wettermodul.
Irgendwie scheint mein Wetter Code Widget als ganzes Probleme zu machen.
Wie gesagt, wenn ich nur Teile verwende funktioniert es.
Irgendwo ist wohl ein Fehler im Code, der FTUI bzw. die Aktualisierung der Aktualisierung der Werte stört.
Werde auf jeden Fall mal die Leerzeichen entfernen. Danke für den Tipp!
Hier mal mein Wetter-Device:
<div class="left cell">
<div data-type="weather" data-device="Wetter_Yahoo"
data-get="condition" data-imageset="kleinklima" class=""
style="max-width: 150px">
</div>
<div data-type="label" class="narrow"
data-device="Wetter_Yahoo" data-get="condition">
</div>
</div>
Dankeschön für Deine Hilfe!
Ich werde jetzt stückchenweise die Widgets einpflegen und schauen womit die Probleme zusammenhängen.
Vielen Dank für den Tipp mit den Leerzeichen.
Ich hatte exakt dieses Problem und Schuld war folgende Zeile in der HTML-Datei:
<div data-type="push" data-device="HUEDevice1, HUEDevice2, HUEDevice3" data-set-on="pct 0 : transitiontime 300" data-icon="mi-timer_off" ></div>
Nach Löschen der Leerzeichen nach den Kommata zwischen den HUEDevices funktioniert bei mir der Longpoll bei den label- und weather-Widgets wieder:
<div data-type="push" data-device="HUEDevice1,HUEDevice2,HUEDevice3" data-set-on="pct 0 : transitiontime 300" data-icon="mi-timer_off" ></div>
Hallo allerseits,
und danke für den Hinweis auf die Leerzeichen.
Bei dem Problem des fehlenden refresh auf Leerzeichen in den Devices prüfen.
Hatte als device (der noch kommen soll) "FEHLT NOCH" eingetragen und bei mir wurde z.B. die Anzeige für Sonnenauf- und -untergang nicht aktualisiert.
Das Ersetzen durch "FEHLTNOCH" (also ohne Leerzeichen) hat das Problem behoben.
Vielen Dank und Gruß