Autor Thema: mqtt2.template: bugs, Fragen, Anregungen  (Gelesen 1360 mal)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5378
  • Maintainer: mqtt2.template, httpmod.template
mqtt2.template: bugs, Fragen, Anregungen
« am: 15 Dezember 2018, 11:44:43 »
Hallo zusammen,

Bitte nutzt möglichst diesen Thread, wenn ihr Fragen zur Nutzung von mqtt2.template habt.

Was gehört nicht hierher?
- Allgemeine Fragen die Nutzung des features attrTemplate an sich (also nicht speziell auf mqtt2 bezogen)
- Vorschläge für neue templates für mqtt2. Dafür nutzt ihr bitte diesen Thread und beachtet die Hinweise.

Sinnvoll ist es, zuerst die Hinweise zu einzelnen mqtt2.templates zu lesen. Diese erhält man mit set <device> attrTemplate ?

Viel Spaß mit dem neuen Feature!

Beta-User
« Letzte Änderung: 18 Dezember 2018, 10:35:00 von Beta-User »
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | CUL_HM: div. Hardware mit VCCU | MySensors seriell (2.3.1@RS485, daran div. Sensoren usw., u.a. DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5378
  • Maintainer: mqtt2.template, httpmod.template
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #1 am: 18 Dezember 2018, 10:37:42 »
@Moderator

Wäre es möglich, den genannten und hier nochmal verlinkten Beitrag https://forum.fhem.de/index.php/topic,94495.0.html im MQTT-Bereich anzupinnen?

Danke vorab!
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | CUL_HM: div. Hardware mit VCCU | MySensors seriell (2.3.1@RS485, daran div. Sensoren usw., u.a. DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Offline sinus61

  • Full Member
  • ***
  • Beiträge: 455
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #2 am: 06 Januar 2019, 16:34:21 »
Kleine Anregung zu den Templates, ich füge meinen Devices noch folgendes Userreading hinzu:

IPAddress:POWER.*:.* {my $ip=ReadingsVal($NAME,"IPAddress",""); $ip =~ s/<[^>]*>//gs; return("<html><a href='http://".$ip."/'>".$ip."</a></html>")}

Das macht das Reading IPAddress klickbar, so kommt man schnell auf das Webinterface des Gerätes. Weiß nicht ob sich das noch einfacher lösen lässt, aber vielleicht könnte man das auch in den Templates haben.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline OdfFhem

  • Full Member
  • ***
  • Beiträge: 197
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #3 am: 06 Januar 2019, 17:47:43 »
@sinus61
Ist die folgende Anweisung im Userreading notwendig?
$ip =~ s/<[^>]*>//gs;

Denn eigentlich steht ja in IPAddress nur die IP-Adresse drin ...

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5378
  • Maintainer: mqtt2.template, httpmod.template
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #4 am: 06 Januar 2019, 18:03:04 »
Hmmm,
also das mit den userReadings gefällt mir allgemein nicht, und da besteht auch die Gefahr, dass irgendwas überschrieben wird, was schon da ist (oder ich muß lernen, wie man vernünftig grept, um nur den Teil zu schreiben/tauschen.

Alternativvorschlag: Ein echtes Reading setzen. Da die IP sich ja (hoffentlich) nie ändert, macht man das halt einmalig, indem man das entsprechende Template anwendet. (Eine Variante wäre, ein userAttr zu erlauben).

Vielleicht mag jemand das mal testen bzw. verbessern:
name:A_01x_tasmota_create_weblink_reading
filter:TYPE=MQTT2_DEVICE
desc:Applies to all tasmota devices <br>NOTE: This template will add or renew a reading Webinterface for direct access to the device's web interface
par:DEV_IP;Current IP of the device;{ AttrVal("DEVICE","IPAddress","")}
setreading DEVICE Webinterface <html><a href=http://DEV_IP/>Webinterface</a></html>
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | CUL_HM: div. Hardware mit VCCU | MySensors seriell (2.3.1@RS485, daran div. Sensoren usw., u.a. DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Offline sinus61

  • Full Member
  • ***
  • Beiträge: 455
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #5 am: 06 Januar 2019, 18:08:17 »
Denn eigentlich steht ja in IPAddress nur die IP-Adresse drin ...

Aber nur am Anfang. Wenn sich das Reading mal aktualisiert steht da der HTML Kram mit drin und vermehrt sich dann jedesmal.

Offline sinus61

  • Full Member
  • ***
  • Beiträge: 455
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #6 am: 06 Januar 2019, 18:15:31 »
also das mit den userReadings gefällt mir allgemein nicht, und da besteht auch die Gefahr, dass irgendwas überschrieben wird, was schon da ist (oder ich muß lernen, wie man vernünftig grept, um nur den Teil zu schreiben/tauschen.

Genaugenommen wird ja nur das echte Reading IPAddress mit einem Link versehen, kein zusätzliches Userreading angelegt. Könnte man vielleicht auch über ein Template lösen, ich wollte aber kein zusätzliches Reading haben, sondern das vorhandene nutzen.

Offline OdfFhem

  • Full Member
  • ***
  • Beiträge: 197
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #7 am: 06 Januar 2019, 18:17:28 »
@sinus61
Verstehe und beim genauen Hinsehen sehe ich auch, dass gar kein "echtes" Userreading angelegt wird, sondern das originäre Reading überschrieben wird.
Ist das erstrebenswert, da ja der ursprüngliche Wert quasi verlorengeht ?


@Beta-User
Im Template A_01x_tasmota_create_weblink_reading dürfte noch die Bereitstellung vom Parameter DEVICE fehlen ...
« Letzte Änderung: 06 Januar 2019, 18:49:10 von OdfFhem »

Offline sinus61

  • Full Member
  • ***
  • Beiträge: 455
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #8 am: 06 Januar 2019, 18:32:53 »
Ist das erstrebenswert, da ja der ursprüngliche Wert quasi verlorengeht ?

Ist vielleicht Geschmackssache, die IP Adresse bleibt aber ja genauso sichtbar wie vorher, ist jetzt nur mit einem Link versehen, ähnlich wie es z.B. bei IODev ist.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5378
  • Maintainer: mqtt2.template, httpmod.template
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #9 am: 06 Januar 2019, 19:34:30 »
Hm, nur als Idee: könnte man die eventMap noch so umbasteln, dass man das userReadings-Dingens dafür nicht braucht?

Sonst müßte ich vermutlich die Struktur der Tasmota-templates nochmal umbasteln, dass es eines gibt ohne die userReadings (muß mir das aber in Ruhe mal ansehen, das mit der eventMap wäre ggf. generischer und mehr im Hintergrund).
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | CUL_HM: div. Hardware mit VCCU | MySensors seriell (2.3.1@RS485, daran div. Sensoren usw., u.a. DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Offline santalaus

  • Full Member
  • ***
  • Beiträge: 125
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #10 am: 12 Januar 2019, 12:22:50 »
Hallo,

ist es möglich in A_01b_tasmota_1ch+motion+SI7021
Das ganze "flexibel" für SI7020/7021 zu gestallten?

Ich habe einen GY-21 aka SHT21,SI7021,HUT21 der sich als SI7020 meldet.

Nico

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5378
  • Maintainer: mqtt2.template, httpmod.template
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #11 am: 12 Januar 2019, 17:43:51 »
ist es möglich in A_01b_tasmota_1ch+motion+SI7021
Das ganze "flexibel" für SI7020/7021 zu gestallten?
Hmm, in dem aktuellen template ist keine readingList drin, es geht aber davon aus, dass die Werte an ein bestimmtes Reading geschickt werden. Wenn das anders ist, funktioniert es natürlich nicht...
Kann jemand sagen, wo der konkrete Pfad herkommt, an den der Tasmota publisht? Wenn man das vereinheitlichen könnte (ggf. durch eine Anweisung via MQTT) ginge das vielleicht. Am besten wäre, wenn das Reading dann jeweils generisch wäre (temperature und humidity?).

Aber dazu sollte sich das erst mal jemand ansehen, der ein oder mehrere solcher Geräte hat. Beispiele, wie das mit dem Umkonfigurieren ginge, sind in der aktuellen template-file zu finden.
Ansonsten kannst du ja die Readings, auf die zugegriffen wird im devStateIcon auch manuell ändern; die templates sollen/müssen m.E. nicht jeden konkreten Fall abdecken, sondern ggf. auch als "Steinbruch" genutzt werden können für eigene Ideen ;) .

Genaugenommen wird ja nur das echte Reading IPAddress mit einem Link versehen, kein zusätzliches Userreading angelegt. Könnte man vielleicht auch über ein Template lösen, ich wollte aber kein zusätzliches Reading haben, sondern das vorhandene nutzen.
Ok, das habe ich jetzt verstanden, finde es aber nach wie vor suboptimal (weil andere andere userReadings haben können und ich das Attribut möglichst nicht unbesehen überschreiben will).
In den aktuellen templates ist ein auskommentierter Vorschlag für eine eventMap drin. Sowas müßte eigentlich mit demselben Effekt funktionieren ohne Nebenwirkungen, könnt ihr euch das mal ansehen?
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | CUL_HM: div. Hardware mit VCCU | MySensors seriell (2.3.1@RS485, daran div. Sensoren usw., u.a. DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 1067
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #12 am: 17 Januar 2019, 13:12:31 »
Hallo,

wollte mal fragen weshalb du in der mqtt2.template  bei jedem Template das readingList und setList verwendet die zwei Leerzeichen vor jedem Listen-Kommando vornimmst ?

Dadurch wird ab dem zweiten Listeneintrag jedes Kommando in Fhemweb um zwei Leerzeichen eingerückt zum ersten Listeneintrag dargestellt. siehe Anhang

Ich hab ein wenig gespielt. Beide Beispiele sind möglich das die Kommandos nicht eingerückt werden. Der erste Listeneintrag kann mit oder ohne Leerzeichen angegeben werden.

attr DEVICE setList \
off:noArg    cmnd/DEVNAME/POWER 0\
on:noArg     cmnd/DEVNAME/POWER 1\
toggle:noArg cmnd/DEVNAME/POWER 2

attr DEVICE setList \
  off:noArg    cmnd/DEVNAME/POWER 0\
on:noArg     cmnd/DEVNAME/POWER 1\
toggle:noArg cmnd/DEVNAME/POWER 2

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5378
  • Maintainer: mqtt2.template, httpmod.template
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #13 am: 17 Januar 2019, 13:23:33 »
Hmmm,

das mit den Leerzeichen hatte ich so (allerdings offensichtlich nicht ganz konsitent) aus den ersten Versionen übernommen.

Für mich hat es den Vorteil, dass es in der template-File jeweils übersichtlicher ist: Durch die Einrückung ist reicht leicht erkennbar, was zusammengehört ;) . Dass das bei langen Topics zu unschönen Darstellungen führt, ist nicht so toll. Mal schauen, ob ich das bei Gelegenheit ändere oder wenigstens vereinheitliche (erster Listeneintrag).

Danke für den Hinweis jedenfalls!
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | CUL_HM: div. Hardware mit VCCU | MySensors seriell (2.3.1@RS485, daran div. Sensoren usw., u.a. DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Offline torte

  • Developer
  • Full Member
  • ****
  • Beiträge: 420
Antw:mqtt2.template: bugs, Fragen, Anregungen
« Antwort #14 am: 17 Januar 2019, 14:21:24 »
Hi Beta-User,

shelly2 im RollerMode

sorry, habe gerade erst die Änderungen ausprobieren können.
Leider bekomme ich dann die Meldung
Global symbol "$JSONMAP" requires explicit package name (did you forget to declare "my $JSONMAP"?) at (eval 69161) line 1.

Muss ich noch was machen?

Habe bei meinem aber auch noch ein bissel Hand angelegt.
attr DEVICE setList \
  open:noArg shellies/DEVNAME/roller/0/command open\
  close:noArg shellies/DEVNAME/roller/0/command close\
  stop:noArg shellies/DEVNAME/roller/0/command stop\
  state:slider,0,1,100 shellies/DEVNAME/roller/0/command/pos $EVTPART1
attr DEVICE readingList shellies/DEVNAME/roller/0/pos:.* state

Habe das Reading pos rausgeschmissen war ja dasselbe wie das state.
Autoshuter habe ich (noch) nicht  :-\ braucht der die Position auf pct?

Grüße
Torte