MQTT2+Shelly: erste Konfiguration und template-Entwicklung

Begonnen von miggun, 03 Dezember 2018, 21:05:34

Vorheriges Thema - Nächstes Thema

Guzzi-Charlie

@Rudi
Das ist wirklich klasse wenn die kanalspezifischen Readings auch automatisch angelegt werden. Dann hat man noch weniger Nacharbeit.
Ich nehme an das Update steht dann ab Morgen zum Download zur Verfügung, oder?

@Beta-User
Ich hätte nichts dagegen wenn das Template auch entsprechend angeglichen würde. Dann wäre es wirklich konsistent.

@all
Dann bleibt nur noch zu hoffen, daß die Energy-Werte auch von allen Shellys mit Meßfunktion per MQTT zur Verfügung gestellt werden. Ich denke da gerade an den kommenden Shelly 1PM und natürlich auch Shelly Plug und den Shelly 2 (wo z.Z keine Energy-Werte zur Verfügung gestellt werden).

Gruß
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Guzzi-Charlie

@Rudi
So, hab gerade das Update von MQTT2 installiert und das Neuanlegen per autocreate eines Shelly 4Pro getestet.

Das funktioniert jetzt perfekt. Es wird nichts mehr doppelt angelegt und die Readings werden kanalspezifisch angelegt. Damit ist eine händische Nacharbeit nicht mehr notwendig.

Vielen Dank für die schnelle Korrektur.
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

Guzzi-Charlie

Zitat von: miggun am 14 Januar 2019, 07:52:05
@:Guzzi-Charlie
Ja, seit den letzten Updates scheint Energy weg zu sein. Bei mir geht es gerade auch nicht. Hatte ich aber jetzt schon ein paar mal. Dann kam wieder ein Update von Shelly und es ging wieder. Darauf hoffe ich gerade.

Hallo,
Gerade habe ich eine Antwort vom Shelly-Support bekommen lt. der die energy-Werte mit dem nächsten FW-Update ("Middle of the February with next FW update") wieder funktionieren soll.

Gruß
- RaspPI 4+: (Cuno V2 -2x KS300, JeeLink -13x EC3000)
- Stromzähler (B+G E-Tech): 6x SDM120M, 9x XTM100A, 38x DRS110M
- LAN: IT LAN-Gateway mit 34x RMF-R1 (Rohrmotor24)
- WLAN: 85x Shelly, 12x Gosund SP111, 16x D1-Mini, 15x Sonoff Basic
- DECT: 6x DECT200, 8x DECT301, - HmIP: 3x FalmotC12, 16x WTH2

lewej

Hallo zusammen,

die shellies publishen ja ihre Werte(fw_update und noch paar INfos) ins topic shellies/announce.

Wenn ich folgendes setze:
shellies/announce:.* { json2nameValue($EVENT) }

werden folgende Readings ertellt:
fw_ver
id
ip
mac
new_fw


Wenn man mehrere shellies hat, dann publishen dort alle rein. Kann man die Readings anhand der ID irgendwie bennen?

Gruß

Beta-User

Zitat von: lewej am 17 Februar 2019, 12:16:18
Hallo zusammen,

die shellies publishen ja ihre Werte(fw_update und noch paar INfos) ins topic shellies/announce.
Ist das so?

In den templates ist das so hinterlegt, dass jedes "sein" announce auch unter dem eigenen Namen macht: "shellies/DEVNAME/announce:.* { json2nameValue($EVENT) }\"

Gab es da Änderungen?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

lewej

Hi,

Also ich habe shellies/# subscribed und es ist immer nur unter shellies/announce was gepublished worden und nicht unter dem device.

Ich hab die 1.4.7 revertwifi firmware drauf.


Beta-User

Hmm, wenn nicht der JSON-Blob selbst Infos dazu enthält, zu was er gehört, wird das schwierig...

Mehr kann ich dazu aber nicht sagen, habe nach wie vor keinen Shelly...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

lewej

Zitat von: Beta-User am 17 Februar 2019, 16:21:54
Hmm, wenn nicht der JSON-Blob selbst Infos dazu enthält, zu was er gehört, wird das schwierig...

Mehr kann ich dazu aber nicht sagen, habe nach wie vor keinen Shelly...

Doch der Json Blob enthält infos dazu, ich weiss nur nicht wie ich das readlist aufbauen soll.

{"id":"shellyswitch-IDID","mac":"MAC","ip":"IP","new_fw":false, "fw_ver":"20190214-074442/1.4.7-revertwifi@0f3372b3"}

rudolfkoenig

Es gibt mehrere Wege:
- mit etwas Perl-Akrobatik, z.Bsp. indem man statt json2nameValue eine eigene Routine aufruft, die wiederum json2nameValue "nachbehandelt".
- regexp mit IP im readingsList, und jsonmap, der die "falschen" Eintraege wegfiltert.
- am einfachsten fuer FHEM waere die topics im Sender zu separieren.

kabanett

#249
Hallo,
mich würde interessieren wie ihr überprüft ob der Shelly online ist.
Ich beschäftige mich erst seit kurzem mit MQTT2. Deshalb, falls ich hier etwas übersehen/überlesen habe, nicht gleich schlagen ;)

Nach dem Autocreate und Auswahl des Shellytyps funktionieren diese auf anhieb. Vielen Dank für die Vorarbeit!!!
Nun habe ich testweise das MQTT im Shelly deaktiviert und musste feststellen, dass die Geräte auch weiterhin, nach dem anklicken, munter an und aus angezeigt werden, obwohl real nichts passiert.

