mqtt2.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 15 Dezember 2018, 11:44:43

Vorheriges Thema - Nächstes Thema

tomcat.x

Ok. Ich dachte, das hätte ich schon mal anders gelesen. Aber gerade nachgeschaut: Zumindest auf der Verpackung steht das genauso. Das erklärt es natürlich.

Bei dem XiaomiBTLESens habe ich das auch. Aber ich war im dortigen Thread im Zusammenhang mit der Implementierung der Sensoren auf einen Verweis auf ein Python Skript gestoßen. Und das mittlerweile genauso in Github beim OpenMQTTGateway. Wenn also beide Implementierungen die gleiche Vorlage hatten, wäre auch der Fehler in beiden.

Aber die Diskussion hier ist damit auf jeden Fall schon zu Ende.
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

tomcat.x

Letzter OT Post hier: Der Temperaturbereich (0-60°C) gilt scheinbar mehr für die MI Firmware. Der verbaute Sensor (SHTV3/SHTC3) kann wohl -40 bis 125°C. Zumindest gehen mit der ATC (oder pvvx) Firmware auch negative Temperaturen, getestet habe ich das bis -18 im Gefrierschrank ;-). Je nach Firmware spielt dann die LCD-Anzeige in der aktuellen Version nicht mehr mit (zu wenig Stellen), aber in fhem habe ich richtige Werte bekommen.

Nicht OT ist vielleicht der Hinweis, dass das OpenMQTTGateway explizit auch mit dem Advertisment-Format der ATC-Firmware umgehen kann und dafür kein weiteres Template notwendig ist, das funktioniert mit OpenMQTTGateway_BT_temp_hum_sensor.

FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Beta-User

[OT]
Danke für den Hinweis, dass die ATC-firmware das besser macht!

Dann bin ich umso zufriedener, dass ich den Schritt gemacht habe, auch wenn meine bisher alle im Innenbereich zum Einsatz kommen.

Falls jemand Ahnung hat, wie man das decoding macht, wäre es evtl. eine gute Idee, CoolTux zu unterstützen und den Sensor in der ATC-Version auch in das XiaomiBTLE-Modul aufzunehmen, das sollte eigentlich kein Hexenwerk sein.

(Grundsätzlich halte ich aber die ESP32/OpenMQTTGateway-Lösung trotz WLAN für die bessere Implementierung, wobei m.E. das Anbringen einer ordentlichen Antenne Pflicht ist; was da auf dem PCB vorhanden ist, scheint nicht unbedingt oprimal zu sein...).

Weitere Diskussion aber bitte ggf. tatsächlich separat...

[/OT]
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

tomcat.x

Hallo, 2 Fragen bzw. Anregungen zu den Templates:

1. OpenMQTTGateway_MCU:
Was haltet Ihr davon, folgende oder ähnliche Attribute aufzunehmen? Oder habe nur ich da immer wieder "Schmutz" in den Readings?

  • periodicCmd -> deleteReadings:1440
  • setList -> deleteReadings:noArg {fhem "deletereading -q $NAME (?!LWT|attrTemplateVersion|state|subscriptions).* 86400"}

2. OpenMQTTGateway_BT_scanner
Das Gerät wird doch auch bei mehreren Gateways nur anhand eines einzelnen über dieses Template angelegt und enthält dann in den Werten für das setlist-Attribut auch nur ein Gateway. Damit werden dann Befehle (z. B. Whitelist) auch nur an dieses eine Gateway gesendet. Oder habe ich bei der Nutzung des Templates was falsch gemacht?
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Beta-User

Die OpenMQTTGateway-Geschichten können wir gerne separat diskutieren, würde sich ggf. lohnen, dazu einen neuen Thread anzufangen und nicht den "Rolling-Code"-Thread weiterzuführen, zumal es dann auch wieder zu https://wiki.fhem.de/wiki/OpenMQTTGateway passen sollte (bzw. der dort geänderten Fassung).

Vorab vielleicht ein paar Anmerkungen:
- den "scanner" hatte ich mal zur Generalisierung angedacht, also viele GW's => ein "scanner". So läuft das grade bei mir. Ist einerseits praktisch, weil eben alles zusammenläuft, andererseits geht dann darüber das mit Blacklist etc. nicht mehr.
(in meiner Installation dümpelt das ganze gemütlich vor sich hin und funktioniert (mit Temp/Hum-Sensoren) zu meiner Zufriedenheit, bisher war das Interesse von weiteren Usern gering, daher hatte ich da keine große Energie mehr reininvestiert, obwohl es ein "stub" ist; "unnötige Readings" habe ich nicht, aber hartnäckige autocreates).
- Von daher finde ich den Vorschlag gut, das umzubauen. Mein Idee wäre dahingehend, dass wir ein (neues) attrTemplate (OpenMQTTGateway_MCU_BT?) bauen, das beide Funktionen zusammenführt (und einen comment zur Syntax für blacklist enthält), wenn man ein BT-fähiges GW hat? Das "scanner" könnte man dann generalisieren, aber dafür eben die Optionen zu blaicklist etc. weglassen?

