Läuft: zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE

Begonnen von supernova1963, 23 September 2018, 19:17:21

Vorheriges Thema - Nächstes Thema

Motivierte linke Hände

Ich hätte da noch Templates, die ich hier für die Ubisys J1 Rolloaktoren erstellt, aber mit einem herstellerneutralen Namen bezeichnet habe. (Zwei davon, weil einer für Rollos und einer für Fensteröffner ist):

name:zigbee2mqtt_blind_drive_w_energy
desc: A blind/roller/shade/window drive motor with energy consumption measurement connected via zigbee2mqtt <br>Tested with: Ubisys J1
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_05f2
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to fts_shutter_100;{ AttrVal("DEVICE","icon","fts_shutter_100") }
attr DEVICE icon ICON
attr DEVICE devStateIcon 0:fts_shutter_100:open 100:fts_shutter_10:close 9\d.*:fts_shutter_10:close 8\d.*:fts_shutter_20:close 7\d.*:fts_shutter_30:open 6\d.*:fts_shutter_40:close 5\d.*:fts_shutter_50:close 4\d.*:fts_shutter_60:close 3\d.*:fts_shutter_70:close 2\d.*:fts_shutter_80:close 1\d.*:fts_shutter_90:close 0\d.*:fts_shutter_100:close
attr DEVICE webCmd open:close:stop:position
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
attr DEVICE setList \
  open:noArg $\DEVICETOPIC/set {"state":"OPEN"}\
  close:noArg $\DEVICETOPIC/set {"state":"CLOSE"}\
  stop:noArg $\DEVICETOPIC/set {"state":"STOP"}\
  position:slider,0,1,100 $\DEVICETOPIC/set {"position":"$EVTPART1"}\
  invert_cover:true,false $\DEVICETOPIC/set {"invert_cover":"$EVTPART1"}\
  energy_precision:slide,0,1,3 $\DEVICETOPIC/set {"energy_precision":"$EVTPART1"}\
  energy_calibration:slide,0,1,100 $\DEVICETOPIC/set {"energy_calibration":"$EVTPART1"}\
  power_precision:slide,0,1,3 $\DEVICETOPIC/set {"power_precision":"$EVTPART1"}\
  power_calibration:slide,0,1,100 $\DEVICETOPIC/set {"power_calibration":"$EVTPART1"}
attr DEVICE stateFormat position
set DEVICE attrTemplate speechcontrol_type_blind
attr DEVICE model zigbee2mqtt_blind_drive_w_energy
setreading DEVICE attrTemplateVersion 20230211

name:zigbee2mqtt_window_drive_w_energy
desc: A blind/roller/shade/window drive motor with energy consumption measurement, icons for windows, connected via zigbeemqtt <br>Tested with: Ubisys J1
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_05f3
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to fts_window_1w;{ AttrVal("DEVICE","icon","fts_window_1w") }
attr DEVICE icon ICON
attr DEVICE devStateIcon 0:fts_window_1w:open \d\d.*:fts_window_1w_tilt@orange:close 100:fts_window_1w_tilt@orange:close
attr DEVICE webCmd open:close:stop:position
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
attr DEVICE setList \
  open:noArg $\DEVICETOPIC/set {"state":"OPEN"}\
  close:noArg $\DEVICETOPIC/set {"state":"CLOSE"}\
  stop:noArg $\DEVICETOPIC/set {"state":"STOP"}\
  position:slider,0,1,100 $\DEVICETOPIC/set {"position":"$EVTPART1"}\
  invert_cover:true,false $\DEVICETOPIC/set {"invert_cover":"$EVTPART1"}\
  energy_precision:slide,0,1,3 $\DEVICETOPIC/set {"energy_precision":"$EVTPART1"}\
  energy_calibration:slide,0,1,100 $\DEVICETOPIC/set {"energy_calibration":"$EVTPART1"}\
  power_precision:slide,0,1,3 $\DEVICETOPIC/set {"power_precision":"$EVTPART1"}\
  power_calibration:slide,0,1,100 $\DEVICETOPIC/set {"power_calibration":"$EVTPART1"}
attr DEVICE stateFormat position
set DEVICE attrTemplate speechcontrol_type_blind
attr DEVICE model zigbee2mqtt_window_drive_w_energy
setreading DEVICE attrTemplateVersion 20230211
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

FHEMAN

Hi, ich migriere gerade meine Geräte von Hue zu Zigbee2MQTT und nutze sie in Fhem im Moment nur über MQTT2, also ohne Definition einer Hue-Bridge.
Was mir dabei auffiel: Wenn der Name eines Zigbee Geräts einen Punkt enthält, wird bei dem von der Bridge automatisch erstellten Device beim Topic der Punkt escaped. Damit funktioniert zwar das Empfangen der States bzw. Readings, nicht aber das Senden.

