[gelöst] MQTT2 Setzen vom Attribut readingList

Begonnen von simonberry, 03 August 2021, 17:08:47

Vorheriges Thema - Nächstes Thema

simonberry

Hallo zusammen,

ich habe eine sonoff-Zigbee-Bridge (Tasmota 9.2.0), und ettliche Zigee Sensoren, Buttons und Aktoren. Manche Sensoren verlieren ab und zu die Verbindung zur Bridge und dann hilft bei mir nur noch "neu anlernen".
Danach haben die Sensoren allerdings eine neue ID und diese muss dann mühsam in FHEM angepasst werden. Das mag ich gerne automatisch machen aber ich scheitere daran das Attribut "readingList", dass die neue DeviceId enthält zu aktualisieren.


In kurz:die Anweisung

attr Zbb_Fax readingList tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }

funktioniert nicht aus der 99_myUtils.pm heraus, weil wahrscheinlich "{ json2nameValue($EVENT) }" nicht einfach ins Attribut eingetragen wird, sondern interpretiert wird.
Wenn ich die Anweisung in der Kommandozeile eingebe, klappt es tadellos.

Wer kann mir helfen?
Zum reinfuchsen anbei ein paar Listings und Logs:

Nebenbei: Bei mir heißen alle Zigbee Devices in FHEM genau so wie in der Tasmota bridge.

Dieses notify reagiert auf alle per autocreate angelegten MQTT2 - Zigbee Geräte:

defmod notiZigbee notify MQTT2_z2t_.*:ZbReceived_.*_Name:.* { notiZigbeeFF($SELF, $NAME, $EVENT)}
attr notiZigbee DbLogExclude .*
attr notiZigbee disable 0
attr notiZigbee group myUtils
attr notiZigbee icon system_fhem
attr notiZigbee room Logik

setstate notiZigbee 2021-08-03 16:25:15
setstate notiZigbee 2021-08-03 16:01:53 state active


Das aufgerufene UP notiZigbeeFF in meiner 99_myUtils.pm sieht so aus:

# MQTT2_z2t_.*:ZbReceived_.*_Name:.*
#
sub notiZigbeeFF  ($$$)
{
# Variablen übernehmen
  my ($SELF, $NAME, $EVENT) = @_;
# EVENT in Teil zerlegen
  my @EVTPART = split(" ", $EVENT);
# Anzahl Event Teile ermitteln
  my $ANZEVT = scalar @EVTPART;
  my $RL;
  my $LOG_BETR  = 3;
  my $LOG_PFORT = 4;
# Melden macht frei
  Log $LOG_PFORT,"$SELF: NAME:$NAME ANZ:$ANZEVT EVENT:$EVENT";

# DeviceNamen ermitteln
  my $ZBNAME=$EVTPART[1];

# IF : Es gibt bereits ein Gerät mit diesem Zigbee-Namen
  if ($defs{$ZBNAME})
# THEN : ReadingList aktualisieren
  {
#   readingList aus neuem Device ermitteln
    $RL = AttrVal($NAME, "readingList", "undef");

#   Attribut in bestehenden Device eintragen
    myAttrSet($ZBNAME, "readingList", "$RL");

#   Definition anpassen (Ok)
    fhem("defmod $ZBNAME MQTT2_DEVICE ".$defs{$NAME}{DEF});

#   Temp-Device löschen - später wenn's dann geht
    #fhem("sleep 10; delete $NAME");

#   Sichern
    fhem("save");
  }
# END-IF :
}


Und hier noch das UP myAttrSet das eigentlich nur das Attribut "readingList" setzen soll:

sub myAttrSet ($$$)
{
# Variablen übernehmen
  my ($DEV, $ATTR, $VAL) = @_;

  Log $LOG_BETR,"myAttrSet: DEV:$DEV";
  Log $LOG_BETR,"myAttrSet: ATTR:$ATTR";
  Log $LOG_BETR,"myAttrSet: VAL:$VAL";

  my $CMD = "attr $DEV $ATTR \"$VAL\"";
  Log $LOG_BETR,"myAttrSet: CMD:$CMD";
# Atribut setzen
  fhem($CMD);
}