Ich habe dann diese Attribute hinzugefügt.

attr Flurlicht_EG devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off
attr Flurlicht_EG stateFormat {ReadingsVal($name,"online","") eq "false" ? "absent" : ReadingsVal($name,"relay0","")}
attr Flurlicht_EG webCmd :


Da die Shellys bei mir mal so, mal so angelegt werden, musste ich bei manchen noch folgendes Attribut ergänzen
attr Flurlicht_EG readingList shellies/shellyswitch-XXXXXX/online:.* online\

Jetzt verhält es sich so: Wenn der Shelly nicht erreichbar ist kann ich das erst nach anklicken sehen, da das "online" scheinbar nicht ohne weiteres abgefragt/gesendet wird.

Wie bekommt ihr das hin sofort im WebIf zu sehen ob die Geräte erreichbar sind ohne jedes anklicken zu müssen?

Danke und Gruß


Edit: Hat sich erledigt!!!! Funktioniert so wie beschrieben! Man(n) muss nur etwas abwarten können ;)

Ich hätte aber gleich noch eine Frage:
Kann man den MQTT2-Server noch anders absichern als über "allowed_WEB"?
Ich würde ungern in Geräten die, zB. bei Updates oä., online gehen dürfen mein User/Pass von meinem Fhem hinterlegen.

Danke
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Beta-User

Zitat von: kabanett am 08 März 2019, 20:42:51
Kann man den MQTT2-Server noch anders absichern als über "allowed_WEB"?
Du kannst ohne weiteres eine eigene allowed-Instanz anlegen und dann mit anderen Passwörtern arbeiten.

Was das offline angeht: Evtl. hast du direkt ohne Warten ähnliche Ergebnisse, wenn du setStateList nutzt (on off toggle). Dann sollte das Lampensymbol mit dem Ausrufezeichen kommen, bis die Bestätigung da ist, dass der Aktor den Befehl erhalten hat.
Wenn gewünscht, kann ich sowas (setStateList) gerne in die shelly-templates einbauen; bei den tasmotas scheint das Standard zu sein.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kabanett

Zitat von: Beta-User am 09 März 2019, 10:01:26
Du kannst ohne weiteres eine eigene allowed-Instanz anlegen und dann mit anderen Passwörtern arbeiten.

Danke für den Hinweis! Mal schauen wie das wieder funktioniert  :-[
Für mich wäre es logisch dies im Modul selbst vergeben zu können. So wie in anderen Modulen auch! Naja, es ist wies ist ;)

Zitat von: Beta-User am 09 März 2019, 10:01:26
Was das offline angeht: Evtl. hast du direkt ohne Warten ähnliche Ergebnisse, wenn du setStateList nutzt (on off toggle)

Ausprobiert und funktioniet, bei mir, nicht! Hier muss man wirklich erst das Icon anklicken um das Ausrufelämpchen zu sehen. Ich habe 3 Minuten gewartet.
So wie ich es mache ist es spätestens nach ner Minute von selbst sichtbar :)

DAnke und Gruß
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

mele

Hallo zusammen,

hat schon jemand versucht via mqtt2 Shellies zu updaten?

Laut API soll das per mqtt möglich sein, ich blicke hier aber nicht durch.

Wenn ja, ist eine Aufnahme in die Templates sinnvoll?

Vielen Dank und Gruß

Mele
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

miggun

Mit MQTT ist das nicht vorgesehen.
Wo hast Du das gelesen?

Auszug von der Website:
MQTT in Relay mode

In relay mode, the following topics can be used to read and set output channels 0 and 1:

    shellies/shellyswitch-<deviceid>/relay/<i> to report status: on, off or overpower
    shellies/shellyswitch-<deviceid>/relay/<i>/command accepts on and off and applies accordingly

The device measures the total consumption on both channels, which can be seen on:

    shellies/shellyswitch-<deviceid>/relay/power reports instantaneous power consumption rate in Watts
    shellies/shellyswitch-<deviceid>/relay/energy reports amount of energy consumed in [10 * Wh]

MQTT in Roller mode

When configured to operate in roller mode, MQTT topics used by Shelly2 are:

    shellies/shellyswitch-<deviceid>/roller/0 reports the current state: open, close while in motion, stop when not moving.
    shellies/shellyswitch-<deviceid>/roller/0/command accepts rc (performs roller calibration), open, close and stop.

New in v1.4.0: roller mode position control. For this to work, the device must first be successfully calibrated, so that the time it takes for closing and opening are known.

    shellies/shellyswitch-<deviceid>/roller/0/pos reports the current position in percent
    shellies/shellyswitch-<deviceid>/roller/0/command/pos accepts a number between 0 and 100, which is target position in percent.
Raspberry Pi 3 B+
MapleCUN
Shelly1, Shelly2, Shelly4pro, FS20

Brandensittich

Zitat von: miggun am 12 März 2019, 09:26:55
Mit MQTT ist das nicht vorgesehen.
Wo hast Du das gelesen?
Die Info stammt aus der Shelly API Documentation:

https://shelly-api-docs.shelly.cloud/#common-mqtt-commands

ZitatCommon MQTT commands

Shellies support a set of commands published on shellies/command or shellies/<shellymodel>-<deviceid>/command to address an individual device:

    announce will trigger an announce packet by every Shelly connected to the broker on shellies/announce
    update will cause all Shellies to publish their state
    update_fw to perform a firmware update when one is available.