Abhilfe schafft ein nachträgliches Umbenennen, also bspw. das Attribut devicetopic von zigbee2mqtt/Schaltsteckdose\x2e8 nach zigbee2mqtt/Schaltsteckdose.8

Vielleicht wurde das hier schon behandelt, ich habe mir jetzt nicht alle Seiten durchgelesen.


NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

87insane

#572
Hey zusammen,

anbei ein kleiner Schnippsel, der es ermöglicht bei zigbee2mqtt, die Gerätebeschreibung mit aus zu lesen und diese als Reading im Device zu haben. Finde ich ganz nützlich da mir die "firendly names" nicht immer reichen.

(readingList)
zigbee2mqtt/bridge/response/device/options:.* { $EVENT =~ m,..id...DEV_ID...restart.*, ? json2nameValue($EVENT, '', $JSONMAP) : undef }DEV_ID muss aus den eigenen Namen angepasst werden. Beispiel: 0x0017880108be54f6
Sollte das in einem Template genutzt werden, wird es beim aktivieren automatisch ersetzt.

(jsonMap um ungewolltes rauß zu filtern und den Eintrag sauber zu benamen)
data_from_description:0 data_id:0 data_restart_required:0 data_to_description:description status:0 transaction:0
(setList)
Dazu noch (in meinen Augen fehlende) Optionen für dimmbare Leuchten:
dimUp:noArg { my $num=ReadingsNum($NAME,'brightness',0)+10; return qq{$DEVICETOPIC/set {"state":"on","brightness":$num}} }
dimDown:noArg { my $num=ReadingsNum($NAME,'brightness',0)-10; return qq{$DEVICETOPIC/set {"state":"on","brightness":$num}} }

Und (in meinen Augen fehlende) Optionen für Leuchtmittel mit Effekten:
effect:blink,breathe,okay,channel_change,candle,finish_effect,stop_effect,stop_hue_effect $DEVICETOPIC/set {"effect":"$EVTPART1"}
Und die beiden startup Optionen:
power_on_behavior:off,on,toggle,previous $DEVICETOPIC/set {"power_on_behavior":"$EVTPART1"}
ct_startup:coolest,cool,neutral,warm,previous $DEVICETOPIC/set {"color_temp_startup":"$EVTPART1"}
"warmest" habe ich hier weg gelassen, da bei mir kein Gerät dies unterstützt.

Ich frage mich auch warum z.B. die ganzen HUE Birnen bis 255 eingestellt werden im Bereich Helligkeit. Allerdings können die nur bis 254.
So wäre schön....
brightness:colorpicker,BRI,0,2,254 $DEVICETOPIC/set {"state":"on","$EVTPART0":"$EVTPART1"}
Zu guter Letzt, noch der angepasste ct Picker und die "fehlende" Option um die Werte klickbar zu machen. Über zigbee2mqtt geht das im Web-IF wunderbar.
ct:colorpicker,CT,153,2,454 $DEVICETOPIC/set {"color_temp":"$EVTPART1"}
color_temp:coolest,cool,neutral,warm $DEVICETOPIC/set {"color_temp":"$EVTPART1"}


Gruß,
87Insane

schwatter

#573
Nabend,

meine Shellys im Verteilerkasten für Waschmaschine und Trockner haben sporadisch einen weg. Deshalb hab ich mir nun 2x NOUS A1Z besorgt.
Da Sensoren und Switch getrennt in Deconz sind, dachte ich mir, probier mal z2m. Erstkontakt, schnell eingebunden, alles in einem Device. Richtig gut :) Danke @Beta-User für Template.
Nachdem dem guten Start kommt der Ärger, welcher sich Tradfi 1810 schimpft. Die Dinger sind unter Deconz top, in z2m nur bekloppt.
Hab 2, einen auf neuer Firmware. Damit kann er easy den Gruppen zugeordnet werden. Wobei wegen Scenen die Gruppen ID "65289"
verwendet werden soll. Damit Scenen funktionieren. Der mit alter FW tauchte erst in default_bind_group. Nun nicht mehr,
habe ihn aber per "nano /opt/zigbee2mqtt/data/configuration.yaml" manuel hinzugefügt.
Was geht nun. Bei Beiden toggle und, heller und dunkler. Die Pfeile link/rechts werden nicht akzeptiert.
Nichtmal an Fhem unter dem reading "action" durchgereicht....
Jetzt überlege ich, bekomme ich die noch vernünftig unter z2m zum laufen, gehe ich auf Deconz zurück (ungern) oder hat wer einen
tollen Magnetschalter, der min. auch 5 Tasten hat. Und....ganz wichtig 100% funktioniert.

