Xiaomi Mi Smart Fan Ventilator in Home Assistant einbinden
Die Xiaomi Mi Smart Standing Fans mit App-Anbindung sind super, besonders wenn es so heiß ist wie letzte Woche. Allerdings habe ich die App nur fürs Einrichten und Einbinden des Ventilators ins WLAN genutzt. Danach habe ich unseren Ventilator mittels HACS und Xiaomi Mi Smart Pedestal Fan in Home Assistant eingebunden und in der Fritzbox die Internetverbindung des Ventilators gekappt, damit unsere Daten nicht ununterbrochen nach China gesendet werden. So sieht die Ventilator-Karte in Home Assistant aus:
Und so geht’s:
(Den Token erhalten Sie, wenn Sie den Ventilator mit der Xiaomi-Home-App eingerichtet haben, am einfachsten mit der Get Mi Home Devices Token App. Tipp: Verwenden Sie beim Einrichten des Mi-Home-Accounts nicht die Option „Mit Apple anmelden“, weil Ihnen damit die Login-Daten für die Token-App fehlen.)
configuration.yaml:
fan:
- platform: xiaomi_miio_fan
name: Ventilator
host: 192.168.x.x
token: xxxxxxxxxxxxxxxxx
🔒 Dieser Artikel ist kostenpflichtig
Einmalig 0,99 € – dauerhaft freigeschaltet auf diesem Gerät.
Artikel kaufen (0,99 €)Schon mal eine App bei mir gekauft? Artikel kostenlos freischalten…
Ähnliche Beiträge:
Kleines Designers Toolbox-Update Handmade Burger
Kommentare:
Bei den Kommentaren handelt es sich um fremde Inhalte, die sich „esse est percipi“ nicht zueigen macht. Verantwortlich für den Inhalt eines Kommentars ist der jeweilige Verfasser.
Ich habe alles gemacht, wie beschrieben. Auf der Karte sind jedoch nur die Pfeile nach rechts und links (jeweils ohne Funktion beim Klicken) zu sehen. Dann steht nur noch da, dass die ganzen Entitäten nicht gefunden werden. Müssen die noch irgendwo definiert werden?
Wäre für Hilfe sehr dankbar, habe das Ganze bestimmt jetzt 4 oder 5 mal durchprobiert.
Sind denn die separaten Dateien (input_number.yaml, switch.yaml etc.) in der config.yaml auch eingebunden?
Ist in den Entwicklerwerkzeugen/Zustände fan.ventilator sichtbar?
Ist https://github.com/syssi/xiaomi_fan korrekt installiert?
Hi,, danke für die tolle Anleitung.
Ich benutze hier den Turm Ventlator mit (dmaker.fan.p9). Das was leider nicht geht ist den Winkeln ändern und ihn zum Oscillieren zu bringen und das er den Timer akzeptiert.
In der Config benutze – platform: xiaomi_miio_fan und yamls erstellt, verlinkt und den Inhalt reinkopiert.
Irgendeine Idee zum Debuggen?
Wir haben den zhimi.fan.za4. Bei dem sind die Drehwinkel 0, 30°, 60° und 90°, und der Timer funktioniert in 60-Minuten Schritten. So ist das auch oben in der input_number.yaml angelegt, unter ventilator_winkel und ventilator_timer
Wenn diese Werte beim fan.p9 anders sein sollten (z.B. Drehwinkel 0, 20°, 40° 60°), muss man das in der input_number.yaml entsprechend anpassen, sonst werden Werte übergeben, mit denen der Ventilator nichts anfangen kann.
Viel Erfolg!
Super Anleitung. Vielen Dank
Moin.
Wo müssen denn die includes für script.yaml und input_number.yaml hin, bzw unter welcher Kategorie? Hab ewig nix mit HA gemacht und bin gerade komplett verloren.
Du könntest theoretisch alle Automationen, Scripts, input_numbers etc. in der configuration.yaml unterbringen. Aus Gründen der Übersichtlichkeit ist es aber besser, die Sachen in eigene yaml-Scripts auszulagern und diese in der configuration.yaml dann zu inkludieren.
Das sieht in der configuration.yaml dann z. B. so aus:
automation: !include automations.yaml
script: !include scripts.yaml
input_number: !include input_number.yaml
Tolle Sache!! Ich hätte die Luft- und Datenschleuder nicht gekauft ohne diese Anleitung hier. Ich habe fast alles hinbekommen, „Schwenken ein/aus“ fehlt mir noch und der „Natur“-Button sagt „unavailable“. Aber nicht so wirklich wichtig. Diese Zusatzinfo für den Timer („Countdown“) fehlt bei mir auch. Aber tnx!! Tonio
Hallo,
sehr cool was deine Automatisierung so alles kann :)
Ich habe mal das update für den Timer probiert und er funktioniert jetzt gut. Allerdings mag er bei mir die Secondary Info nicht. und hast du die Timer Changed Automatisierung vergessen? bei mir bleibt der Schieberegler auch nachdem abgeschaltet wurde noch immer auf 60
1) Man sollte im Guide erwähnen das man für die Secondary folgendes braucht: https://github.com/jcwillox/lovelace-canary
2) Für den Nature Mode Toggle nutze ich folgende Funktion (hier wird nach dem Mode geschaut und nicht ob natural_speed > 0 ist):
ventilator_natur:
friendly_name: „Natur“
value_template: “{{ state_attr(‘fan.ventilator’, ‘mode’) == ‘Nature’ }}“
turn_on:
service: xiaomi_miio_fan.fan_set_natural_mode_on
data:
entity_id: fan.ventilator
turn_off:
service: xiaomi_miio_fan.fan_set_natural_mode_off
data:
entity_id: fan.ventilator
icon_template: „mdi:leaf“
3) Die letzte Baustelle ist das Oszilieren. Ich kann zwar per Slider auf 30% stellen was auch Super funktioniert, ich kann das Oszilieren aber nicht mehr Deaktivieren. Schiebe ich den Regler auf 0% Ignoriert der Ventilator das und der Regler springt nach wenigen Sekunden wieder auf 30%.
Hier muss man in den Toggle einbauen das wenn man 0 Auswählt das Attribute „oscillating“ von true auf false gesetzt wird.
Hier ein kleiner Mod zur Secondary Info Anzeige.
Zeit > 1 Minute dann werden die Minuten Angezeigt, Zeit < als 1 Minute wird die verbleibende Zeit als Sekunden Angezeigt. Zeit = 0 wird die Secondary Info ausgeblendet.
secondary_info: |-
{% if states.fan.ventilator.attributes.delay_off_countdown > 60 %}
{{ states.fan.ventilator.attributes.delay_off_countdown | int // 60 | round(0) }} Minuten
{% elif states.fan.ventilator.attributes.delay_off_countdown > 0 %}
{{ states.fan.ventilator.attributes.delay_off_countdown }} Sekunden
{% else %}
{% endif %}
Großartige Hinweise! Es funktioniert!
Ich habe das Problem, dass ich beim Drücken von „Natur“ oder „Lautstärke“ folgende Fehlermeldung angezeigt bekomme:
'‘Failed to call service switch/turn_on. Passing coroutines is forbidden, use tasks explicitly.''
Es funktioniert dann trotzdem, aber die Pop-Up-Fehlermeldung nervt schon ein bisschen, weil sie jedes Mal kommt. Wie bekomme ich die weg?
@Pete: Das scheint an HA 2023.6 zu liegen (ich hab’s noch nicht installiert). Es gibt mittlerweile aber ein Update für die Integration „Xiaomi Mi Smart Pedestal Fan“ mit der Versionsnummer 2023.6.0.0, das sollte den Fehler beheben.
Ah, danke für den Tip @Michael !
Jetzt kommen keine Fehlermeldungen mehr.
Hi Michael,
als erstes ein dickes Lob! Klasse Anleitung und elementaren Funktionen klappen bei mir von Anfang an.
Ich habe aktuell 3 Probleme, denen ich nicht so ganz auf die Spur komme:
1. Beim Betätigen der Ventilation wird der button nicht gelb, sondern die Animation start. Ich hätte gerne beides wenn es geht aktuell kommt aber gar keine color
2. Der Natur mode lässt sich nicht aktivieren. Ich kann den Button drücken, der Smartmi reagiert auch anhand der LED ( LED geht an) aber stellt den Nature mode nicht ein. Es kommt keine Fehlermeldung. Hast du eine Idee? Wenn ich den Switch einzeln als Entity betätige funktioniert es
3. Ich habe genau das Problem wie Max Muster, wenn ich den schwenkwinkel auf „0“ stelle springt der toggle automatisch wieder auf „30“. Mir ist aber nicht ganz klar wo ich das ein fügen ,muss, Kann mir dort jemand Hilfestellung geben? ( das wenn man 0 Auswählt das Attribute „oscillating“ von true auf false gesetzt wird)
Zuletzt noch eine kleine Anmerkung. Wenn ich den Timer auf „0“ Stelle. läuft die Zeit trotzdem weiter mit deiner Änderung vom 11.6. ;-) ist das ein Fehler in meiner automation oder etwas was einfach kein usecase ist
Grüße aus der Pfalz
Problem 1&2 konnte ich lösen. In der Switchdefintion beim Natur switch fehlten klammern, komischerweise konnte ich diese trotzdem speichern und es kam kein Fehler… da ist wohl was schief gelaufen.
Desweiteren habe ich die color zufügen können mit der button card help.
Für weitere Leser die ebenfalls Farben haben wollen und genauso Anfänger sind wie ich , muss das so aussehen als Beispiel beim Natur mode:
– type: custom:button-card
entity: switch.ventilator_natur
styles:
name:
– font-size: 13px
state:
– value: ‘on’
styles:
icon:
– color: orange
alternativ geht auch RGB – color: rgb(xx,xx,xx)
Jetzt muss ich nur noch die Sache mit dem Winkel hinbekommen :-)
Danke
Hallo Gerd, ich schaue mir das mit dem Winkel nächste Woche gern mal an. Ich habe bei unseren Ventilatoren übrigens weder das Problem mit der Winkelrückstellung auf Null, noch das mit der Icon-Farbe beim Switch-Button…
Für das Ein/Ausschalten des Schwenkens habe ich folgenden switch geschrieben:
in die switch.yaml:
ventilator_oszillieren:
friendly_name: „Oszillieren“
value_template: “{{ is_state_attr(‘fan.ventilator’, ‘oscillate’, true) }}“
turn_on:
service: fan.oscillate
data:
entity_id: fan.ventilator
oscillating: True
turn_off:
service: fan.oscillate
data:
entity_id: fan.ventilator
oscillating: False
icon_template: „mdi:arrow-left-right“
in das Widget einfügen:
- entity: switch.ventilator_oszillieren
Bei unseren beiden zhimi.fan.za4 stoppt das Oszilieren automatisch, wenn der Winkel auf Null gestellt wird – aber hier die einfachste Lösung für die, bei denen das anders ist. Einfach folgendes in die Automationen einfügen:
- alias: Winkel level Zero
trigger:
platform: template
value_template: "{{ states.input_number.ventilator_winkel.state | int < 1 }}"
action:
service: fan.oscillate
data_template:
entity_id: fan.ventilator
oscillating: false
Hi,
vielen Dank für die Anleitung!
Das ist aber eine Menge Konfiguration für einen einfachen Ventilator :-) Kann man das vielleicht als Blueprint verpacken und zur Verfügung stellen? Bitte nicht als Kritik verstehen, nur als Anregung…
Viele Grüße
Christian
Da gebe ich dir völlig recht! Ich mache das seit einiger Zeit auch anders. Kurzanleitung: in der configuration.yaml unter homeassistant: diese Zeile hinzufügen:
packages: !include_dir_named packages
und dazu im Homeassistant-Verzeichnis den Ordner „packages“ erstellen. Längere Anleitung: https://www.home-assistant.io/docs/configuration/packages/
Anschließend kann man in diesen Ordner diverse Packages legen, das sind einfach yaml-Dateien, die sämtliche Automationen, Scripts, Switches usw. in einer einzigen Datei enthalten. Für den Ventilator würde man also eine Datei mit folgendem Inhalt z.B. unter dem Namen „wohnzimmer_ventilator.yaml“ im Ordner „packages“ speichern – das vereinfacht die Sache enorm:
automation:
- alias: Ventilator level change
trigger:
entity_id: input_number.ventilator_level
platform: state
action:
service: fan.set_percentage
data_template:
entity_id: fan.ventilator
percentage: '{{ states.input_number.ventilator_level.state | int }}'
- alias: Ventilator level changed
trigger:
platform: state
entity_id: fan.ventilator
action:
service: input_number.set_value
entity_id: input_number.ventilator_level
data_template:
value: '{{ states.fan.ventilator.attributes.percentage | int }}'
- alias: Winkel level change
trigger:
entity_id: input_number.ventilator_winkel
platform: state
action:
service: xiaomi_miio_fan.fan_set_oscillation_angle
data_template:
entity_id: fan.ventilator
angle: '{{ states.input_number.ventilator_winkel.state | int }}'
- alias: Winkel level changed
trigger:
platform: state
entity_id: fan.ventilator
action:
service: input_number.set_value
entity_id: input_number.ventilator_winkel
data_template:
value: '{{ states.fan.ventilator.attributes.angle | int }}'
- alias: Winkel level Zero
trigger:
platform: template
value_template: "{{ state_attr('fan.ventilator','angle') | int < 1 }}"
action:
service: fan.oscillate
data_template:
entity_id: fan.ventilator
oscillating: false
- alias: Timer level change
trigger:
entity_id: input_number.ventilator_timer
platform: state
condition:
- condition: template
value_template: "{{ states.input_number.ventilator_timer.state | int > 0 }}"
action:
- service: homeassistant.turn_on
entity_id: fan.ventilator
- service: xiaomi_miio_fan.fan_set_delay_off
data_template:
entity_id: fan.ventilator
delay_off_countdown: '{{ states.input_number.ventilator_timer.state | int }}'
- alias: Timer level Zero
trigger:
platform: template
value_template: "{{ state_attr('fan.ventilator','delay_off_countdown') | int < 1 }}"
action:
- service: homeassistant.turn_off
entity_id: fan.ventilator
- service: input_number.set_value
entity_id: input_number.ventilator_timer
data_template:
value: 0
- alias: Ventilator led change
trigger:
entity_id: input_number.ventilator_led
platform: state
action:
service: xiaomi_miio_fan.fan_set_led_brightness
data_template:
entity_id: fan.ventilator
brightness: >
{% if states.input_number.ventilator_led.state | int(0) == 2 %}
0
{% elif states.input_number.ventilator_led.state | int(0) == 0 %}
2
{% elif states.input_number.ventilator_led.state | int(0) == 1 %}
1
{% endif %}
- alias: Ventilator led changed
trigger:
platform: state
entity_id: fan.ventilator
action:
service: input_number.set_value
entity_id: input_number.ventilator_led
data_template:
value: >
{% if states.fan.ventilator.attributes.led_brightness | int(0) == 2 %}
0
{% elif states.fan.ventilator.attributes.led_brightness | int(0) == 0 %}
2
{% elif states.fan.ventilator.attributes.led_brightness | int(0) == 1 %}
1
{% endif %}
script:
ventilator_links:
sequence:
service: fan.set_direction
entity_id: fan.ventilator
data:
direction: left
ventilator_rechts:
sequence:
service: fan.set_direction
entity_id: fan.ventilator
data:
direction: right
input_number:
ventilator_level:
name: "Drehzahl"
initial: 0
min: 0
max: 100
step: 1
unit_of_measurement: "%"
icon: "mdi:weather-windy"
ventilator_winkel:
name: "Schwenken"
initial: 0
min: 0
max: 120
step: 30
unit_of_measurement: "°"
icon: "mdi:arrow-left-right"
ventilator_timer:
name: "Timer"
initial: 0
min: 0
max: 180
step: 5
unit_of_measurement: "Min."
icon: "mdi:timer-outline"
ventilator_led:
name: "LED"
initial: 0
min: 0
max: 2
step: 1
icon: "mdi:led-outline"
switch:
- platform: template
switches:
ventilator_schwenken:
friendly_name: "Schwenken"
value_template: "{{ is_state_attr('fan.ventilator', 'oscillate', true) }}"
turn_on:
service: fan.oscillate
data:
entity_id: fan.ventilator
oscillating: true
turn_off:
service: fan.oscillate
data:
entity_id: fan.ventilator
oscillating: false
icon_template: "mdi:arrow-left-right"
ventilator_kindersicherung:
friendly_name: "Kindersicherung"
value_template: "{{ is_state_attr('fan.ventilator', 'child_lock', true) }}"
turn_on:
service: xiaomi_miio_fan.fan_set_child_lock_on
data:
entity_id: fan.ventilator
turn_off:
service: xiaomi_miio_fan.fan_set_child_lock_off
data:
entity_id: fan.ventilator
icon_template: "mdi:lock-outline"
ventilator_natur:
friendly_name: "Natur"
value_template: "{{ state_attr('fan.ventilator', 'natural_speed') | float > 0 }}"
turn_on:
service: xiaomi_miio_fan.fan_set_natural_mode_on
data:
entity_id: fan.ventilator
turn_off:
service: xiaomi_miio_fan.fan_set_natural_mode_off
data:
entity_id: fan.ventilator
icon_template: "mdi:leaf"
ventilator_toene:
friendly_name: "Töne"
value_template: "{{ is_state_attr('fan.ventilator', 'buzzer', true) }}"
turn_on:
service: xiaomi_miio_fan.fan_set_buzzer_on
data:
entity_id: fan.ventilator
turn_off:
service: xiaomi_miio_fan.fan_set_buzzer_off
data:
entity_id: fan.ventilator
icon_template: "mdi:volume-high"
PS: Danach einen Neustart nicht vergessen
PPS: Blueprints kann man nur für reine Automationen oder für reine Scripts erstellen. Sobald man zusätzliche Sachen wie input_numbers oder switches etc. benötigt, funktioniert das mit den Blueprints leider nicht mehr.
Das war ja mal ‘ne prompte Reaktion – danke dafür (und generell fürs Teilen und den Support) :-)
packages: Das ist eine viel bessere Lösung, das finde ich auch. Trotzdem prangere ich an, dass HA das nicht mit Blueprints unterstützt (und zwar inkl. UI) – wie praktisch wäre es, wenn man einfach nur die ID des Ventilators eingeben und dann das UI-Element einfach einfügen könnte, und alles würde out of the box funktionieren!
Ich hab’s jetzt im Wesentlichen am Laufen, nur der Natur-Schalter scheint nicht zu funktionieren. Und mir fehlt noch ein Schalter für die Oszillation, den kriege ich aber selbst reingebastelt, denke ich.
Allerdings sehe ich im Log noch zwei Exceptions, anscheinend aber mit der gleichen Ursache – zufällig schon gesehen, die Dinger?
Exception 1:
==========
Logger: homeassistant.components.automation.ventilator_led_changed
Source: helpers/script.py:410
Integration: Automatisierung (documentation, issues)
First occurred: 10. Juli 2023 um 15:44:44 (34 occurrences)
Last logged: 11:30:27
Ventilator led changed: Error executing script. Error for call_service at pos 1: Error rendering data template: ValueError: Template error: float got invalid input ‘None’ when rendering template '{% if states.fan.xiaomi_smart_fan.attributes.led_brightness | float == 2 %} 0 {% elif states.fan.xiaomi_smart_fan.attributes.led_brightness | float == 0 %} 2 {% elif states.fan.xiaomi_smart_fan.attributes.led_brightness | float == 1 %} 1 {% endif %}' but no default was specified
Exception 2:
==========
Logger: homeassistant.components.automation.ventilator_led_changed
Source: components/automation/__init__.py:580
Integration: Automatisierung (documentation, issues)
First occurred: 10. Juli 2023 um 15:44:44 (34 occurrences)
Last logged: 11:30:27
Error while executing automation automation.ventilator_led_changed: Error rendering data template: ValueError: Template error: float got invalid input ‘None’ when rendering template '{% if states.fan.xiaomi_smart_fan.attributes.led_brightness | float == 2 %} 0 {% elif states.fan.xiaomi_smart_fan.attributes.led_brightness | float == 0 %} 2 {% elif states.fan.xiaomi_smart_fan.attributes.led_brightness | float == 1 %} 1 {% endif %}' but no default was specified
Eine verrückte Idee noch: Macht es vielleicht Sinn, Deinen Code in ein Github-Repository zu überführen? Dann hätte man immer einen konsistenten Stand… evtl. könnte man da auch bewusst mit einen Platzhalter wie {FAN_ID} arbeiten, der die Leute zwingt, ihn zu ersetzen (weil sonst nix funktioniert), aber so auch sicherstellt, dass alles funktioniert ;-)
Die Fehler konnte ich in meinen Logs nicht finden, aber ich hab’s oben in Kommentar 21 korrigiert: Statt z. B. float == 1 steht da jetzt int(0) == 1, damit ist ein default angegeben und die Exception sollte verschwunden sein.
Mit Github kenne ich mich leider gar nicht aus, ist aber grundsätzlich eine gute Idee…
Hallo zusammen,
@Michael erst einmal ein großen Dank für die Dokumentation :)
Ich als HA-Einsteiger habe jetzt auch alles soweit hinbekommen und der Artikel und die Kommentare haben mir den Einstieg enorm erleichtert.
Ein Problem besteh jedoch weiterhin:
Der Ventilator (Smartmi Standing Fan 3) scheint ab einer gewissen Zeit nach Benutzung die Netzwerkverbindung (und auch Bluetooth) zu verlieren, wodurch er nicht mehr über HA oder aber die Fernbedienung einzuschalten ist. Sobald man ihn am Gehäuse startet funktioniert alles andere auch wieder.
Jemand eine Idee, ob man da was machen kann?
@Jannis: Der Wlan-Ausfall tritt bei mir auch manchmal kurzzeitig auf – nach ca. 1 bis 2 Minuten ist der Ventilator dann wieder erreichbar. Warum das so ist, habe ich noch nicht herausgefunden.
Update: Es hat sich herausgestellt, dass das WLAN-Modul unserer neuen Fritzbox von Anfang an defekt war und immer wieder kurze Aussetzer hatte. Erst, als es vor kurzem dann komplett ausfiel, war klar, dass es nicht am Netz, sondern an der Hardware lag. Mit der neuen Fritzbox gibt es auch die Ventilator-Aussetzer nicht mehr…
Hey, ich habe alles wie in der Anleitung gemacht und alle Funktionen funktionieren auch, bis auf den Natur Modus. Wenn ich auf den Knopf drücke ändert sich leider nichts :/
Offensichtlich gibt es Unterschiede bei den Xiaomi-Ventilatoren – bei unseren beiden funktioniert der Natur-Modus mit dem Script. Aber vielleicht probiert du es mal mit dem Script aus Kommentar 10, ich hab’s hier noch mal formatiert eingefügt:
ventilator_natur:
friendly_name: "Natur"
value_template: "{{ state_attr('fan.ventilator', 'mode') == 'Nature' }}"
turn_on:
service: xiaomi_miio_fan.fan_set_natural_mode_on
data:
entity_id: fan.ventilator
turn_off:
service: xiaomi_miio_fan.fan_set_natural_mode_off
data:
entity_id: fan.ventilator
icon_template: "mdi:leaf"Damit hat es funktioniert! Danke :))
@Michael, vielen Dank für diese tolle Anleitung!
Mit Hilfe dessen konnte ich meinen XIAOMI Standing Fan 2 einbinden.
Da dies so gut funktioniert hat, habe ich mir jetzt einen zweiten Ventilator angeschafft. Und mit diesem scheitere ich nun an der korrekten Einbindung.
In der configuration.yaml habe ich beide Ventilatoren mit deren IPs, jeweiligen Token und unterschiedliche Namen eingebunden. Die Karte habe ich vom ersten Ventilator kopiert und den Namen des neuen Ventilators angegeben. Das Ein- und Ausschalten funktioniert. Wenn ich aber die Drehzahl ändere, dann reagieren beide Ventilatoren darauf, weil die gleiche Entität angeführt (input_number.ventilator_level). Kann mir Anfänger bitte jemand helfen wie ich es hinbekomme, die Entitäten für die 2 Ventilatoren zu trennen?
Andreas, du musst das Package aus Kommentar 21 ein zweites Mal anlegen (z. B. als ventilator_arbeitszimmer.yaml), und alle Vorkommen von entity_id: fan.ventilator ersetzen mit entity_id: fan.ventilator_arbeitszimmer, oder wie auch immer du den zweiten Ventilator genannt hast.
Und die switches, input_numbers und scripts musst du entsprechend umbenennen: aus z. B. ventilator_schwenken wird ventilator_arbeitszimmer_schwenken usw.
Ist ein bisschen umständlich, aber anders geht es leider nicht …
Hallo, ich habe den Mi Smart Standing Fan 2, ich konnte einiges integrieren, habe aber bei einigen davon Probleme, mal sehen, ob ihr mir helfen könnt.
- Die natürliche Brise schaltet sich ein, wenn Sie die Taste drücken, aber wenn Sie sie erneut drücken, wird sie nicht deaktiviert, um wieder auf die direkte Brise umzuschalten.
-Die Oszillation hört nicht auf, wenn ich 0% markiere, ich habe den Code aus Kommentar 19 verwendet, damit stoppt es, wenn ich 0 markiere, aber später, wenn ich einen anderen Prozentsatz markiere, bewegt es sich nicht mehr, meine Lüfterversion abgesehen von den Positionen 30, 60, 90, 120, es gibt auch die 140 und diese ist nicht abgebildet.
-Die LED-Option bewirkt in keiner der drei Positionen 0,1,2
Danke
alles Gute.
Ich bin begeistert, Xiaomi ohne Cloud!
Was ich mir noch wünsche, dass ich den Ventilator am Gerät selbst einschalte, einfach mit „on“. Und das dieser dann 45 läuft und von selbst wieder ausgeht. Ich habe mir echt einen abgebrochen, aber ich bekomme das als Automatization einfach nicht hin. :-(
Viele Grüße und viele Dank für die Xiaomi-Integration!
Tonio
@Tonio: Die Automation ist eigentlich ganz einfach. Ich würde sie dir ja schicken, aber ich befürchte, bei der E-Mail-Adresse xxx@xxx.de wird nichts ankommen ;)
Ok, next try. Mal sehen, ob ich das mit dem „ganz einfach“ dann glaube… :-)
Ich finde diese Anleitung großartig.
Vielen, vielen Dank dafür!!
Ich hätte folgende Beiträge und dann noch eine Frage.
1.
ich habe den timer auf die kompletten 10 Stunden erweitert, indem ich 180 durch 600 getauscht habe
ventilator_timer:
name: "Timer"
initial: 0
min: 0
max: 600
2.
Ich habe mehrere Ventilatoren und das von einem auf mehrere umzubauen hat mich die meiste Zeit gekostet.
Das Folgende galt es zu verstehen:
2.1.:
dass in der configuration.yaml der "name:" dann zum Entity-namen, und ein Leerzeichen der benötigte Unterstrich wird.
z.B.:
fan:
– platform: xiaomi_miio_fan
name: Ventilator A
host: 192.168.x.x
token: xxxxxxxxxxxxxxxxx
wird im Weiteren als ventilator_a verstanden
2.2.:
dass ALLES was in den *.yamls dazu in "packages" "ventilator" heißt einfach durch "ventilator_a" getauscht werden muss. Und wenn man den File Editor nutzt, kann man das in einem Rutsch mittel Suche/Ersetze oben Rechts durch die Lupe erledigen. Ohne Denken. Fehlerfrei.
Und wie schon beschrieben macht man für jeden Ventilator eine eigene ventilator_a.yaml, ventilator_b.yaml, ventilator_c.yaml…
2.3.:
dass mehrere Ventilatoren in der configuration.yaml in dieser Weise geschrieben werden (ich habe noch das model aufgenommen):
fan:
– platform: xiaomi_miio_fan
name: Ventilator A
host: 192.168.1.81
model: zhimi.fan.za5
token: 1fake6789adjaskjfdaksj1234567891
– platform: xiaomi_miio_fan
name: Ventilator B
host: 192.168.1.82
model: zhimi.fan.za5
token: 2fake6789adjaskjfdaksj1234567892
– platform: xiaomi_miio_fan
name: Ventilator C
host: 192.168.1.83
model: zhimi.fan.za4
token: 3fake6789adjaskjfdaksj1234567893
3.
Für model: zhimi.fan.za5 musste diese Zeile unter "friendly_name: „Natur“" in die *.yaml in packages (post10 in den Kommentaren):
value_template: “{{ state_attr(‘fan.ventilator_a’, ‘mode’) == ‘Nature’ }}“
Für model: zhimi.fan.za4 klappten diese beiden Zeile unter "friendly_name: „Natur“" in der *.yaml in packages:
friendly_name: "Natur"
value_template: "{{ state_attr('fan.ventilator_c', 'natural_speed') | float > 0 }}"
4. Jetzt zu meiner Frage/Bitte:
Dadurch, dass ich bis zu 10 Stunden timern möchte, wäre es großartig, wenn bei über 179 Minuten die Zeit in Stunden angezeigt wird, oder noch viel besser in „hh:mm“, aber da hat mein Herumgetüftel leider immer nur zu Fehlern geführt. Hätten Sie da einen Tipp?
Hallo Hannes, danke für die Ergänzungen/Erläuterungen. Zu deiner Frage: Mit diesem value_template erhältst du „hh:mm“ – für die Stunden werden die verbleibenden Sekunden durch 3600 geteilt, und für die Minuten durch 60:
{{ states.fan.ventilator.attributes.delay_off_countdown | int // 3600 | round(0) }}:{{ states.fan.ventilator.attributes.delay_off_countdown | int // 60 | round(0) }}
vielen Dank für Deine Antwort.
Für die Stunden funktioniert es, aber die Minuten sind ebenfalls ja die gesamte Zeit und nicht die restlichen Minuten zur nächst niedrigeren vollen Stunde. Also wenn ich 10 Stunden timer, dann wird jetzt angezeigt: 9:599…9:598…9:597…
Ich müsste also irgendwie was abziehen und da hab ich den Knoten im Hirn (weil ich das Skripten noch nicht kann).
Jetzt habe ich ChatGPT eine Weile gequält und eine grandiose Möglichkeit entdeckt, und zwar:
secondary_info: >-
{{ states.fan.ventilator.attributes.delay_off_countdown | timestamp_custom(“%H:%M:%S“, 0) }}
Dann habe ich noch eine weitere Frage. Wie und an welcher Stelle in HASS kann ich denn mit denen im Skript erstellten Entities Automationen erstellen? Ganz konkret ist es so, dass ich gerne hätte, dass immer, wenn der Ventilator eingeschaltet wird der oben genannte Timer auf 600 Minuten gestellt wird, so dass der Ventilator spätestens nach 10h ganz sicher ausgeht und man gleichzeitig auf der Tafel dann die ablaufende Zeit sieht.
Also wie übergibt man dieser Entity „input_number.ventilator_a_timer“ den Wert „36000“ im Moment des Wechselns der Entität „fan. ventilator_a“ auf „true“?
Über die Automatisierungen mit GUI geht es nicht, oder ich finde es nicht. Hättest Du da auch nochmal einen Tipp?
Ganz lieben Dank!
Grüße, Hannes
so habe ich das jetzt bei mir eingebaut:
secondary_info: >-
{% if states.fan.ventilator.attributes.delay_off_countdown > 2599 %}
{{ states.fan.ventilator.attributes.delay_off_countdown | timestamp_custom(“%H:%M:%S“, 0) }} Stunden
{% elif states.fan.ventilator.attributes.delay_off_countdown > 119 %}
{{ states.fan.ventilator.attributes.delay_off_countdown | timestamp_custom(“%M:%S“, 0) }} Minuten
{% elif states.fan.ventilator.attributes.delay_off_countdown > 59 %}
{{ states.fan.ventilator.attributes.delay_off_countdown | timestamp_custom(“%M:%S“, 0) }} Minute
{% elif states.fan.ventilator.attributes.delay_off_countdown > 1 %}
{{ states.fan.ventilator.attributes.delay_off_countdown }} Sekunden
{% elif states.fan.ventilator.attributes.delay_off_countdown > 0 %}
{{ states.fan.ventilator.attributes.delay_off_countdown }} Sekunde
{% else %} {% endif %}
Ich hab’s herausgefunden.
Automatisierungen > Erstellen > Neu
Auslöser: Zustand > fan.ventilator
Bedingung: hier bastel ich mir gleich noch rein, dass der timer null sein muss, wenn das nötig ist. Mal sehen
Aktionen: Dienst ausführen
über die drei Pünktchen auf „Als YAML bearbeiten“ umstellen
Das hier reinkopieren (und anpassen):
service: input_number.set_value
data:
value: 600
target:
entity_id: input_number.ventilator_timer
Juhu, es klappt. Einfach toll.
Nachtrag:
Ja, die Bedingung muss abgefragt werden:
Bedingung: Hinzufügen > Zustand > Entität: Timer > Zustand: 0
Vielen Dank für die tolle Anleitung
Auch wenn ich spät zur Party bin – noch einmal besten Dank!
Das Ganze funktioniert tatsächlich tadellos – alle notwendigen Anpassungen für meinen Smart Fan 3 waren hier zu finden – grandios! Vielen Dank!
Tatsächlich an dieser Stelle noch eine Frage – die Integration unterstützt auch den Akku-Status. Ich bin grad leider blank was die Umsetzung anbelangt – wenn du noch einen Tipp hast wie ich den aktuellen Akkustand anzeigen lassen kann.. es wäre erneut grandios ;)
Danke! Hans
Hallo zusammen,
ich habe HACS und die Integration „Xiaomi Mi Smart Pedestal Fan Integration“ installiert.
Dazu in der HA configuration.yaml den Ventilator ergänzt:
fan:
– platform: xiaomi_miio_fan
name: ventilator
host: xx.xx.xx.xx
token: xxxxxxxxxxxxxxxxxxxxxxxx
Ich finde aber den Ventilaor nicht unter „Gerät“.
Unter „Entwicklerwerkzeuge“ sehe ich unter Zustände die „Entität“, kann aber auch hier händisch keine Zustandsänderung erzwingen.
Token habe ich frisch extrahiert und sollte stimmen. Ich kann den Ventilator auch anpingen.
Wo könnte ich nach einem Fehler suchen?
Viele Grüße Tim
Der Ventilator ist eine Entität, deshalb wird er unter „Geräte“ nicht angezeigt. Man kann die Fan-Entität auch nicht direkt ändern, veränderbar sind nur die Attribute.
Hallo Michael,
vielen Dank für die Anleitung, leider brauche ich noch ein wenig Hilfe.
Ich habe, wie in deinem Kommentar, im Ordner „packages“ die Datei „smartmifan_1.yaml“ angelegt. In der „configuration.yaml“ steht „packages: !include_dir_named packages“
Leider scheint die von dir beschriebene Karte die Entitäten nicht zu finden, wie z.B. „input_number.ventilator_level“.
Kannst du mir auf die Sprünge helfen?
Vielen Dank im Voraus!
Grüße
Deen
Okay… Fehler gefunden. Ich dachte „homeassistant:“ steht am Anfang der Datei… falsch gedacht. Also dadrüber eingefügt – funktioniert.
Jetzt bin ich noch am Naturmode, für meinen za5 hatte Hannes folgende Zeile vorgeschlagen:
ventilator_natur:
friendly_name: „Natur“
value_template: “{{ state_attr(‘fan.ventilator_a’, ‘mode’) == ‘Nature’ }}“
Wenn ich vorhandenes value_template: “{{ state_attr(‘fan.ventilator_c’, ‘natural_speed’) | float > 0 }}“ damit ersetze, funktioniert die Karte nicht mehr.
Wenn ich könnte, würde ich meine vorherigen Nachrichten löschen oder editieren :)
Also Naturemode ist auch gefixt, lag an der „falschen“ Formatierung, wenn man copy/paste macht. Da verhaut es einem alle Anführungsstriche und Apostrophe.
Jetzt muss ich mich nurnoch an das Schwenken und den LED setzen, da springt der Slider immer wieder zurück, bzw. er hält nicht an beim Schwenken.
Zuerst mal Danke für die Anleitung. Das war wirklich eine große Hilfe. Allerdings habe ich noch 2 Fragen:
1. Ich habe den Xiaomi Smart Fan 2 Pro. In der App gibt es einen Schalter für die LED, der funktioniert auch. Die Helligkeitseinstellung mit Homeassistant hat jedoch keinerlei Wirkung. Hat da jemand eine Lösung?
2. Die Restzeit des Timers. Wenn ich die Anleitung übernehme, stimmen die Angaben für Werte größer 1h nicht, übernehme ich das Beispiel mit dem Timestamp, steht da einfach nur „loading…“
ich habe das jetzt so gelöst (allerdings sind die Angaben doch ziemlich grob, wenn die Zeit noch größer eine Stunde ist):
secondary_info: |-
{% if states.fan.ventilator.attributes.delay_off_countdown > 59 %}
{{ states.fan.ventilator.attributes.delay_off_countdown | int // 60 | round(0) }} Stunden
{% elif states.fan.ventilator.attributes.delay_off_countdown
Beim Code fehlt nach dem posten die Hälfte: secondary_info: |-
{% if states.fan.ventilator.attributes.delay_off_countdown > 59 %}
{{ states.fan.ventilator.attributes.delay_off_countdown | int // 60 | round(0) }} Stunden
{% elif states.fan.ventilator.attributes.delay_off_countdown < 60 %}
{{ states.fan.ventilator.attributes.delay_off_countdown }} Minuten
{% elif states.fan.ventilator.attributes.delay_off_countdown < 60 %}
{{ states.fan.ventilator.attributes.delay_off_countdown | int ** 60 | round(0) }} Sekunden
{% else %}
{% endif %}
Kommentar schreiben:
FAQ (Häufig gestellte Fragen)
Kommentare:
- Michael Preidel zu Pop-up Fenster sind zurück – ein bisschen
- Bock zu Pop-up Fenster sind zurück – ein bisschen
- Michael Preidel zu Pasta dell’Orto
- Stefan zu Pasta dell’Orto
- Michael Preidel zu CookieCrumble Testflight jetzt auch für macOS
- Götz zu CookieCrumble Testflight jetzt auch für macOS
Schlagwörter