Am liebsten wären mir fertige Vorschläge ::) ...
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

tomcat.x

Ein neuer Thread mach sicher Sinn und die entsprechenden Posts gleich mitnehmen. Müsstest Du das bei einem Admin anfragen, weil das hier Dein Thread ist?

Den Scanner finde ich schon praktisch. War mir halt nicht sicher, ob ich das richtig nutze, weil MQTT für mich komplettes Neuland ist, mit allem was dazu gehört wie Topics, Subscriptions, ...

Von daher bin ich glaube ich noch nicht so weit, da sinnvolle Vorschläge zu machen. Von dem Punkt mit White/Blacklist auf allen Gateways gleich einzustellen, bin ich beispielsweise schon wieder weg. Macht vielleicht schon mehr Sinn, das unterschiedlich einzustellen.

Und zu dem "Schmutz" in den Readings noch: Ich meine da zum Beispiel so was  "__name___ATC_CC9110___rssi__-72__distance__4.28", also keine sinnvollen Readings, die ich einfach nur nicht brauche.
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

barneybaer

Hallo, ich habe mal am Template für Xiaomi Fenster Kontakten gebastelt, da sie in der aktuellen mqtt2.template nicht von Alexa als Contact Sensoren erkannt werden. Der Patch dazu ist unten zu finden.

Beta-User

Thx, hab's übernommen und hoffe, dass es in der jetzigen Form auch weiter mit anderen Sprachsteuerungslösungen kompatibel ist...
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

Jan_H

Hallo zusammen,

ich bin gerade dabei mich wieder in FHEM reinzufinden. Ganz neu ist für mich die MQTT-Geräte.
Nachdem ich vor einiger Zeit einen Shelly 1 erfolgreich eingebunden habe, wollte ich heute einen Shelly 2.5 konfigurieren.

Der Shelly wird auch über MQTT in meinem Raum MQTT_DEVICE als MQTT2_shellyswitch25_xxxxxxx angezeigt. Wenn ich jetzt das Template Shelly25_split auswähle und "sei" drücke, erhalte ich eine Abfrage: "Specify the unknown parameters for shelly25_split:" und kann aus zwei Optionen wählen, ob ich das userreading für die Energiemessung setzen möchte. Ich kann auch hinter der jeweiligen Auswahl eine Checkbox auswählen.

Aber: Wie bestätige ich meine Auswahl? Ich komme nachdem ich die Checkbox gesetzt habe nicht weiter. Könnt ihr mir sagen, was ich falsch mache?

Danke und viele Grüße
Jan

Beta-User

Hab's grade versucht nachzustellen (ohne aktive Sprachsteuerung). Kann auswählen und nach Click auf den Button "OK" wird dann auch der 2. Kanal erstellt.

Bitte um eine genauere Beschreibung, was (nicht) passiert und ggf. einen screenshot von dem Dialogfeld mit der Auswahl, wenn da _kein_ OK-Button sein sollte.
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

Jan_H

#415
Hallo Beta-User,

vielen Dank für Deine Antwort.

Der OK-Button erscheint nicht. Ich habe es jetzt auch mal mit verschiedenen Styles und Browsern versucht, aber ich sehe ihn nicht.
Hier ist ein Screenshot meines letzten Versuches mit dem Style "Dark" und dem Firefox:


EDIT: Screenshot ausgetauscht

rudolfkoenig

Wenn ich was zum Nachstellen bekomme (bitte ohne Hardware), dann werde ich das untersuchen.

Beta-User

Zitat von: rudolfkoenig am 03 März 2021, 10:41:50
Wenn ich was zum Nachstellen bekomme (bitte ohne Hardware), dann werde ich das untersuchen.
@Jan_H:
Eine "RAW-Definition" von dem Ausgangsgerät sollte es tun.

Da wir (wenn mich meine Erinnerung nicht trügt) was ähnliches schon mal hatten: FHEM ist tagesaktuell und der Browsercache erneuert (ff: strg+F5)?

Wenn ja, bitte einen neuen Thread dazu aufmachen (bin am Zweifeln, ob MQTT der richtige Bereich ist, aber das sollte ok sein). Hat dann vermutlich nicht speziell was mit diesem attrT zu tun...
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

Jan_H

@Beta-User

STRG+F5 habe ich beim EDGE gemacht und der Firefox unter Windows war sogar ganz neu installiert, also am Cache kann es nicht liegen.
Die FHEM-Version habe gestern nochmal per update aktualisiert.