Hier der List vom per autocreate angelegtem Device:

defmod MQTT2_z2t_EA73 MQTT2_DEVICE z2t_EA73
attr MQTT2_z2t_EA73 DbLogExclude .*
attr MQTT2_z2t_EA73 icon mqtt
attr MQTT2_z2t_EA73 readingList tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }
attr MQTT2_z2t_EA73 room Technik,Test

setstate MQTT2_z2t_EA73 2021-08-03 16:12:42 IODev MQTT_Server
setstate MQTT2_z2t_EA73 2021-08-03 16:12:42 ZbReceived_zbb_Fax_BatteryPercentage 92
setstate MQTT2_z2t_EA73 2021-08-03 16:12:42 ZbReceived_zbb_Fax_BatteryVoltage 2.99
setstate MQTT2_z2t_EA73 2021-08-03 16:25:15 ZbReceived_zbb_Fax_Device 0xEA73
setstate MQTT2_z2t_EA73 2021-08-03 16:25:15 ZbReceived_zbb_Fax_Endpoint 1
setstate MQTT2_z2t_EA73 2021-08-03 16:25:15 ZbReceived_zbb_Fax_LinkQuality 42
setstate MQTT2_z2t_EA73 2021-08-03 16:12:47 ZbReceived_zbb_Fax_Manufacturer LUMI
setstate MQTT2_z2t_EA73 2021-08-03 16:12:47 ZbReceived_zbb_Fax_ModelId lumi.remote.b1acn01
setstate MQTT2_z2t_EA73 2021-08-03 16:25:15 ZbReceived_zbb_Fax_MultiInValue 1
setstate MQTT2_z2t_EA73 2021-08-03 16:25:15 ZbReceived_zbb_Fax_Name zbb_Fax
setstate MQTT2_z2t_EA73 2021-08-03 16:25:15 ZbReceived_zbb_Fax_click single
setstate MQTT2_z2t_EA73 2021-08-03 16:12:42 associatedWith Zigbee


Und das ist der List, vom alten Device das aktualisiert werden soll:

defmod zbb_Fax MQTT2_DEVICE z2t_EA73
attr zbb_Fax userattr EventSwitchDevices
attr zbb_Fax DbLogExclude .*
attr zbb_Fax EventSwitchDevices S,d6,toggle\
SS,d6,toggle\
L,d6,toggle
attr zbb_Fax IODev MQTT_Server
attr zbb_Fax comment notiZigbee
attr zbb_Fax event-on-update-reading event,.*_LinkQuality,.*_MultiInValue,.*_BatteryPercentage
attr zbb_Fax group Schalter
attr zbb_Fax icon shellybutton1
attr zbb_Fax readingList tele/tasmota_9CE429/557D/SENSOR:.* { json2nameValue($EVENT) }
attr zbb_Fax room Technik,Test
attr zbb_Fax stateFormat event
attr zbb_Fax userReadings ZbSignal:.*_LinkQuality:.* { sprintf("%d%%", ReadingsNum($NAME, "ZbReceived_".$NAME."_LinkQuality", 0) * 100 / 255);; },\
ZbSignal_icon:.*_LinkQuality:.* { sprintf("sigbalken%d", ReadingsNum($NAME, "ZbReceived_".$NAME."_LinkQuality", 0) * 5 / 255);; },\
ZbBattery_icon:.*_BatteryPercentage:.* { sprintf("measure_battery_%d", int(ReadingsNum($NAME, "ZbReceived_".$NAME."_BatteryPercentage", 0) * 4 / 100) * 25);; },\
event:ZbReceived_.*MultiInValue:.* { my $press = "";;\
              if (ReadingsVal($NAME, "ZbReceived_".$NAME."_MultiInValue", "") == 0) \
              { $press="L";;}\
              elsif (ReadingsVal($NAME, "ZbReceived_".$NAME."_MultiInValue", "") == 1) \
              { $press="S";;}\
              elsif (ReadingsVal($NAME, "ZbReceived_".$NAME."_MultiInValue", "") == 2) \
              { $press="SS";;}\
              else\
              { $press="R";;}\
              sprintf("%s", $press);;\
           }
