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

zhimi.fan.za4 Mi Fan 2s Bugs #31

Closed
janhp opened this issue Jun 5, 2021 · 7 comments
Closed

zhimi.fan.za4 Mi Fan 2s Bugs #31

janhp opened this issue Jun 5, 2021 · 7 comments
Assignees
Labels
bug Something isn't working

Comments

@janhp
Copy link

janhp commented Jun 5, 2021

Hi Dev,

ich bin heute nochmals dazu gekommen den Mi Fan 2s zu testen, hierbei muss das Skript folgendermaßen angepasst ändern:

  • Angle: Wenn ich im ioBroker 30/60/90 eintrage ändert sich der Fan Speed aber nicht der Angle
  • Angle Lock funktioniert nicht (ggf. kann man das über den Datenpunkt "angle"=0 o.ä. realisieren)
  • Es fehlt die Funktion zwischen Standard und Natural zu wechseln

Danke. Lass mich gerne wissen, wenn ich etwas testen soll.

Best

@Pittini Pittini self-assigned this Jun 5, 2021
@Pittini Pittini added the bug Something isn't working label Jun 5, 2021
@Pittini
Copy link
Owner

Pittini commented Jun 5, 2021

Ok, erster Test: Bitte Zeile 314 im Skript von:

"angle_enable": async function (obj, val) { await device[obj].setSwing(val ? 'on' : 'off') },

zu

"angle_enable": async function (obj, val) { await device[obj].setSwing(val) },

ändern, das sollte der angle lock sein.

Dann Zeile 313 ändern von:

"angle": async function (obj, val) { await device[obj].setFanLevel(val) },

zu

    "angle": async function (obj, val) { await device[obj].setSwingAngle(val) },

das sollte der der Winkel sein, vermutlich nur bestimmte Werte zugelassen, Dein Versuch mit 30,60,90 sollte passen.

Standard und natural hängt iwie mit dem Speedmode zusammen, darum kümmern wir uns wenn obiges erledigt ist.

@janhp
Copy link
Author

janhp commented Jun 6, 2021

top danke! funktioniert beides. wie machen wir das nun mit "natural"?

@Pittini
Copy link
Owner

Pittini commented Jun 6, 2021

Also natural und speed hägen etwas undurchsichtig zusammen, lass uns mal folgendes probieren: Erstmal löschte den Fan aus der Objektliste, wird dann neu angeleget. Im Skript tauscht Du den ganzen Block gegen diesen:

DefineDevice[9] = { // untested
    info: {},
    model: "zhimi.fan.za4",// https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:fan:0000A005:zhimi-za4:1  
    description: "Mi Fan 2S",
    setter: {
        "power": async function (obj, val) { await device[obj].setPower(val) },
        "angle": async function (obj, val) { await device[obj].setSwingAngle(val) },
        "angle_enable": async function (obj, val) { await device[obj].setSwing(val) },
        "natural_level": async function (obj, val) { await device[obj].setSpeedLevel(val) },
        "buzzer": async function (obj, val) { await device[obj].setBuzzer(val ? 'on' : 'off') },
        "child_lock": async function (obj, val) { await device[obj].setChildLock(val ? 'on' : 'off') },
        "led_b": async function (obj, val) { await device[obj].setLcdBrightness(val) },
        "speed_level": async function (obj, val) { await device[obj].setFanLevel(val) },
        "poweroff_time": async function (obj, val) { await device[obj].setTimer(val) }
    },
    common:
        [{ name: "power", type: "boolean", role: "switch", read: true, write: true },
        { name: "angle", type: "number", read: true, write: true, min: 1, max: 120 },
        { name: "angle_enable", type: "boolean", role: "switch", read: true, write: true },
        { name: "natural_level", type: "number", read: true, write: true, min: 0, max: 1 },
        { name: "buzzer", type: "boolean", role: "switch", read: true, write: true },
        { name: "child_lock", type: "boolean", role: "switch", read: true, write: true },
        { name: "led_b", type: "boolean", role: "switch", read: true, write: true },
        { name: "speed_level", type: "number", read: true, write: true, min: 1, max: 4 },
        { name: "poweroff_time", type: "number", read: true, write: true, min: 0, max: 540, unit: "m" }]
};

Wenns so ist wie ich denke sollte speed_level die Geschwindigkeit sein, und natural_level mit 0 und 1 die Modi umschalten. Es könnte aber auch sein, dass für normal der Speedlevel genommen wird und auf 0 muß um den natural anzumachen, da mußt einfach rumprobieren, auf jeden Fall sind das die beiden relevanten Datenpunkte.

@janhp
Copy link
Author

janhp commented Jun 7, 2021

danke funktioniert. Können wir also closen

@janhp janhp closed this as completed Jun 7, 2021
@Pittini
Copy link
Owner

Pittini commented Jun 7, 2021

Und welche Variante klappt jetzt? Mit 0 und 1? Oder die andere?

@janhp
Copy link
Author

janhp commented Jun 7, 2021

mit "0" und "1"

@Pittini
Copy link
Owner

Pittini commented Jun 29, 2021

Hi, könntest Du Dir bitte mal #35 ansehen und evtl. was dazu sagen? Wäre nett, weil ich grad nich weis was jetzt stimmt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants