Shelly WS90 Wetterstation per BTHome über MQTT als Homie v4 in openHAB
Möchte man seine Shelly WS90 Wetterstation in openHAB integrieren, kann man dies Bequem über MQTT machen. Die openHAB Thing Autodiscovery funktioniert, dank des homie 4 Standards und das Füttern des MQTT Brokers mit den richtigen Topics übernimmt das Shelly JavaScript sbu-ws90-homie.js. So bekommt ihr super schnell alle Werte der Wetterstation in eure openHAB Installation

Features
Datenaufnahme & Dekodierung
- Liest WS90-BLE-Advertising (BTHome v2, UUID FCD2) passiv/optional aktiv.
- Decoder-Map für alle relevanten WS90-IDs (Temp, RH, Druck, Lux, UV, Taupunkt, Regen, Wind, Battery, Cap-Voltage).
Datenaufbereitung
- Wind: Trennt Durchschnitt/Böe bei Geschwindigkeit und Richtung; Gradwerte und 16-Sektoren-Textlabel (N, NNO, …) mit Kalibrierung:
- Feinjustage WIND_DIR_USER_DEG (±°) und optional invertierter Drehsinn.
- Luftdruck (QNH): Rechnet Stationsdruck mit ALTITUDE_M auf Meereshöhe (hPa) um (Barometrische Höhenformel, lapse rate 0,0065 K/m).
- Gefühlte Temperatur: „Apparent Temperature“ nach Steadman (T, RH, Wind m/s).
- Regen: 1h- und 24h-Summen (mit Persistenz)
- Ergänzt Metadaten: rssi, ts (Unix-Zeit).
Homie v4 Publishing (MQTT)
- Vollständiges Homie 4.0.0-Announce (Nodes: env, wind, rain, power, system) mit spec-konformen Property-IDs.
- Phasenweises Announce (ein Timer-Stepper) zur Broker- und Shelly Device Entlastung:
- $state=init → Header/Nodes → Property-Metas → $state=ready.
- $-Metadaten retained, QoS 0; Werte retained, QoS 1.
- Pufferung: Alle Messwerte werden bis $state=ready in einer Queue gesammelt und danach flächendeckend veröffentlicht.
Geräteverwaltung & Sicherheit
- MAC-Whitelist (colon-lower) für gezielte Erfassung; Multi-Device-fähig.
- Caching/Merging pro Gerät, damit unvollständige Frames sauber zusammenwachsen.
- Startet Announce automatisch, sobald die Shelly-MQTT-Session verbunden ist.
Stabilität & Tuning
- PHASE_GAP_MS steuerbar (Standard 200 ms) – gegen Broker-Rate-Limits.
- Defensives Handling von Regen-Zähler-Resets/Spikes.
- Klarer Trennpfad zwischen $-Metas und Messwerten (pubMeta vs. pub).
Kurz: Das Skript macht aus WS90-BLE-Beacons eine saubere, auto-discover-fähige Homie v4-Gerätestruktur für openHAB, inklusive Wind-Kalibrierung, QNH, „Feels Like“ und Regen-Rollups – robust, simpel und brokerfreundlich veröffentlicht.
Voraussetzungen
- openHAB Installation
- laufenden MQTT Broker
- Shelly / Ecowitt WS90 - 7-in-1 weather station
- Shelly BLU Gateway oder Shelly Relais mit Blu Gateway support, z.B.:
- Shelly Device mit MQTT Broker verbunden
Diese Anleitung setzt voraus, das ihr bereits die WS90 in Betrieb genommen habt und zugriff auf das Shelly Relais oder BLU Gateway habt um das Script zu installieren. Ebenfalls wird ein laufender MQTT Broker benötigt, an den openHAB auch bereits gekoppelt ist. Natürlich muss auch der Shelly in den Einstellungen bereits über MQTT verbunden sein.
Installation des Scripts
Dafür kopiert ihr einfach den Inhalt, des in meinem GitHub liegende sbu-ws90-homie.js Scripts als neues Script auf euer Shelly Device mit aktiviertem BLU Gateway. Das Script findet ihr hier:
Ihr könnt das Script via Shelly mobile App, shelly cloud via Browser oder am besten aber über das Webinterface des Shelly Devices installieren. Nach dem es gespeichert ist, startet es und aktiviert den Autostart.
Nun könnt ihr in einem ersten Step zum Beispiel mit dem MQTT Explorer prüfen ob die Werte eurer Wetterstation unter dem Topic homie/ws90-<yourmacaddress> auftauchen.
openHAB Thing & Items
Seht ihr die ersten Werte und Topics der Wetterstation im MQTT, öffnet die openHAB MainUI. Dort geht ihr unter Einstellungen --> Things und prüft dort bei der Autodiscovery ob ein neues Thing mit dem Namen ws90-<yourmacaddress> erschienen ist. Nun könnt ihr dieses einfach hinzufügen, den Thing Label nach euren Wünschen benennen und bei Channels einfach beliebige Items anlegen.
Hinweise:
- Achtet beim Anlegen der Items auf die State Description Pattern, zum Beispiel bei Temperatur habe ich gerne
%.1f %unit% - wählt euer icon aus
- und nutzt die richtigen Semantic Tags