Info: Shelly H&T und MQTT und FHEM

Begonnen von c2j2, 29 Dezember 2018, 21:45:54

Vorheriges Thema - Nächstes Thema

c2j2

Ich stand gestern vor der "Aufgabe", den Temp-Feuchte-Sensor Shelly H&T in FHEM einzubinden, um seine Daten (Temperatur, Feuchte, Batterieladung) als Readings auslesen zu können. Ich wollte das mal für die Nachwelt (und mich, wenn ich es nicht mehr weiß) verewigen.

Wenn man weiß, wie's geht, ist es trivial, aber ich hatte nichts gefunden:

Jobs also:

MQTT installieren, falls nötig

Man muß man einen MQTT broker installiert und im FHEM eingerichtet haben.

Ich hatte noch keinen, aber OK, der Raspi hat noch Platz, also rücken alle anderen Tasks etwas beiseite und es wird der Broker gemäß https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung eingerichtet (der externe Broker, da ich mein FHEM schon eine Weile nicht mehr updated habe, never change a running system - aber wer up to date ist, kann auch den eingebauten von FHEM nehmen).

Das ist eine Sache von 5-10 Minuten.

Den Shelly-Sensor-Client einrichten.

Ich nehme jetzt an, dass der Client schon im lokalen WLAN erreichbar ist, also entsprechend dessen Konfigurationsoberfläche im Browser im lokalen WLAN erreichbar ist. Dazu hat es den kleinen Freßzettel für Kurzsichtige. Das geht ohne App, auf der Rückseite steht das schön beschrieben - wenn man das lesen kann.

Dann

1) bei dem Device MQTT aktivieren in den "Advanced Developer Settings"

2) Einrichten in FHEM:

Zitat
define HTSensor01 MQTT_DEVICE
attr HTSensor01 IODev myMQTTBroker
attr HTSensor01 autoSubscribeReadings shellies/shellyht-9ABCDE/sensor/+

3) myMQTTBroker muß natürlich der Broker von oben sein.

4) die ID "shellyht-9ABCDE" muß natürlich entsprechend der eingestellt werden, die die Shelly-Oberfläche unter z.B. "Will" anzeigt

Und siehe da, man drücke mal kurz auf den Switch am Device, und ein paar Sekunden später sind die Readings da.

Nachteil der MQTT-Methode: der Sensor ist nicht mehr über die Cloud abfragbar (meldet zumindest die Konfiguration, wenn man MQTT einstellt bei der Shelly-Device-Einrichtung).

rudolfkoenig

Alternative zu externen MQTT-Server (aka Broker):
define m2s MQTT2_SERVER 1883Das dazugehoerige MQTT2_DEVICE samt Readings sollte automatisch angelegt werden.

c2j2

is' ja geil... vielleicht sollte ich tatsächlich mal irgendwann updaten...

Danke für die Ergänzung  :D

tomleitner

Hab ich auch seit 2 Tagen laufen mit MQTT2 ... hier meine Definition:

define Sensor_Arbeitszimmer_Tom MQTT2_DEVICE shellyht_22C551
attr Sensor_Arbeitszimmer_Tom IODev MQTT2_Server
attr Sensor_Arbeitszimmer_Tom group Sensoren
attr Sensor_Arbeitszimmer_Tom icon temp_temperature
attr Sensor_Arbeitszimmer_Tom readingList shellyht_22C551:shellies/announce:.* { json2nameValue($EVENT, 'announce_', $JSONMAP) }\
shellyht_22C551:shellies/shellyht-22C551/sensor/temperature:.* temperature\
shellyht_22C551:shellies/shellyht-22C551/sensor/humidity:.* humidity\
shellyht_22C551:shellies/shellyht-22C551/sensor/battery:.* battery\
shellyht_22C551:shellies/shellyht-22C551/online:.* online
attr Sensor_Arbeitszimmer_Tom room Arbeitszimmer-Tom
attr Sensor_Arbeitszimmer_Tom stateFormat T: temperature °C H: humidity % B: battery %


Cheers ...

aceron76

q
Zitat von: tomleitner am 30 Dezember 2018, 17:12:29
Hab ich auch seit 2 Tagen laufen mit MQTT2 ... hier meine Definition:

define Sensor_Arbeitszimmer_Tom MQTT2_DEVICE shellyht_22C551
attr Sensor_Arbeitszimmer_Tom IODev MQTT2_Server
attr Sensor_Arbeitszimmer_Tom group Sensoren
attr Sensor_Arbeitszimmer_Tom icon temp_temperature
attr Sensor_Arbeitszimmer_Tom readingList shellyht_22C551:shellies/announce:.* { json2nameValue($EVENT, 'announce_', $JSONMAP) }\
shellyht_22C551:shellies/shellyht-22C551/sensor/temperature:.* temperature\
shellyht_22C551:shellies/shellyht-22C551/sensor/humidity:.* humidity\
shellyht_22C551:shellies/shellyht-22C551/sensor/battery:.* battery\
shellyht_22C551:shellies/shellyht-22C551/online:.* online
attr Sensor_Arbeitszimmer_Tom room Arbeitszimmer-Tom
attr Sensor_Arbeitszimmer_Tom stateFormat T: temperature °C H: humidity % B: battery %


Cheers ...
Zitat von: tomleitner am 30 Dezember 2018, 17:12:29
Hab ich auch seit 2 Tagen laufen mit MQTT2 ... hier meine Definition:

define Sensor_Arbeitszimmer_Tom MQTT2_DEVICE shellyht_22C551
attr Sensor_Arbeitszimmer_Tom IODev MQTT2_Server
attr Sensor_Arbeitszimmer_Tom group Sensoren
attr Sensor_Arbeitszimmer_Tom icon temp_temperature
attr Sensor_Arbeitszimmer_Tom readingList shellyht_22C551:shellies/announce:.* { json2nameValue($EVENT, 'announce_', $JSONMAP) }\
shellyht_22C551:shellies/shellyht-22C551/sensor/temperature:.* temperature\
shellyht_22C551:shellies/shellyht-22C551/sensor/humidity:.* humidity\
shellyht_22C551:shellies/shellyht-22C551/sensor/battery:.* battery\
shellyht_22C551:shellies/shellyht-22C551/online:.* online
attr Sensor_Arbeitszimmer_Tom room Arbeitszimmer-Tom
attr Sensor_Arbeitszimmer_Tom stateFormat T: temperature °C H: humidity % B: battery %


Cheers ...

aceron76

Zitat von: rudolfkoenig am 29 Dezember 2018, 21:58:23
Alternative zu externen MQTT-Server (aka Broker):
define m2s MQTT2_SERVER 1883Das dazugehoerige MQTT2_DEVICE samt Readings sollte automatisch angelegt werden.

Guten Morgen,

Ich komme einfach nicht weiter. Ich versuche einen Shelly H&T in Fhem zu integrieren.
Ich habe es mit MQTT und MQTT2 versucht mit selben Ergebnis, ich sehe keine readings in fhem. Der MQTT2 und das device sind installiert aber leider keine readings.
Was mache ich falsch oder habe ich etwas übersehen.
Bitte um Hilfe
sG



rudolfkoenig

Laut Screenshot ist "nrclients" 0, d.h. es gibt keine verbundene Geraete.

Entweder weil im MQTT Geraet nicht FHEM als MQTT Server angegeben ist, oder weil die Verbindung zum Server nicht moeglich ist, oder weil der Server ein Benutzer/Passwort erwartet, was im Client nicht hinterlegt ist, oder weil die Clients eine Verschluesselung wollen, aber im MQTT2_SERVER das nicht aktiviert ist. Oder was Anderes :)

aceron76

Ich habe es geschafft mit MQTT vom Sensor daten zu empfangen!
Die Lösung war das Attribut subscribeReading_ in der fhem.cfg einzutragen da in der attr Liste nur "subscribeReading_.*" zur Auswahl angeboten wird
Folgender Eintrag hat nicht funktioniert
attr HTSensor10 autoSubscribeReadings shellies/shellyht-58EAAF /sensor/+

Funktionierende Konfiguration meines Sensors:
defmod HTSensor10 MQTT_DEVICE shellyht_58EAAF
attr HTSensor10 IODev myBroker
attr HTSensor10 room 00_System
attr HTSensor10 stateFormat T: Temperature °C, H: Humidity %, B: Battery %
attr HTSensor10 subscribeReading_Battery shellies/shellyht-58EAAF/sensor/battery
attr HTSensor10 subscribeReading_Humidity shellies/shellyht-58EAAF/sensor/humidity
attr HTSensor10 subscribeReading_Temperature shellies/shellyht-58EAAF/sensor/temperature

MQTT2 komuniziert nachwievor noch nicht, bleibe aber dran.
sG