Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bitte Unterstützung für deerma.humidifier.jsq4 hinzufügen #50

Closed
daniel89fhem opened this issue Dec 1, 2021 · 7 comments
Closed
Assignees
Labels
enhancement New feature or request

Comments

@daniel89fhem
Copy link

Hi Pittini,

kannst du bitte die Unterstützung für den Luftbefeuchter XIAOMI Mijia CJSJSQ01DY Pure Evaporation (lt. deinem Script kommt das Modell deerma.humidifier.jsq4) hinzufügen?

In der App gibt es folgende Punkte:
Ein / Aus
Level 1 / Level 2 / Humidify
Im Modus Humidity kann der Zielwert von 40 bis 70% stufenlos eingestellt werden
Sheduled On / Off (damit kann man eine "Zeitschaltuhr" einstellen, nach der der Befeuchter Ein / Ausgeschaltet werden kann - wird also nicht benötigt)
Licht Ein / Aus
Sound Ein / Aus

Umgebungstemperatur und Luftfeuchtigkeit können ausgelesen werden. Wenn der Tank leer ist, gibt es eine Push-Benachrichtigung (ebenso wenn der Tank angehoben wird)

Wenn du noch weitere Informationen von mir brauchst, bitte einfach Bekannt geben.

Danke dir schonmal

@Pittini Pittini self-assigned this Dec 2, 2021
@Pittini Pittini added the enhancement New feature or request label Dec 2, 2021
@Pittini
Copy link
Owner

Pittini commented Dec 2, 2021

Ich hab Dein "kannst Du mal..." zum Anlass genommen die schon länger geplante Anleitung für "Kannste mal" zu schreiben, damit ich das nicht jeden aufs neue hier schreibe. Schau doch bitte mal in die Develop Branch auf Git. Dort liegt Skript in neuer Version, passende Def Datei und ne Anleitung, schau doch bitte ob Du damit klar kommst und gib Feedback.

@daniel89fhem
Copy link
Author

Danke dir für die rasche Bearbeitung.

Ich habe mir deine ganzen Infos mal angesehen und auch den Test durchgeführt.
Dabei konnte ich von iobroker aus den Luftbefeuchter Ein und Ausschalten. In der App wurde das auch angezeigt.
Umgekehrt ging das leider nicht. Also wenn ich in der App Ein und Ausschalte, dann wurde der Datenpunkt in iobroker nicht aktualisiert.

Ich hatte mir dann einen anderen Luftbefeuchter im Script als auch in der def Datei angesehen und dort ist mir aufgefallen, dass das wohl mit getPower funktionieren sollte. Leider klappte das bei mir nicht. Im Gegenteil, sobald ich diese Funktion in die def Datei geschrieben habe, kam ein Fehler im Javascript Adapter, dass das modul "node-mihome" nicht gefunden wurde und folgende Fehlermeldung:

javascript.0 (2410) script.js.Xiaomi: TypeError: Cannot read property 'miioProtocol' of undefined

Ich habe aber trotzdem schon versucht, die 3 Arbeitsfunktionen hinzuzufügen. Also Lüfterstufe 1, Lüfterstufe 2 und automatisch nach Luftfeuchtigkeit. Das hat dann auch funktioniert. Also ich konnte im iobroker den Datenpunkt fan-level ändern und dass wurde dann auch in der app angezeigt. Umgekehrt ging das wie oben bei power leider auch nicht.

Dann wollte ich noch die Temperatur und die Luftfeuchtigkeit anzeigen lassen. Auch das klappte leider nicht.

Ich hab dir mal den Script-Code angehängt, sowie die Def-Datei1, die funktioniert, aber keine Rückmeldung aus der App gibt. Und die Def-Datei2, mit der ich das Problem beheben wollte (durch vergleichen mit einem anderen Luftbefeuchter), aber nach dem Start des Javascript-Adapters fehler kommen

Bin gespannt, was ich hier alles verbrochen habe :D

