Pittini / iobroker-nodemihome

Steuerung von bisher nicht unterstützten Xiaomi Geräten in Iobroker via node-mihome
MIT License
27 stars 15 forks source link

Smartmi Fan 2S Natural Wind funktioniert nicht #35

Closed Fritzelspitze closed 3 years ago

Fritzelspitze commented 3 years ago

Wenn der Fan auf 100% steht und ich in der Xiaomi App auf Natural Wind umstelle, dreht er sofort langsamer und "pulsierend". ioBroker erkennt den Status von natural_level auch korrekt. Wenn ich aber per ioBroker den wert "natural_level" auf 1 setze, passiert nichts.

Fritzelspitze commented 3 years ago

S2 Den Fehler habe ich übrigens gerade im Log entdeckt.

Pittini commented 3 years ago

Hmm, jetzt bin ich verwirrt. In https://github.com/Pittini/iobroker-nodemihome/issues/31 heisst es, es passt, Du sagst es passt nicht. Ich hab das Gerät nicht, bin also auf Feedback angewiesen, könntet Ihr bitte mal versuchen das im Issue 31 zu klären, "Geht" und "Geht nicht" gleichzeitig kann ja nich sein. Hast Du die aktuellste Version?

Fritzelspitze commented 3 years ago

Also wenn ich in der App umschalte, zeigt mir der Adapter richtig an 0 für normaler Modus, 1 für Natural. Wenn ich aber per ioBroker von 0 auf 1 oder 1 auf 0 schalte, ändert sich zwar der Datenpunkt, der Ventilator ändert aber nichts. Auch in der App bleibt er beim dort eingestellten Modus.

Aus ioBroker sicht, siehts auch so aus, dass es funktioniert, evtl. meinte #31 das.

Ich habe am Tag der Ticketerstellung die neuste Version deines Scripts installiert.

Pittini commented 3 years ago

Versuch mal bitte in Zeile 341, aus: "natural_level": async function (obj, val) { await device[obj].setSpeedLevel(val) }, das setSpeedLevel in setSpeedMode zu ändern, denk mal das könnte der Bug sein.

Fritzelspitze commented 3 years ago

Die Funktion findet er leider gar nicht. xiaomifan

Pittini commented 3 years ago

Bin mir ziemlich sicher dasses das ist, da is aber noch was krumm glaub ich, Mach mal (nur zum testen) aus dem setSpeedMode(val) ein setSpeedMode(true) bzw. setSpeedMode(false) und gugg ob er dann umschaltet.

Pittini commented 3 years ago

Hier noch mal die ganze Zeile, ich denke könnte so klappen (das Problem ist/war das die 0 1 auf true false umgebogen werden müssen) "natural_level": async function (obj, val) { await device[obj].setSpeedMode((val == 1) ? true : false) },

Fritzelspitze commented 3 years ago

Da meckert er weiterhin, dass es die Funktion nicht gibt. In der Datei zhimi.fan.za4.js finde ich aber auch keine derartige Funktion, da gibts nur die vorher im Code stehende "setFanLevel".

Pittini commented 3 years ago

Oh Mann. Ich bezieh mich auf https://github.com/Pittini/iobroker-nodemihome/blob/main/DefinitionfilesForNode-Mihome/zhimi.fan.za4.js und da steht ab Zeile 73:

setSleepMode(v) {
    const method = v ? 'set_natural_level' : 'set_speed_level';
    const fanSpeed = this.getFanLevel();
    return this.miioCall(method, [fanSpeed]);
  }

Und da liegt vermutlich das Problem SleepMode vs. SpeedMode, klassischer Verleser, bitte mal ändern und neu testen.

Fritzelspitze commented 3 years ago

Funktioniert :)

VIELEN dank!

Pittini commented 3 years ago

Supi, dann mach ich mal zu hier.