Hallo
Ich habe nach langer pause mal wieder versucht mein openmqttgateway auf die neue Methode in der wiki
anzupassen (die alte konfiguration funktioniert bis jetzt)
Dazu habe ich mir ein neues gateway angeschafft und versucht einzubinden.
Es wird ein neues Device automatisch angelegt
Hier der Code
defmod OMG_Schlafzimmer MQTT2_DEVICE OMG_Schlafzimmer
attr OMG_Schlafzimmer DbLogExclude .*
attr OMG_Schlafzimmer autocreate 1
attr OMG_Schlafzimmer bridgeRegexp $DEVICETOPIC/433toMQTT[:/].* 'oMQTTgw_433'\
$DEVICETOPIC/IRtoMQTT[:/].* 'oMQTTgw_IR'\
$DEVICETOPIC/CLIMAtoMQTT/([a-zA-Z0-9]+)[:/].* "OMG_Schlafzimmer_$1"
attr OMG_Schlafzimmer comment For syntax wrt. update and BT commands see https://github.com/1technophile/OpenMQTTGateway/releases/tag/v0.9.7
attr OMG_Schlafzimmer devStateIcon online:10px-kreis-gruen offline.*:10px-kreis-rot
attr OMG_Schlafzimmer devicetopic home/OMG_Schlafzimmer
attr OMG_Schlafzimmer event-on-change-reading last,LWT,version,Sys_.*
attr OMG_Schlafzimmer icon mqtt
attr OMG_Schlafzimmer model OpenMQTTGateway_MCU
attr OMG_Schlafzimmer periodicCmd deleteReadings:1440
attr OMG_Schlafzimmer readingList $DEVICETOPIC/LWT:.* LWT\
$DEVICETOPIC/version:.* version\
$DEVICETOPIC/SYStoMQTT[:/].* { json2nameValue($EVENT,'Sys_')}\
$DEVICETOPIC/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;; json2nameValue($EVENT,"${1}_") }\
$DEVICETOPIC/BTtoMQTT/([0-9A-Z]+)/[^:]+:.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+)/([^:]+),;; { "${1}_$2"=>$EVENT }}\
home/home_presence/OMG_Schlafzimmer:.* { return if $EVENT !~ m,(..):(..):(..):(..):(..):(..),;; {last => uc($1.$2.$3.$4.$5.$6)}}\
homeassistant/.+?/config:.* {}\
OMG_Schlafzimmer:home/OMG_Schlafzimmer/BTtoMQTT:.* { json2nameValue($EVENT) }\
OMG_Schlafzimmer:/config:.* config\
OMG_Schlafzimmer:home/OMG_Schlafzimmer/RLStoMQTT:.* { json2nameValue($EVENT) }
attr OMG_Schlafzimmer room MQTT2_DEVICE
attr OMG_Schlafzimmer setList restart:noArg $DEVICETOPIC/commands/MQTTtoSYS/config {"cmd":"restart"}\
update { my $payload = $EVENT;; $payload =~ s/$EVTPART0 //;; qq($DEVICETOPIC/commands/firmware_update $payload) }\
BT_config { my $payload = $EVENT;; $payload =~ s/$EVTPART0 //;; qq($DEVICETOPIC/commands/MQTTtoBT/config $payload) }\
BT_scan_now:noArg $DEVICETOPIC/commands/MQTTtoBT/config {"interval":0}\
BT_scan_interval:textField $DEVICETOPIC/commands/MQTTtoBT/config {"interval":$EVTPART1}\
BT_blacklist:textField $DEVICETOPIC/commands/MQTTtoBT/config {"black-list":[$EVTPART1]}\
BT_whitelist:textField $DEVICETOPIC/commands/MQTTtoBT/config {"white-list":[$EVTPART1]}\
BT_minrssi:slider,-110,1,0 $DEVICETOPIC/commands/MQTTtoBT/config {"minrssi":$EVTPART1}}\
deleteReadings:noArg {fhem "deletereading -q $NAME (?!associatedWith|attrTemplateVersion|last|LWT|version|Sys_).* 86400"}
attr OMG_Schlafzimmer stateFormat <a href="http://Sys_ip" target="_blank">\
LWT\
</a>Version: version
Readings kommen rein soweit so gut nur wenn ich die gtags danach manuell anlege
defmod OMG_autogtag MQTT2_DEVICE autogtag
attr OMG_autogtag DbLogExclude .*
attr OMG_autogtag autocreate 0
attr OMG_autogtag devicetopic home/OMG_Schlafzimmer
attr OMG_autogtag event-min-interval .*:300
attr OMG_autogtag event-on-change-reading .*
attr OMG_autogtag getList batteryPercent:noArg batteryPercent { my $id = ReadingsVal($NAME,'id','autogtag');; qq($DEVICETOPIC/commands/MQTTtoBT/config {"ble_read_address":"$id","ble_read_service":"180f","ble_read_char":"2a19","value_type":"HEX"}) }
attr OMG_autogtag icon gtag_kontur
attr OMG_autogtag model OpenMQTTGateway_BT_gtag
attr OMG_autogtag readingList home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/autogtag:.* { $EVENT =~ m,characteristic...0x2a19.*read[^\d]+([\d]+), ? return { batteryPercent => hex($1) } : $TOPIC =~ m,home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; my $rets = json2nameValue($EVENT);; $rets->{last_IO} = $1;; $rets->{"rssi_$1"} = $rets->{rssi};; return $rets}
attr OMG_autogtag room MQTT2_DEVICE
attr OMG_autogtag setList beep:noArg { my $id = ReadingsVal($NAME,'id','autogtag');; qq($DEVICETOPIC/commands/MQTTtoBT/config {"ble_read_address":"$id","ble_read_service":"180f","ble_read_char":"2a19","value_type":"HEX","immediate":true}) }
attr OMG_autogtag stateFormat Last IO: last_IO
setstate OMG_autogtag Last IO: last_IO
setstate OMG_autogtag 2023-04-28 11:44:33 IODev mqtt2server
setstate OMG_autogtag 2023-04-28 11:44:33 attrTemplateVersion 20220929
defmod 7C2F80EAED4B_presence PRESENCE function { my $maxage = AttrVal("OMG_autogtag","maxPresenceAge","300");;;; ReadingsAge("OMG_autogtag","last_IO","100000") < $maxage ? 1 : 0 }
attr 7C2F80EAED4B_presence DbLogExclude .*
attr 7C2F80EAED4B_presence room Status
attr 7C2F80EAED4B_presence userReadings rssi_schlafzimmer { ReadingsVal("OMG_autogtag","OMG_Schlafzimmer_rssi",0)}, rssi_wohnzimmer { ReadingsVal("OMG_autogtag","OMG_unten_rssi",0)}
kommen keine Readings im gtag und das presence bleibt auf absent
Was mache ich hier falsch komme erst mal nicht weiter.
Andre
Fehler gefunden lag an der reading und set list dort stand der Name des Device statt der mac Adresse
Als ich das Device angelegt hatte und zwar so
set OMG_Schlafzimmer attrTemplate OpenMQTTGateway_BT_gtag 7C2F80C379B6 autogtag
wurde das wohl falsch eingtragen
ein set OMG_Schlafzimmer attrTemplate OpenMQTTGateway_BT_gtag 7C2F80C379B6 funktionierte
nicht da erscheint ein
Need the following parameters for the attrTemplate OpenMQTTGateway_BT_gtag
Pls. enter your bluetooth device ID