Def_Datei2.txt
Script_Teil.txt
Def_Datei1.txt

@Pittini
Copy link
Owner

Pittini commented Dec 3, 2021

Soo habs Dir mal fertig gemacht wie ich denke dasses passen müßte. Bitte Def Datei und Skript neu vom Def Branch holen, und sicherheitshalber den angelegten Objektbaum komplett löschen (wird autom. neu angelegt)

Zu Deinen Versuchen/Fragen:

  1. Alle "get" Funktionen in den Def Dateien werden vom Skript NICHT genutzt, ich hol mir gleich das ganze Objekt. Jede Änderung an den "get" Funktionen sind also zwingend wirkungslos.
  2. Wenn steuern klappt, aber scheinbar keine Daten kommen, kann das mehrere Ursachen haben. Zum einen wird nur alle 10sek refresht, solange solltest also immer warten. Zum anderen hab ich jetzt schon öfters gehört, dasses mit der App Anmeldung Kollisionen geben soll (ich hatte das Problem allerdings noch nie), also meld Dich mal sicherheitshalber von der App ab.

@daniel89fhem
Copy link
Author

Wow, dankeschön für die schnelle Rückmeldung

Was soll ich sagen: Script und def Datei aus der developer branch reinkopiert, Baum gelöscht, Javascript Adapter neu gestartet und? => ALLES FUNKTIONIERTE SOFORT. DANKE dir vielmals :)

Nun funktioniert auch alles in beide Richtungen.

Einen letzten Punkt habe ich noch, dieser hat aber nichts mit diesem Gerät zu tun denke ich.
Ich bekomme in unregelmäßigen Abständen einen Timeout error vom Script im Javascript Adapter.
Hier die Meldungen:
`

javascript.0 2021-12-03 15:14:49.125 error FetchError: network timeout at: https://api.io.mi.com/app/home/device_list at Timeout. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-fetch/lib/index.js:1476:13) at listOnTimeout (internal/timers.js:557:17) at processTimers (internal/timers.js:500:7)
javascript.0 2021-12-03 15:14:49.125 error Error: network timeout at: https://api.io.mi.com/app/home/device_list
javascript.0 2021-12-03 15:14:49.123 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.

Es funktioniert aber weiterhin die Kommunikation in beide Richtungen. Weißt du, was hier die Fehlermeldung verursacht?`

@Pittini
Copy link
Owner

Pittini commented Dec 3, 2021

Prima wenn alles klappt. Bitte alles mal durchtesten und dann freigeben, dann gehts in die Main Branch. Die Fehlermeldung kommt ab und an (auch bei mir), kannste soweit ignorieren. Is ne Art connection timeout zu xiaomi, passiert scheinbar wenn im Netz bei Xiaomi viel los ist.

@daniel89fhem
Copy link
Author

daniel89fhem commented Dec 4, 2021

Also ich habe heute noch einmal alles getestet. Auch die leere Tankmeldung. Alles hat funktioniert.
Kann von mir aus gerne in die Main Branch landen.

An dieser Stelle noch einmal ein fettes DANKE an dich :)

Bezüglich der Fehlermeldung: Ok, gut zu wissen. Wahrscheinlich kann man das im Script nicht irgendwie berücksichtigen, damit da kein Fehler mehr kommt oder? Bei mir kam diese Meldung manchmal im Minutentakt. Dann wieder längere Zeit nicht usw. Aber das müllt halt das logfile unnötig zu. Daher die Frage

@Pittini
Copy link
Owner

Pittini commented Dec 4, 2021

Wahrscheinlich kann man das im Script nicht irgendwie berücksichtigen, damit da kein Fehler mehr kommt oder?

So isses, weil die Meldung gar nicht vom Skript kommt, sondern von der node-mihome.

Nachdem alles passt, mach ich hier dann mal zu und wünsche viel Spaß.

@Pittini Pittini closed this as completed Dec 4, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants