NEWS
Meater Grillthermometer: Script und VIS
-
Update 04.12.2022:
Es gibt mittlerweile einen Adapter, der einige Verbesserungen enthält. Hier entlang bitte.Original-Post:
Hallo zusammen,ich habe mich mal ein wenig damit beschäftigt, mein Meater-Grillthermometer in ioBroker, bzw. VIS zu bringen. Dabei entstanden sind ein Script, das die Daten aus der Cloud abruft und in Datenpunkte speichert, sowie eine kleine und eine große Variante zur Darstellung in VIS.
Ich bin bis jetzt eigentlich ganz zufrieden damit, aber es bedarf noch einigem Feintuning. So werden die Daten einfach stumpf aller 5 Sekunden von der Cloud abgerufen, sobald das Script gestartet wird. In der endgültigen Version soll das so funktionieren, dass im "Normalbetrieb" aller 30 Sekunden abgerufen wird, sobald jedoch der Kochvorgang beginnt aller 2 Sekunden.
Ich bin mir noch nicht so sicher ob es wirklich klug ist, alle Datenpunkte zu leeren, die zuletzt nicht übertragen wurden. In meinen Tests klappte das gut, aber ab das in der Praxis so toll ist habe ich noch nicht herausgefunden. In VIS sieht das auch komisch aus, aber lieber keine Daten, als alte/falsche/eingefrorene Daten.
Versteht das bitte als ersten Wurf, den ich hier mit euch teile. Das Ziel ist später einen Adapter daraus zu machen, darin muss ich mich jedoch erstmal einlesen. Es gibt noch einiges zu tun, aber vielleicht mag ja jemand schonmal damit experimentieren. Wer mag darf auch gerne Feedback geben.
Download: bei Github
Den Code ausmeater-script.js
kopiert ihr einfach im Script-Adapter in ein neues Javascript. Ihr müsst eure Zugangsdaten für die Meater-Cloud eintragen und das Script starten, dann sollte das eigentlich auch direkt funktionieren.Im Order VIS findet ihr:
- die Widgets zum direkten Import in VIS (verwendet Material-Design-Widgets)
- CSS-Code, der einfach im CSS-Tab im VIS-Editor eingefügt wird
- das Meater-Logo, das über den Dateimanager hochgeladen werden kann
Tipp: falls ihr beim Testen keine Daten erhaltet:
- Kochvorgang mit der App starten (muss immer getan werden, sonst werden auch keine Geräte übertragen)
- Wenn dann noch nichts kommt, das Thermometer mal in warmes/heißes Wasser stellen. Bei meinem ersten Versuch hat das Erwärmen mit der Hand nicht gereicht, bei allen darauffolgenden jedoch schon (so ein Hinweis steht auch in der API-Beschreibung von Meater)
-
@hiltex Hi, hab das grade mal eingetragen... leider bekomme ich in der CSS ein paar Fehler:
expecte RBRACE at line xxx col5.--color-kachel-on-foreground: #333;
auch in den weiteren Zeilen. Ausserdem einige Warnungen auf Grund des "!important"
-
@guergen
Der Code-Editor in VIS ist nicht auf dem neusten Stand, was CSS angeht. Variablen akzeptiert er grundsätzlich nicht, obwohl das bei CSS so vorgesehen ist.Das !important ist dem geschuldet, dass ich das an andere Stelle zwingend benötige. Leider schreiben einige Widgets ihre Formatierung direkt in den Quelltext, was sich dann nur damit überschreiben lässt.
Der mitgelieferte CSS-Code ist nur ein Bruchteil dessen, was ich in meiner VIS verwende. Du kannst ihn ja an deine Bedürfnisse anpassen. Ich dachte nur, dass es dem einen oder anderen vielleicht den Einstieg erleichtern würde.
Funktionieren sollte trotzdem alles, auch wenn der Editor manche Stellen bemängelt.
-
@hiltex OK was die CSS angeht.
Allerdings habe ich den Meater in der App, musste mich neu auf der Webseite neu anmelden. Allerdings bekomme ich keine Daten.
Was fehlt noch?
Ich bekomme unter status unauthorizedEdit:
Es geht, allerdings hatte die Cloud meine Zugangsdaten vergessen und ich musste neue beantragen!Nu bekomme ich folgende Meldung im Log:
javascript.0 2022-11-04 16:59:39.317 error Script script.js.common.Gerätesteuerung.Meater is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
Und es sieht wie folgt aus:
Solltest vielleicht erwähnen, dass die Material Design-Widgets installliert sein sollten
Auch das Ändern des eingetragenen Pfades passt leider noch nicht im Script, vielleicht kannst du das noch anpassen!Dennoch: Klasse!!!
Und Danke! -
@guergen
Hast du an dem Script irgendwas geändert? Das sollte ganz sicher nicht 1000 mal pro Sekunde setState aufrufen.
Was steht denn sonst noch im Log, bezogen auf das Script?Den Hinweis auf die Material-Design-Widgets hab ich oben mit aufgenommen, wobei die Visualisierung ja jeder bauen kann, wie er will. Es handelt sich ja nicht im ein eigenes Widget, sondern eine Ansammlung von Standardwidgets. Trotzdem danke für den Hinweis.
Was genau passt bei dem Pfad bei dir nicht?
Edit: stimmt, an zwei Stellen ist der Pfad hart ins Script geschrieben. Das sollte natürlich nicht sein. -
@hiltex
Hatte das Script erst Pfadtechnisch angepasst, dann aber noch einmal Deins geladen. Sonst habe ich nur meine Passwortdaten eingetragen.Sonst steht nix in dem Log; nur die eine Zeile. Die kommt immer dann, wenn der Meater abgeschaltet hat, wenn das Gargut fertig ist.
Auch genau einmal. Etwa nach einer Minute:
Danach muss ich das Script neu starten, damit die Daten neu im Script gelesen werden können.
Falls ich danachdirekt einen neuen Messvorgang starte blinken die neuen States im Vis nur kurz auf, in den DP passiert nichts. Habe extar nen Video gemacht
Kann ich hier leider nicht hochladen -
@guergen
Es hat jetzt leider ein paar Tage gedauert, aber ich habe das Script überarbeitet.- Ich konnte die Fehlermeldung, die du erhalten hast, nicht reproduzieren, habe aber dennoch eine Ahnung, woher das kommen könnte und versucht das zu korrigieren.
- Dann habe ich die Stellen, wo der Datenpunkt-Pfad hart im Code hinterlegt war, korrigiert, sodass eine Anpassung des Pfades nun problemlos möglich sein sollte.
- Außerdem habe ich das Logging ein bisschen umgebaut -> vieles auf Debug gesetzt und ausführlicher Formuliert, woher der Fehler kommt
- Und die Rohdaten werden nun gespeichert
Ich hab nun auch ein paar Grillvorgänge ausprobiert und bei mir passt das technisch gesehen erstmal soweit.
Bei dir auch? -
@hiltex Ich werde es testen!
Ich habe zwar nicht gegrillt, aber für solche Test´s habe ich nen Wasserkocher
Sieht gut aus, die Pfade stimmen und die Javascript-Fehlermeldung war nocht nicht da!
Super Arbeit! -
@hiltex vielen Dank für das Skript!!
Mit dem Adapter WLAN-Thermo hatte ich es nicht hinbekommen.Habe das Abfrageintervall noch auf 30 sec erhöht. Nicht dass ich sonst in eine Sperre reinlaufe.
Ferner muss ich noch veruschen, den Adapter zu pausieren, solange der Meater aus ist.Grüße
Thomas -
@tklein
Wegen dem Abfrageintervall musst du dir keine Gedanken machen. Die API lässt 60 Abfragen pro Minute zu, mit einem Intervall von 2s bist du relativ sicher. -
@hiltex ok thx
-
@hiltex woran kann ich erkennen, ob das Device online ist? Wenn ein Wert im 0_userdata.0.Meater.data.devices.0.updated_at steht oder leer ist?
-
@tklein
Ja, wenn Werte vorhanden sind und werte empfangen werden, dann ist ein device online.
Im zukünftigen Adapter gibt es einen eigenen Datenpunkt dafür -
Wir eingangs angekündigt habe ich aus dem Script nun einen Adapter gebaut, der auch etliche Optimierungen enthält. Der Adapter enthält kein Widget. Der Code, den ich dem Script beigelegt hatte, funktioniert einfach so weiter, nur die Datenpunkte müssten angepasst werden.
Hier geht es zum Test-Thread im Forum: https://forum.iobroker.net/topic/60681/test-adapter-meater-v0-1-x-github