Ich mache dann gleich mal einen neuen Thread auf.

Danke!

kjmEjfu

Ich habe mal ein Template für openWB gebastelt. Allerdings frage ich mich, ob man den Teil readingList irgendwie kürzen kann. openWB nutzt (derzeit) keine JSON, sondern packt tatsächlich in jeden Pfad(?) den entsprechenden Wert rein.

name:openWB_with_two_loading_points
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*openWB.*
desc:Applies to openWB interface with 2 loading point. Firmware 1.9.x+ is needed <br> For direct connection to openWB MQTT Server. Otherwise check devicetopic.
#order:L_17b
#par:BASE_TOPIC;base topic: Base topic prefix, without trailing /;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^\/:]+)[\/].+, ? $1 : undef }
#par:IODEV;IO Dev without trailing :;{ AttrVal("DEVICE","IODev","") }
attr DEVICE devicetopic openWB
attr DEVICE icon building_carport_socket
attr DEVICE model openWB
setreading DEVICE attrTemplateVersion 20210406
attr DEVICE devicetopic openWB
attr DEVICE stateformat Lademodus: ChargeMode | Ladestatus Lp1: lp_1_ChargeStatus | verbleibende Ladezeit Lp1: lp_1_TimeRemaining <br> Ladestatus Lp2: lp_2_ChargeStatus | verbleibende Ladezeit Lp2: lp_2_TimeRemaining
attr DEVICE readingList \
$\DEVICETOPIC/global/WHouseConsumption:.* WHouseConsumption \
$\DEVICETOPIC/global/WAllChargePoints:.* WAllChargePoints \
$\DEVICETOPIC/global/ChargeMode:.* {my %h=(0=>'SofortLaden',1=>'MinPV',2=>'NurPV',3=>'Stop',4=>'Standby'); return {ChargeMode=>$h{$EVENT}}} \
$\DEVICETOPIC/system/Date:.* Date \
$\DEVICETOPIC/system/Timestamp:.* Timestamp \
$\DEVICETOPIC/system/Uptime:.* Uptime \
$\DEVICETOPIC/system/IpAddress:.* IPAddress \
$\DEVICETOPIC/system/Version:.* Version \
$\DEVICETOPIC/evu/ASchieflast:.* evu_ASchieflast \
$\DEVICETOPIC/evu/Hz:.* evu_Hz \
$\DEVICETOPIC/evu/APhase1:.* evu_Phase1 \
$\DEVICETOPIC/evu/APhase2:.* evu_APhase2 \
$\DEVICETOPIC/evu/APhase3:.* evu_APhase3 \
$\DEVICETOPIC/evu/PfPhase1:.* evu_PfPhase1 \
$\DEVICETOPIC/evu/PfPhase2:.* evu_PfPhase2 \
$\DEVICETOPIC/evu/PfPhase3:.* evu_PfPhase3 \
$\DEVICETOPIC/evu/VPhase1:.* evu_VPhase1 \
$\DEVICETOPIC/evu/VPhase2:.* evu_VPhase2 \
$\DEVICETOPIC/evu/VPhase3:.* evu_VPhase3 \
$\DEVICETOPIC/evu/WPhase1:.* evu_WPhase1 \
$\DEVICETOPIC/evu/WPhase2:.* evu_WPhase2 \
$\DEVICETOPIC/evu/WPhase3:.* evu_WPhase3 \
$\DEVICETOPIC/evu/W:.* evu_W_evu \
$\DEVICETOPIC/evu/WhExported:.* evu_WhExported \
$\DEVICETOPIC/lp/1/P%Soc:.* lp_1_Pct_Soc \
$\DEVICETOPIC/lp/1/countPhasesInUse:.* lp_1_countPhasesInUse \
$\DEVICETOPIC/lp/1/ChargePointEnabled:.* lp_1_ChargePointEnabled \
$\DEVICETOPIC/lp/1/ChargeStatus:.* lp_1_ChargeStatus \
$\DEVICETOPIC/lp/1/kWhChargedSincePlugged:.* lp_1_kWhChargedSincePlugged \
$\DEVICETOPIC/lp/1/kWhActualCharged:.* lp_1_kWhActualCharged \
$\DEVICETOPIC/lp/1/kWhCounter:.* lp_1_kWhCounter \
$\DEVICETOPIC/lp/1/strChargePointName:.* lp_1_strChargePointName \
$\DEVICETOPIC/lp/1/TimeRemaining:.* lp_1_TimeRemaining \
$\DEVICETOPIC/lp/1/VPhase1:.* lp_1_VPhase1 \
$\DEVICETOPIC/lp/1/VPhase2:.* lp_1_VPhase2 \
$\DEVICETOPIC/lp/1/VPhase3:.* lp_1_VPhase3 \
$\DEVICETOPIC/lp/1/APhase1:.* lp_1_APhase1 \
$\DEVICETOPIC/lp/1/APhase2:.* lp_1_APhase2 \
$\DEVICETOPIC/lp/1/APhase3:.* lp_1_APhase3 \
$\DEVICETOPIC/lp/1/W:.* lp_1_W \
$\DEVICETOPIC/lp/2/P%Soc:.* lp_2_Pct_Soc \
$\DEVICETOPIC/lp/2/countPhasesInUse:.* lp_2_countPhasesInUse \
$\DEVICETOPIC/lp/2/ChargePointEnabled:.* lp_2_ChargePointEnabled \
$\DEVICETOPIC/lp/2/ChargeStatus:.* lp_2_ChargeStatus \
$\DEVICETOPIC/lp/2/kWhChargedSincePlugged:.* lp_2_kWhChargedSincePlugged \
$\DEVICETOPIC/lp/2/kWhActualCharged:.* lp_2_kWhActualCharged \
$\DEVICETOPIC/lp/2/kWhCounter:.* lp_2_kWhCounter \
$\DEVICETOPIC/lp/2/strChargePointName:.* lp_2_strChargePointName \
$\DEVICETOPIC/lp/2/TimeRemaining:.* lp_2_TimeRemaining \
$\DEVICETOPIC/lp/2/VPhase1:.* lp_2_VPhase1 \
$\DEVICETOPIC/lp/2/VPhase2:.* lp_2_VPhase2 \
$\DEVICETOPIC/lp/2/VPhase3:.* lp_2_VPhase3 \
$\DEVICETOPIC/lp/2/APhase1:.* lp_2_APhase1 \
$\DEVICETOPIC/lp/2/APhase2:.* lp_2_APhase2 \
$\DEVICETOPIC/lp/2/APhase3:.* lp_2_APhase3 \
$\DEVICETOPIC/lp/2/W:.* lp_2_W \
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE setlist Lademodus:SofortLaden,Min+PV,NurPV,Stop,Standby { my %h=(SofortLaden=>'0','Min+PV'=>'1',NurPV=>'2',Stop=>'3',Standby=>'4');qq({$DEVICETOPIC/set/Chargemode $h{$EVTPART1}}) } \
Lp1_DirectChargeSubMode:Aus,kWh_Laden,SoC_Laden { my %h=(Aus=>'0',kWh_Laden=>'1',SoC_Laden=>'2');qq({$DEVICETOPIC/set/lp/1/DirectChargeSubMode $h{$EVTPART1}}) } \
Lp1_DirectChargeSoc:slider,1,1,100 $DEVICETOPIC/set/lp/1/DirectChargeSoc { $EVTPART1 } \
Lp1_DirectChargeAmps:slide,6,1,32 $DEVICETOPIC/set/lp/1/DirectChargeAmps { $EVTPART1 } \
Lp1_kWhDirectChargeToCharge:slide,1,1,100 $DEVICETOPIC/set/lp/1/kWhDirectChargeToCharge { $EVTPART1 } \
Lp1_ChargePointEnabled:Ein,Aus { my $value = $EVTPART1 eq "Ein" ? "1" : "0"; qq({$DEVICETOPIC/set/lp/1/ChargePointEnabled $value}) } \
Lp1_ResetDirectCharge:noArg $DEVICETOPIC/set/lp/1/boolResetDirectCharge 1 \
Lp2_DirectChargeSubMode:Aus,kWh_Laden,SoC_Laden { my %h=(Aus=>'0',kWh_Laden=>'1',SoC_Laden=>'2');qq({$DEVICETOPIC/set/lp/2/DirectChargeSubMode $h{$EVTPART1}}) } \
Lp2_DirectChargeSoc:slider,1,1,100 $DEVICETOPIC/set/lp/2/DirectChargeSoc { $EVTPART1 } \
Lp2_DirectChargeAmps:slide,6,1,32 $DEVICETOPIC/set/lp/2/DirectChargeAmps { $EVTPART1 } \
Lp2_kWhDirectChargeToCharge:slide,1,1,100 $DEVICETOPIC/set/lp/2/kWhDirectChargeToCharge { $EVTPART1 } \
Lp2_ChargePointEnabled:Ein,Aus { my $value = $EVTPART1 eq "Ein" ? "1" : "0"; qq({$DEVICETOPIC/set/lp/2/ChargePointEnabled $value}) } \
Lp2_ResetDirectCharge:noArg $DEVICETOPIC/set/lp(2/boolResetDirectCharge 1


Migriere derzeit zu Home Assistant