edit:
Das hab ich zu Scenen gefunden. Fummelei....
https://github.com/Koenkk/zigbee2mqtt/issues/1232

Gruß schwatter

rob

Den E1810 habe ich auch 2x und via z2m eingebunden. Eigentlich sorgenfrei. Gebunden an eine Gruppe mit 2x Tradfri Glühlampen. Hab aber keine Szenen eingerichtet.

In FHEM steht es bei mir so:
define Tradfri_BigFB01 MQTT2_DEVICE zigbee_Tradfri_BigFB01
attr Tradfri_BigFB01 IODev myMQTT_Server
attr Tradfri_BigFB01 devStateIcon brightness_up_click:on\
brightness_up_hold:dimup@red\
brightness_up_release:dimup\
brightness_down_click:off\
brightness_down_hold:dimdown@red\
brightness_down_release:dimdown\
arrow_right_click:rc_RIGHT@orange\
arrow_right_hold:rc_RIGHT@red\
arrow_right_release:rc_RIGHT@green\
arrow_left_click:rc_LEFT@orange\
arrow_left_hold:rc_LEFT@red\
arrow_left_release:rc_LEFT@green\
toggle_hold:rc_STOP@red
attr Tradfri_BigFB01 devicetopic zigbee2mqtt/Tradfri_BigFB01
attr Tradfri_BigFB01 event-on-change-reading .*
attr Tradfri_BigFB01 readingList $DEVICETOPIC/availability:.* availability\
$DEVICETOPIC:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr Tradfri_BigFB01 stateFormat action

Firmware steht bei mir drin mit
Firmware-Datum      20190211
Firmware-Version    1.2.223

Hast Du mal versucht die Config in z2m zu wiederholen?
- auf Button zum Gerät mit orangen Pfeilen im z2m-WebIF klicken und im folgenden PopUp die Maus bei OK bereithalten
- mittlere Taste vom Tradfri kurz drücken und sofort mit der Maus auf OK klicken
- wenn möglich recht nah am Gateway wiederholen

Bei mir zickte der Tradfri Bewegungsmelder rum und ein paar mal neu einbinden half.
Vielleicht nützt es bei Deinen auch etwas.

schwatter

#575
Moin,

so, endlich. Ich hab es. Der, mit der alten Firmware 2.3.014 ist nicht zu gebrauchen. Action bleibt immer auf N/A.
Ich hab schon eine Idee, der geh ich mal nach. Könnte etwas mit Gruppe zu tun haben.
Der neue hat die Firmware 24.4.5, welche ich mit z2m aufgespielt habe. Dieser funktioniert aber nicht mehr
mit Gruppen binden, sondern jedes einzelne Licht muss per binden zu ihm hinzugefügt werden. Da alles sehr "raw" ist,
musste ich auch erstmal das Grundsätzliche verstehen. Binden habe ich immer "ohne" kurzen Tastendruck gemacht, und mich
gefragt, warum funktioniert es hier, da aber nicht. Ok verstanden, Batteriedevice muss aufgeweckt werden. Check.
Dann hab ich bemerkt, das hier und da mit der neuen Firmware tatsächlich bei action auch mal was angezeigt wurde,
aber auch nicht immer...Verzweiflung machte sich breit :)
Die Lösung war dann doch ganz einfach. Es liegt daran, was man bindet. Binde ich OnOff,LevelCtrl und Scenes kommt nichts
mehr ihn Fhem an. Da Scenes nicht funktioniert (hab welche in z2m angelegt), hab ich es weggelassen. Und siehe da, es
kommen nur die Buttons left/right in Fhem an. Und Scene in m2z ist nicht gleich Scene. ich glaube die Scenen muss man
extra anlegen, was etwas anderes ist, wie im Webinterface....egal. Mit meinem neu erworbenen Wissen nun eine Anleitung
zum einbinden.

Tradfri Remote E1810 / Firmware 24.4.5

- Als Schalter für Fhem (darf an kein Device gebunden sein)
Anlegen und alle "action"'s werden durchgereicht.
Bei Problemen, auf die orangenen Pfeile gehen.
Schalter kurz drücken zum aufwecken und dann ok.

- Als Schalter für Lampen (Müller Tint) und Scenen über Fhem (LightScene)
Schalter und Lampen in z2m anlegen.
Binden im Schalter öffnen und Lampe(n) binden mit OnOff und LevelCtrl. Mehr nicht. Keine Scenes!
In Fhem bleiben dann "arrow_left_click" und arrow_right_click, welche als Event weiterverarbeitet werden können.
Wer Scenen haben möchte, kann diese mit dem Modul LightScene in Fhem nachbilden.