attr zbb_Fax widgetOverride EventSwitchDevices:textFieldNL-long

setstate zbb_Fax S
setstate zbb_Fax 2021-08-03 16:25:18 IODev MQTT_Server
setstate zbb_Fax 2021-08-03 15:15:14 ZbBattery_icon measure_battery_75
setstate zbb_Fax 2021-08-03 15:15:14 ZbReceived_zbb_Fax_AppVersion 2
setstate zbb_Fax 2021-08-03 15:15:14 ZbReceived_zbb_Fax_BatteryPercentage 92
setstate zbb_Fax 2021-08-03 15:15:14 ZbReceived_zbb_Fax_BatteryVoltage 2.99
setstate zbb_Fax 2021-08-03 16:10:00 ZbReceived_zbb_Fax_Device 0x557D
setstate zbb_Fax 2021-08-03 16:10:00 ZbReceived_zbb_Fax_Endpoint 1
setstate zbb_Fax 2021-08-03 16:10:00 ZbReceived_zbb_Fax_LinkQuality 39
setstate zbb_Fax 2021-08-03 15:15:19 ZbReceived_zbb_Fax_Manufacturer LUMI
setstate zbb_Fax 2021-08-03 15:15:19 ZbReceived_zbb_Fax_ModelId lumi.remote.b1acn01
setstate zbb_Fax 2021-08-03 16:10:00 ZbReceived_zbb_Fax_MultiInValue 1
setstate zbb_Fax 2021-08-03 16:10:00 ZbReceived_zbb_Fax_Name zbb_Fax
setstate zbb_Fax 2021-08-03 13:23:41 ZbReceived_zbb_Fax_action release
setstate zbb_Fax 2021-08-03 16:10:00 ZbReceived_zbb_Fax_click single
setstate zbb_Fax 2021-08-03 16:10:00 ZbSignal 15%
setstate zbb_Fax 2021-08-03 16:10:00 ZbSignal_icon sigbalken0
setstate zbb_Fax 2021-08-03 12:46:51 associatedWith Zigbee
setstate zbb_Fax 2021-08-03 16:10:00 event S


Drücke ich den Button erhalte ich folgendes im Log:

2021.08.03 16:53:06 3: myAttrSet: DEV:zbb_Fax
2021.08.03 16:53:06 3: myAttrSet: ATTR:readingList
2021.08.03 16:53:06 3: myAttrSet: VAL:tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }
2021.08.03 16:53:06 3: myAttrSet: CMD:attr zbb_Fax readingList "tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }"
2021.08.03 16:53:06 3: zbb_Fax: bad reading name { json2nameValue(ZbReceived_zbb_Fax_Name: zbb_Fax) }" (contains not A-Za-z/\d_\.- or is too long)
2021.08.03 16:53:06 3: attr zbb_Fax readingList "tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }" : zbb_Fax: bad reading name { json2nameValue(ZbReceived_zbb_Fax_Name: zbb_Fax) }" (contains not A-Za-z/\d_\.- or is too long)


Ich habe bereits versucht, das Zeichen '$' mittels '\' zu maskieren, aber ohne Erfolg.

Viele Grüße
Simonberry.
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

rudolfkoenig

Zitat2021.08.03 16:53:06 3: myAttrSet: CMD:attr zbb_Fax readingList "tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }"
Du hast es mit den Quotes (") uebertrieben.

Beta-User

Wenn du den "Setz-String" "richtig" zusammensetzt, müßte das schon klappen. Du solltest den "hinteren Teil" daher "hartvercoded" in eine Variable packen (mit einfachen Quotes) und die zusätzlichen Doppelquotes weglassen, wie bereits von Rudi angemerkt.

Generelle Anmerkungen:
- Du machst hier (fast) dasselbe wie attrTemplate. Was hindert dich daran, eigene attrTemplate zu erstellen?
- Gerüchteweise verwenden neuere Versionen der firmware immer dieselbe "Short-ID" für denselben Sensor. Eventuell lohnt ein update?
- Es gibt bereits einige attrTemplate für zigbee2tasmota. Die packen den JSON etwas anders aus (bzw. nur den "inneren JSON") und erzeugen dann kürzere Reading-Namen. Ist vielleicht mittelfristig einfacher.
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

simonberry

Hallo zusammen,

vielen Dank für die schnellen Antworten.
Auch mit weniger Quotes, funktioniert es leider nicht, auch wenn ich Single Quotes verwende klappt es leider nicht:

Also ich habe zwischenzeitlich folgendes probiert:

  my $CMD = "attr $DEV $ATTR $VAL";


So habe ich es mit den einfachen Quotes probiert, oder hast Du das anders gemeint? Der hintere Teil steht ja schon in einer Variablen.

  my $CMD = 'attr '.$DEV.' '.$ATTR.' '.$VAL;



Mit folgenden Log:

2021.08.03 18:03:16 3: myAttrSet: DEV:zbb_Fax
2021.08.03 18:03:16 3: myAttrSet: ATTR:readingList
2021.08.03 18:03:16 3: myAttrSet: VAL:tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }
2021.08.03 18:03:16 3: myAttrSet: CMD:attr zbb_Fax readingList tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) }
2021.08.03 18:03:16 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $EVTPART2=   $evalSpecials->{'%EVTPART2'};my $EVTPART3=   $evalSpecials->{'%EVTPART3'};my $EVTPART4=   $evalSpecials->{'%EVTPART4'};my $EVTPART5=   $evalSpecials->{'%EVTPART5'};my $EVTPART6=   $evalSpecials->{'%EVTPART6'};my $EVTPART7=   $evalSpecials->{'%EVTPART7'};my $EVTPART8=   $evalSpecials->{'%EVTPART8'};my $EVTPART9=   $evalSpecials->{'%EVTPART9'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{return undef; { json2nameValue(ZbReceived_zbb_Fax_Name: zbb_Fax) }}: syntax error at (eval 709051) line 1, near "ZbReceived_zbb_Fax_Name:"

2021.08.03 18:03:16 3: syntax error at (eval 709051) line 1, near "ZbReceived_zbb_Fax_Name:"

2021.08.03 18:03:16 3: attr zbb_Fax readingList tele/tasmota_9CE429/EA73/SENSOR:.* { json2nameValue($EVENT) } : syntax error at (eval 709051) line 1, near "ZbReceived_zbb_Fax_Name:"


Danke für die Anregungen
Das mit den Templates werde ich mir bei Gelegenheit ansehen.
Ein Update auf tasmota 9.5.0 der Brdige hat mir allerdings erstmal Arbeit bereitet, da die Bridge alle Namen vergessen hat. Und ich diese erstmal wieder umbennen muss, damit ich wieder durchblicke.  :-\
So wie's aussieht vergibt auch Version 9.5.0 immer neue IDs. Aber trotzdem Danke ein Versuch war es Wert.

Viele Grüße
Simonberry

NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

rudolfkoenig

Die Ursache ist, dass deine Routine aus einem notify aufgerufen wird, und damit in allen FHEM Befehlen (egal ob direkt, oder indirekt aufgerufen) $EVENT mit dem notify Event ersetzt wird.

Workaround-Alternativen:
- in myAttrSet vor dem fhem() Aufruf die EVENT Variable (und seine Konsorten) loeschen mit $evalSpecials=undef;
- statt fhem("attr a b c") die direkte Funktion CommandAttr(undef, "a b c") aufrufen.

Beta-User

Zitat von: simonberry am 03 August 2021, 18:38:20
Ein Update auf tasmota 9.5.0 der Brdige hat mir allerdings erstmal Arbeit bereitet, da die Bridge alle Namen vergessen hat. Und ich diese erstmal wieder umbennen muss, damit ich wieder durchblicke.  :-\
So wie's aussieht vergibt auch Version 9.5.0 immer neue IDs. Aber trotzdem Danke ein Versuch war es Wert.
Sorry, dass das Mehraufwand war.

Interessehalber: War das ein OTA-Update? (Wenn das der Fall war, und auch dort die "Amnesie" ein Problem ist, wäre das ein Grund mehr, warum man die zigbee2tasmota-Lösung nicht als "einsteigerfreundlich" bezeichnen sollte... Meine "Quelle" für die "new news" zu dem Thema ist eigentlich verlässlich, schade, dass das wohl auch (noch?) nicht wenigstens beim Neuanlernen klappt mit dem Beibehalten der ID's.).

Zu den attrTemplate ist dann noch hier im Wiki was zu finden: https://wiki.fhem.de/wiki/Zigbee2Tasmota-MQTT. Vielleicht sollte man noch eines machen, das es erlaubt, unkompliziert die "Short-ID's" zu tauschen, so dass man nicht jedesmal wieder neu konfigurieren muss und eine gewisse Kontinuität reinbringt?
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

simonberry

Hallo zusammen,

kein Problem, mit dem Mehraufwand, irgendwann hätte ich sicherlich mal wieder ein update gemacht, und dann hätte es mich ja auch erwischt. Ich habe mir mit Tasmo-Compiler eine deutsche tasmota-zigbe-bridge compiliert, und diese dann hochgeladen. Damit die Version überhaupt Platz hatte habe ich vorher die tasmota-mininal aufgespielt. Irgendwo wird da halt das eeprom gelöscht. Es waren ja auch nur die Namen weg, pairen musste ich nicht.

Ich bin jetzt auch wieder a bisserl schlauer. So ganz falsch war Dein Tipp nämlich nicht. Man kann in Tasmota einstellen, dass die topics mit "friendly-name" verschickt werden und nicht mit der Device ID. Das hat ja den gleichen Effekt.

ZbNameTopic 1


Dann sehen die Readings so aus:

tele/tasmota_9CE429/zbb_Fax/SENSOR:.* { json2nameValue($EVENT) }


@Rudi
Danke, sowas habe ich mir schon gedacht, die Funktion CommandAttr(), ist für mich perfekt. Damit zieht sich jetzt mein System wieder gerade.  8)

Viele Grüße
Simonberry






NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

Beta-User

Der Weg über "minimal" ist fast immer erforderlich und sollte (nach meinem Wunschdenken!) eigentlich ungefährlich sein...

Was "friendly names" angeht, bin ich grundsätzlich skeptisch, was deren Mehrwert angeht. Im Zeifel ist das Chaos größer, wenn man die verwendet und die Hardware geht dann hops. Ist aber nur mein persönliches Bauchgefühl ::) . Und die JSON-Struktur wird dabei auch nicht einfacher (also auch nicht die Reading-Namen, die json2nameValue() daraus macht)...

Hier jedenfalls mal ein attrTemplate, das es (hoffentlich, und bis auf den Namen) erlaubt, die "ID" aus einem bestehenden Device zu tauschen:
name:tasmota_zigbee2tasmota_replace_ID
prereq:{my @devices=devspec2array("model=tasmota_zigbee2tasmota_bridge");;return 1 if $devices[0];;return 0}
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*tele.*/..../SENSOR:.*
desc:As the bridge tends to assign a new ID each time you join a device to the ZigBee network, you may want to update existing devices with the new ID instead of reconfiguring the new ones! Don't forget to delete the autocreated other device afterwards...<br>NOTE: as the ID consists just of four letters, make sure, there's nothing beeing wrongly replaced...
order:A_01u01a
par:DEV_ID;Provide the new ZigBee short ID, hex value without leading 0x;{ undef }
par:DEV_OLD_ID;ZigBee short ID, hex value without leading 0x;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)/.*/([^/]+)/SENSOR?:, ? "$3" : undef }
par:READINGLIST;Existing readingList attribute value;{ AttrVal("DEVICE",'readingList','') }
par:SETLIST;Existing setList attribute value;{ AttrVal("DEVICE",'setList','') }
par:GETLIST;Existing getList attribute value;{ AttrVal("DEVICE",'getList','') }
par:DEVTOPIC;Existing devicetopic attribute value;{ AttrVal("DEVICE",'devicetopic','') }
par:DEVCID;Existing CID internal value;{ InternalVal("DEVICE",'CID',"z2t_DEV_ID") }
option:{return 1 if length("DEVCID");return 0}
{my $new = q(DEVCID); $new =~ s{DEV_OLD_ID}{DEV_ID}g; CommandDefMod(undef, "DEVICE MQTT2_\DEVICE $new")}
option:{return 1 if qw(READINGLIST);return 0}
{no warnings qw(constant); my $new = q(READINGLIST); $new =~ s{DEV_OLD_ID}{DEV_ID}g; CommandAttr(undef, "DEVICE readingList $new")}
option:{return 1 if qw(SETLIST);return 0}
{no warnings qw(constant); my $new = q(SETLIST); $new =~ s{DEV_OLD_ID}{DEV_ID}g; CommandAttr(undef, "DEVICE setList $new")}
option:{return 1 if qw(GETLIST);return 0}
{no warnings qw(constant); my $new = q(GETLIST); $new =~ s{DEV_OLD_ID}{DEV_ID}g; CommandAttr(undef, "DEVICE getList $new")}
option:{return 1 if length("DEVTOPIC");return 0}
{my $new = q(DEVTOPIC); $new =~ s{DEV_OLD_ID}{DEV_ID}g; CommandAttr(undef, "DEVICE devicetopic $new")}
farewell:Template has been applied. NOTE: as the replaced ID consists just of four letters, make sure, there's nothing beeing wrongly replaced...

Kannst du testweise in deine mqtt2.template-file reinbasteln, kommt vermutlich demnächst auch via update, dann {AttrTemplate_Initialize()} ausführen. Braucht aber ein Gerät, das mit dem "bridge-template" konfiguriert wurde, sonst wird es nicht geladen.

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

simonberry

Danke für das Template,

nimm's mir nicht übel, aber ich habe die Template Thematik noch nicht ganz durchschaut. Mir ist bewusst, dass das sehr mächtig ist und auch komfortabel, aber ich mach das vorerst erstmal mit den Mitteln, die ich auch durchblicke.  :D
Evtl hätte beim update auch geholfen, durch die Versionen zu gehen, also erst 9.3, dann 9.4, und dann 9.5, aber im Tasmota wiki Stand im Migrationspfad nichts davon, dass das notwendig wäre.  :-\

Ich habe auch nur eine sonoff-zigebee-bridge. Ausprobieren ist da nicht möglich. Update starten und überraschen lassen :-), evtl hätte es auch geholfen die Konfiguration zu sichern. Das mache ich das nächste mal.

Viele Grüße
Simonberry




NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

Beta-User

Zitat von: simonberry am 04 August 2021, 15:39:57
nimm's mir nicht übel, aber ich habe die Template Thematik noch nicht ganz durchschaut.
Kein Problem 8) !

Vielleicht zur Erläuterung der "anderen" zigbee2tasmota-attrTemplates: Da passiert nicht viel, außer, dass (via bridgeRegexp an einem zentralen Device) jeder "SENSOR" sein eigenes Gerät bekommt (wie du das anscheinend auch machst), und dann bekommt dann eben jeder "TYP" noch eine readingList, bei der vorab der "innere JSON" ermittelt (und ggf. "vorverarbeitet") wird, so dass eben statt eines Readings "zigbee_id_bla_Power_1" mit "1" fhemtypisch zB. ein "state" mit Wert "on" rauskommt.
Diese Ecke ist zugegebenermaßen reichlich speziell, aber was genau passiert, kannst du ja ggf. auch einfach mal an einem Klon nachvollziehen.

Tendenziell würde ich aber weiter empfehlen, die ZigBee-Geräte auf ein anderes IO umzuziehen, tasmota ist (diesbezüglich!) mAn. nur was für "Expermimentalisten", auch wenn man wohl mit Fug und Recht sagen kann, dass man damit den unmittelbarsten Zugriff auf die Technik an sich bekommt, ohne externe Tools bemühen zu müssen.
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