In Zigbee2MQTT, go to Settings, Advanced, ZigBee Channel.

In Zigbee2MQTT, go to Settings, Advanced, ZigBee Channel.
The firmware update is done in just a few minutes. Connect the Conbee II to your PC, install the deCONZ software, download the latest firmware and use the command line tool to flash it.
deCONZ: http://deconz.dresden-elektronik.de/ubuntu/stable/
Firmware: http://deconz.dresden-elektronik.de/deconz-firmware/
Handy script, to put Ikea Bulbs into pairing mode by using a Zigbee Switch: https://community.home-assistant.io/t/handy-script-to-reset-ikea-tradfri-bulb/435622
Just go to Settings -> Automations -> Scripts and paste the following YAML script:
alias: Reset IKEA bulb with Switch
sequence:
- repeat:
count: "5"
sequence:
- service: switch.turn_off
data: {}
target:
entity_id: "{{ smart_plug }}"
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 900
- service: switch.turn_on
data: {}
target:
entity_id: "{{ smart_plug }}"
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 500
variables:
smart_plug: switch.REPLACE_SWITCH_NAME
mode: single
Now just insert your light bulb with a light socket into the plug and run the script.
To use the script with other bulbs, just adjust the counter and seconds to your needs, e.g. like here for Ledvance bulbs:
alias: Reset Ledvance Gardenpole with Switch
sequence:
- repeat:
count: "5"
sequence:
- service: switch.turn_off
data: {}
target:
entity_id: "{{ smart_plug }}"
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- service: switch.turn_on
data: {}
target:
entity_id: "{{ smart_plug }}"
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
variables:
smart_plug: switch.REPLACE_SWITCH_NAME
mode: single
Simple and handy card, to display devices/entities of a specific type. Thanks to this card, it is no longer necessary to add new battery devices manually.
https://github.com/thomasloven/lovelace-auto-entities
type: custom:auto-entities
card:
show_header_toggle: false
title: Battery status
type: entities
state_color: true
filter:
include:
- attributes:
device_class: battery
state: <= 100
exclude:
- name: /MI/
- name: /Redmi/
- name: /T550/
sort:
method: state
numeric: true
Vor kurzem haben wir uns eine Klimaanlage zugelegt. Diese nutzen wir zum Heizen und Kühlen unseres Büros. Dabei handelt es sich um dieses Gerät der Marke Midea (in DE vor allem als Comfee vermarktet).
Der schlimmste Teil der Installation war wie so häufig nicht die Montage, sondern die Einrichtung des Innengerätes über die App. Um das Gerät in das lokale Wifi zu bringen, muss man sich mit einem Access Point des Gerätes verbinden und dann in der App eine Einrichtung durchlaufen. Nach mehreren gescheiterten Versuchen mit einem Android Telefon, habe ich dann zu einem iPhone gegriffen. Hiermit klappte die Einrichtung erheblich besser! Obwohl das Gerät dann im lokalen Netz erreichbar ist, erfolgt die Steuerung dann über eine Cloud… mit entsprechend langsamen Reaktionszeiten. Meiner Meinung nach quasi unbenutzbar.
Um das Gerät ohne großes manuelles Zutun betreiben zu können (also ohne App oder Fernbindung), habe ich daher nach einer entsprechenden Home Assistant Integration gesucht.
Also erstes stieß ich auf diese: https://github.com/nbogojevic/homeassistant-midea-air-appliances-lan
So ganz habe ich dabei nicht verstanden, ob die Integration nun lokal oder via der Cloud steuert. Zumindest musste man beim Einrichtung seine Cloud Zugangsdaten angeben und darüber wird dann das lokale Gerät ermittelt. Beim Testen fiel mir auf, dass sobald man diese Integration nutzte, das Gerät nicht mehr über die App steuerbar war (und umgekehrt). Der Grund ist, dass man den gleichen Zugang nicht auf zwei verschiedenen Geräten nutzen kann. Nach einer Einrichtung eines zweiten Accounts trat das Problem nicht mehr auf und man konnte beides parallel nutzen.
So richtig zuverlässig funktionierte das Ein- oder Ausschalten des Gerätes bei mir jedoch nicht. Ggf. weil die Befehle auch über die Cloud liefen und nicht lokal!?
Auch die Entities der Integration schienen für die Klimaanlage nicht vollständig zu sein. Insgesamt schien die Integration eher für anderen Midea Gerätetypen geeignet zu sein, als Klimaanlagen.
Darauf hin habe ich mir diese Integration angeschaut und bin aktuell auch bei dieser geblieben: https://github.com/georgezhao2010/midea_ac_lan
Die Integration bietet die Möglichkeit, selber die entsprechen Sensoren und Controls zu aktivieren. Man muss also durch Trial-and-Error herausfinden, welche von dem eigenen Gerät unterstützt bzw. publiziert werden
oder in den Developer Tools nach der zugehörigen Climate Entity suchen und sich die Werte anschauen.
Nach etwas herumprobieren, bin ich bei dieser Auswahl geblieben.
Leider funktioniert die Realtime Power nicht, aber immerhin der Gesamtverbrauch. Ich habe daher noch eine Zigbee Steckdose mit Strommessung davor geschaltet, um den Verbrauch in Echtzeit zu überwachen. Außerdem konnte ich die Indoor und Outdoor Temperature Werte noch nicht wirklich nachvollziehen. Sie verändern sich m.M.n. recht merkwürdig. In der vorherigen Integration wurden hier irgendwie genauere Werte angezeigt. Jemand hat dazu auch bereits ein Issue aufgemacht.
Eine entsprechende Thermostat Card wird auch direkt auf dem Dashboard erzeugt.
Eine etwas schönere Anzeige bekommt man mit der Simple Thermostat Card:
type: custom:simple-thermostat
entity: climate.146235046568457_climate
step_size: 1
sensors:
- entity: sensor.lumi_lumi_weather_temperature
name: Büro
header: {}
layout:
mode:
icons: true
names: true
Der wirklich interessante Teil ist dann natürlich erst durch Automationen zu verwirklichen. Ich lasse die Klimaanlage z.B. automatisiert bei entsprechenden Uhrzeiten und Temperaturen einschalten. Oder auch, wenn z.B. grade ausreichend Strom von dem Balkonkraftwerk erzeugt wird. Und natürlich wird sie automatisch ausgeschaltet, wenn alle das Haus verlassen.
Insgesamt funktioniert die Integration nun seit einigen Wochen sehr zuverlässig.
Update 08.07.2024: In diesen Reddit Thread wird mehrfach erwähnt, dass man ggf. auch den Wi-Fi-Stick mit einer ESP basierten Lösung ersetzten kann, wie z.B. dieser hier. Das werde ich aber erst testen, wenn es mit der aktuellen Lösung zu Problemen kommt.
Update 10.01.2025: Mit dem Update von HA auf Version 2025.1.2 funktioniert die Integration https://github.com/georgezhao2010/midea_ac_lan nicht mehr. Anscheinend pflegt der Maintainer dieser nicht mehr. Zum Glück führt jemand die Entwicklung in diesem Fork weiter: https://github.com/wuwentao/midea_ac_lan. Damit auch alle Sensoren wieder angezeigt werden, musste ich nach Installation und HA Restart noch in der Integration bei dem Midea Gerät ein “Reload” durchführen.
There are different ways to realize presence detection in Home Assistant:
https://www.home-assistant.io/getting-started/presence-detection/
As I have a FritzBox at home, I’m using the AVM FRITZ!Box Tools Integration, which has “presence detection by looking at connected devices”.
You can find your devices using the developer tools and looking for the device_tracker
entity. I then use the devices in a group to easily check if anyone is home.
/config/groups.yaml
family:
- device_tracker.xiaomiredminote8pro
- device_tracker.xioamimi8
Update 19.04.2024: Instead of a group, you could also use the zone.home
entity and check if its numeric value is 0 (not_home) or above 0 (home) in your automations. The zone.home
entity relates to the person and the device that belong to a person, that you can configure under Settings → People → Select a Person → Select the devices that belong to this person.
HACS Integration: https://github.com/mampfes/hacs_waste_collection_schedule
Die Integration bietet eine custom component für die AWSH. Nach Angabe von Ort und Straße bekommt man hier für alle Abfallbehälterarten die entsprechenden Termine zurück. Man muss daher noch die relevanten für sich heraussuchen. Diese kann man unter customize
dann angeben und zusätzlich mit einem alias und einem icon versehen.
# Waste Collection Schedule
waste_collection_schedule:
sources:
# Integrated Service Provider for AWSH
- name: awsh_de
args:
city: Ammersbek
street: Frahmredder
customize:
# my waste types I ordered
- type: Restabfall 40L-240L(2-wöchentlich)
alias: restabfall
icon: mdi:trash-can
- type: Bioabfall(2-wöchentlich)
alias: bioabfall
icon: mdi:leaf-circle
- type: Wertstoff/LVP(2-wöchentlich)
alias: wertstoff
icon: mdi:recycle
- type: Papiertonne(monatlich)
alias: papier
icon: mdi:trash-can
Alternativ bekommt man hier den Link zu einer .ics Kalenderdatei. Man kann vorher die für sich relevanten Abfallbehälter auswählen. Die .ics kann ebenfalls direkt eingebunden werden (siehe hier)
# Waste Collection Schedule
waste_collection_schedule:
sources:
# ICS
- name: ics
args:
url: https://www.awsh.de/api_v2/collection_dates/1/ort/XXX/strasse/XXX/hausnummern/0/abfallarten/R02-B02-D02-P04/kalender.ics
Nach einem Reboot kann man nun im Home Assistant Kalender seine Abholtermine einsehen.
Im nächsten Schritt definiert man sich noch seine Sensoren je Abfallart.
sensor:
- platform: waste_collection_schedule
name: Restabfall
value_template: 'in {{value.daysTo}} Tag(en)'
types:
- restabfall
- platform: waste_collection_schedule
name: Bio
value_template: 'in {{value.daysTo}} Tag(en)'
types:
- bioabfall
- platform: waste_collection_schedule
name: Wertstoff
value_template: 'in {{value.daysTo}} Tag(en)'
types:
- wertstoff
- platform: waste_collection_schedule
name: Papier
value_template: 'in {{value.daysTo}} Tag(en)'
types:
- papier
Die Sensoren kann man dann zu seinem Dashboard hinzufügen und bei Bedarf auch noch umbenennen. So sieht es bei mir dann aus:
Für eine Button-card habe ich mir noch einen weiteren Sensor angelegt. Diesem Sensor einfach alle Abfallarten zuordnen.
# Used with custom:button-card
- platform: waste_collection_schedule
name: wasteButton
count: 4
value_template: '{{value.types|join(", ")}}|{{value.daysTo}}|{{value.date.strftime("%d.%m.%Y")}}|{{value.date.strftime("%a")}}'
types:
- Restabfall
- Bioabfall
- Wertstoff
- Papier
Die Button-card dann noch befüllen mit:
type: custom:button-card
entity: sensor.wastebutton
layout: icon_name_state2nd
show_label: true
label: |
[[[
var days_to = entity.state.split("|")[1]
if (days_to == 0)
{ return "War heute" }
else if (days_to == 1)
{ return "Heute Abend raus" }
else
{ return "in " + days_to + " Tagen" }
]]]
show_name: true
name: |
[[[
return entity.state.split("|")[0]
]]]
state:
- color: red
operator: template
value: '[[[ return entity.state.split("|")[1] == 0 ]]]'
- color: orange
operator: template
value: '[[[ return entity.state.split("|")[1] == 1 ]]]'
- value: default
Um immer die Anzahl der Tage bis zum nächsten Abholtermin zu kennen, am besten noch einen weiteren Sensor anlegen und diesem wieder alle Abfallarten zuordnen.
# Sensor for upcoming waste. Used in my reminder automation
- platform: waste_collection_schedule
name: upcomingWaste
value_template: "{{value.daysTo}}"
types:
- Restabfall
- Bioabfall
- Wertstoff
- Papier
Dieser kann dann in einer Erinnerungsautomatisierung verwendet werden, welche z.b. eine Notification am Vortag um 19Uhr verschickt.
alias: Abfall Erinnerung
description: ""
trigger:
- platform: time
at: "19:00:00"
condition:
- condition: state
state: "1"
entity_id: sensor.upcomingwaste
action:
- service: notify.family
data:
message: >-
Müll rausbringen: {{ states.sensor.upcomingwaste.attributes.values() |
first |
replace("restabfall","Restmüll") |
replace("wertstoff","Wertstoff") |
replace("bio","Bio") |
replace("papier","Papier") }}
data:
actions:
- action: YES_TRASHCAN_IS_OUTSIDE
title: Ja, ist rausgestellt!
tag: trashcan_done
mode: single
Die Notification beinhaltet eine Bestätigungsmöglichkeit. Hat jemand die Tonne herausgestellt, kann dieser darüber dies einfach kurz bestätigen und mit einer zweiten Automatisierung kann man die Benachrichtigung dann bei anderen verschwinden lassen. Mehr dazu hier.
alias: Abfall Erinnerung - cleared
description: ""
trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: YES_TRASHCAN_IS_OUTSIDE
condition: []
action:
- service: notify.family
data:
message: clear_notification
data:
tag: trashcan_done
mode: single
Ein tolles Beispiel für eine schöne Dashboard-Karte findet man hier.
Dafür müssen jedoch noch ein paar weitere Sensoren hinzugefügt werden, wie es hier ebenfalls beschrieben ist.
Notify Groups are useful to send notifications to a group of devices or even to different channels like Home Assistant Companion App, Telegram, Signal etc.
https://www.home-assistant.io/integrations/group/#notify-groups
I’m using it to create a group of Android Devices I want to send notifications to via the Companion App.
# Notify Groups
notify:
- platform: group
name: "family"
services:
- service: mobile_app_mi_8
- service: mobile_app_redmi_note_8_pro
After that, go to Developer Tools and reload the Notify Services.
Now you should find a new notify service called “family” which can be used in automations.
Wurde der Stromzähler in den letzten Jahren getauscht, solltet ihr eine moderne Messeinrichtung haben, welche eine Infrarot (IR) Schnittstelle für das Auslesen von Daten anbietet. Dazu gibt es bereits eine große Anzahl an Anleitungen, z. B. hier und hier. Daher nur kurz zusammengefasst, welche Schritte notwendig waren für meinen LOGAREX LK13BE803049 (Baujahr 2018).
Stromzähler vorbereiten
Um Zugriff auf alle Daten, die der Stromzähler so sammelt zu bekommen, benötigt man eine PIN. Diese PIN kann man über das Online-Portal des Messstellenbetreibers herausfinden, alternativ geht das auch via Hotline oder Mail. Hat man seine PIN, am besten in der Anleitung nachschlagen, wie die PIN eingeben (Seite 6) und wie der “vollständiger Datensatz” (Seite 8) aktiviert wird. Ansonsten bekommt man nur einen Bruchteil der vorhanden Daten zurück.
IR Lese-Schreibkopf
Kann man selber basteln für wenige Euro oder alternativ fertig kaufen. Ich habe diesen (WIFI lese-schreib-Kopf EHZ Volkszähler Hichi Smartmeter) gekauft, da hier ein ESP32 dabei ist und dieser sogar bereits mit Tasmota geflasht wurde. Um Abstürze im Betrieb zu verhindern, darauf achten, dass das Netzteil der Micro-USB Stromversorgung genug Leistung hat. Ist die Stromversorgung sichergestellt, mittels Smartphone mit dem vom ESP32 geöffneten Access Point verbinden und die WLAN Daten des Heimnetzes im Tasmota Webinterface eingeben (sollte sich automatisch öffnen nach der AP Verbindung). Nun kann das ganze Teil mithilfe des Magneten am Stromzähler über der IR Schnittstelle (Optische Datenschnittstelle D0) angebracht werden. Im Idealfall hat man dafür noch eine freie Steckdose in der Nähe des Stromzählers.
Script anlegen in Tasmota
Erneut das Tasmota Webinterface aufrufen, am besten diesmal vom Desktop PC, und über den Button Consoles zu Edit Script navigieren. Dort müssen nun einige Zeilen eingetragen werden, die sich je nach Stromzähler unterscheiden können. Eine Übersicht der möglichen Werte des LOGAREX Zählers findet ihr in der Anleitung auf Seite 10. Bei mir sah das Ergebnis dann so aus:
>D
>B
=>sensor53 r
>M 1
+1,3,o,0,9600,LOGAREX
1,1-0:1.8.0*255(@1,BEZUG,KWh,total_in,4
1,1-0:2.8.0*255(@1,EINSPEISUNG,KWh,total_out,4
1,1-0:16.7.0*255(@1,Verbrauch aktuell,W,current,16
1,1-0:1.8.0*96(@1,letzter Tag,KWh,total_day,1
1,1-0:1.8.0*97(@1,letzte Woche,KWh,total_week,1
1,1-0:1.8.0*98(@1,letzter Monat,KWh,total_month,1
1,1-0:1.8.0*99(@1,letztes Jahr,KWh,total_year,1
#
Home Assistant
Via MQTT und Tasmota Integration können die Werte direkt an Home Asisstant übertragen werden und z.B. im Energy Dashboard verwendet werden. Dafür einfach die Schritte unter 4b von dieser Anleitung umsetzten. Falls MQTT auf eurem Home Assistant noch nicht eingerichtet ist, müsst ihr das noch tun. Dafür gibt es auch einen Haufen Anleitungen oder Videos. Am besten einfach eine recht aktuelle Anleitung heraussuchen. Bei der Einrichtung legt ihr auch einen separaten User für MQTT an, welchen ihr dann angeben müsst in Tasmota. So sah es bei mir dann aus.
In der Tasmota Integration in Home Assistant wurde das Device mit entsprechen Entitäten direkt gefunden.
Da die Werte jedoch ohne Einheit übertragen werden, muss diese noch händisch in der configuration.yaml
gepflegt werden. Wenn ich mich recht erinnere, ist danach ein Neustart von Home Assistent erforderlich.
# Tasmota Stromzähler
homeassistant:
customize:
sensor.tasmota_logarex_total_in:
device_class: energy
unit_of_measurement: "kWh"
state_class: total_increasing
sensor.tasmota_logarex_total_out:
device_class: energy
unit_of_measurement: "kWh"
state_class: total_increasing
sensor.tasmota_logarex_current:
device_class: power
unit_of_measurement: "W"
sensor.tasmota_logarex_total_day:
device_class: energy
unit_of_measurement: "kWh"
state_class: total_increasing
sensor.tasmota_logarex_total_week:
device_class: energy
unit_of_measurement: "kWh"
state_class: total_increasing
sensor.tasmota_logarex_total_month:
device_class: energy
unit_of_measurement: "kWh"
state_class: total_increasing
sensor.tasmota_logarex_total_year:
device_class: energy
unit_of_measurement: "kWh"
state_class: total_increasing
So sieht die Anzeige der Sensoren direkt etwas brauchbarer aus. 🙂
Die schöne Energieverteilungsanzeige vom Energy Dashboard kann auch in jedem anderen Dashboard verwendet werden via:
type: energy-distribution
link_dashboard: true
Einen Überblick der weiteren Energy Cards findet man hier.
Im Energy Dashboard kann auch ein Preis für die kWh hinterlegt werden. So sieht man direkt seinen Verbrauch für ausgewählte Zeiträume. Hier mal ein extremes Beispiel, an dem wir den ganzen Tag Äpfel eingekocht und Kuchen gebacken haben. So ein Verbrauch ist bei uns natürlich nicht die Regel. 🙂
Für mein Smartphone Dashboard habe ich dann noch die neue Statictics Card genutzt, um einen noch einfacheren Einblick in meine laufenden Kosten zu bekommen. Die Anordnung erfolgt durch eine Grid Card.
square: false
columns: 2
type: grid
cards:
- type: statistic
entity: sensor.tasmota_logarex_total_in_cost
period:
calendar:
period: day
stat_type: change
name: Kosten heute
- type: statistic
entity: sensor.tasmota_logarex_total_in_cost
period:
calendar:
period: day
offset: -1
stat_type: change
name: Kosten gestern
This automation is triggered when a window stays open for >10 minutes. It will then send a reminder every 10 minutes (max 6 times).
This post helped me to create this script.
alias: Open window reminder
description: ''
trigger:
- platform: state
entity_id: binary_sensor.lumi_lumi_sensor_magnet_aq2_xxx_on_off
from: 'off'
to: 'on'
for:
hours: 0
minutes: 10
seconds: 0
condition: []
action:
- repeat:
while:
- condition: state
entity_id: binary_sensor.lumi_lumi_sensor_magnet_aq2_xxx_on_off
state: 'on'
- condition: template
value_template: '{{ repeat.index <= 6 }}'
sequence:
- variables:
counter: '{{ repeat.index * 10 }}'
- service: telegram_bot.send_message
data:
message: Window is open for {{ counter }} minutes
- delay: '00:10:00'
mode: single