Gruß schwatter




Caleus

Hey Leute

ich habe seit ein paar Tagen die Aqara LED Strip T1 aber leider weiß ich nicht welches Template ich nutezn muss um es voll nutzen zu können. Es wird mir im Event Monitor angezeigt.

2023-10-28 18:28:21 MQTT2_DEVICE MQTT2_zigbee_pi 0x54ef441000922053_color_x: 0.3827
2023-10-28 18:28:21 MQTT2_DEVICE MQTT2_zigbee_pi 0x54ef441000922053_color_temp: 251
2023-10-28 18:28:21 MQTT2_DEVICE MQTT2_zigbee_pi 0x54ef441000922053_color_y: 0.382
2023-10-28 18:28:21 MQTT2_DEVICE MQTT2_zigbee_pi 0x54ef441000922053_linkquality: 220
2023-10-28 18:28:21 MQTT2_DEVICE MQTT2_zigbee_pi 0x54ef441000922053_color_mode: xy
2023-10-28 18:28:21 MQTT2_DEVICE MQTT2_zigbee_bridge logging_message: MQTT publish: topic 'zigbee2mqtt/0x54ef441000922053', payload '{"color":{"x":0.3827,"y":0.382},"color_mode":"xy","color_temp":251,"linkquality":216}'

Ich hoffe ihr könnt mir da helfen.

TomLee

zigbee2mqtt_light_rgbcct_rgb sollte passen.

Caleus

Ok danke @TomLee

nun zur weieteren Frage was kommt hier (Screenshot) wo rein ?

TomLee

Die Zeilen drei bis 6, dacht ich mal erklären sich von selbst.

Zeile eins und zwei, lassen mich vermuten das du das Device in z2m bereits umbenannt hast oder gar kein Bridge Device bisher hast, ich weiß es nicht mehr auf Anhieb warum diese Zeilen abgerufen werden, zeig mal ein List.

Caleus

CID        zigbee_0x54ef441000922053
   DEF        zigbee_0x54ef441000922053
   FUUID      6532a53f-f33f-6f2d-91db-98433f6b3312225c
   FVERSION   10_MQTT2_DEVICE.pm:0.279350/2023-09-05
   IODev      MQTT2_FHEM_Server
   NAME       Aqara_led
   NR         230
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 2
   READINGS:
     2023-10-21 13:36:23   IODev           MQTT2_FHEM_Server

bei mir läuft natürlich eine Bridge Device, ich könnte doch sonst die Daten nicht sehen und ne umbenannt hatte ich es bis jetzt nicht

TomLee

Lösch das Device mal und schalte das Device im z2m-UI oder nimm ihm mal kurz die Spannung, so daß es neu angelegt wird in FHEM, sieht das MQTT2-Device dann wieder genauso aus ?

Caleus

Im z2m ui ist sie und läst sich steuern aber in fhem wird sie nicht automatisch angelegt

TomLee

Dann mal ein List von der Bridge, vermute aber ich kann nicht weiter helfen.

Caleus

reicht das so?

CID        zigbee_bridge
   DEF        zigbee_bridge
   FUUID      5fafb1b6-f33f-6f2d-cc2d-399965300ff4ae4a
   FVERSION   10_MQTT2_DEVICE.pm:0.279350/2023-09-05
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_127.0.0.1_33736
   MQTT2_FHEM_Server_MSGCNT 2202
   MQTT2_FHEM_Server_TIME 2023-10-28 20:00:38
   MSGCNT     2202
   NAME       MQTT2_zigbee_bridge
   NR         149
   STATE      {"state":"online"}
   TYPE       MQTT2_DEVICE
   eventCount 2202
   READINGS:
     2023-10-21 13:36:24   IODev           MQTT2_FHEM_Server
     2021-12-14 19:22:44   associatedWith  MQTT2_zigbee_pi
     2022-01-05 12:00:24   commit          42569d6c
     2022-01-05 12:00:24   coordinator_meta_maintrel 3
     2022-01-05 12:00:24   coordinator_meta_majorrel 2
     2022-01-05 12:00:24   coordinator_meta_minorrel 6
     2022-01-05 12:00:24   coordinator_meta_product 0
     2022-01-05 12:00:24   coordinator_meta_revision 20190608
     2022-01-05 12:00:24   coordinator_meta_transportrev 2
     2022-01-05 12:00:24   coordinator_type zStack12