Fragen zur Konfiguration von Templates

Begonnen von coolice, 06 Mai 2021, 18:13:47

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Zitat von: LuGu am 06 September 2021, 07:48:46
Das Widget kann man ausklappen (rechts oben), dann gibt es mehr Infos (siehe Beispiel).

Oh Mann, das war jetzt zu einfach  :-[

Danke fürs Draufstoßen.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

fretti

Hallo,

ich habe eine dimmbares HUEDevice von IKEA. Das dimmen funktioniert auch soweit, allerdings möchte ich bei einem Longklick auf den rechten Button die volle Helligkeit haben.
Aber das will nicht!?
{ "template": "dimmer",
"main": [
    {
      "leftBtn": "mdi-minus",
      "leftClick": ["pct:10:pct %i-10","pct::0"],
      "leftLong": ["state::off"],
      "text": ["onoff:1:an:","onoff:0:aus"],
      "rightBtn": "mdi-plus",
      "rightClick": ["pct:90:100","pct::pct %i10"],
      "rightLong": ["pct::100"]
    }
  ]
}


oder ist das nicht so möglich?
promox, debian, rpi, homematic, mqtt, dect, z2m

jemu75

Zitat von: fretti am 16 September 2021, 09:14:34
Hallo,

ich habe eine dimmbares HUEDevice von IKEA. Das dimmen funktioniert auch soweit, allerdings möchte ich bei einem Longklick auf den rechten Button die volle Helligkeit haben.
Aber das will nicht!?
{ "template": "dimmer",
"main": [
    {
      "leftBtn": "mdi-minus",
      "leftClick": ["pct:10:pct %i-10","pct::0"],
      "leftLong": ["state::off"],
      "text": ["onoff:1:an:","onoff:0:aus"],
      "rightBtn": "mdi-plus",
      "rightClick": ["pct:90:100","pct::pct %i10"],
      "rightLong": ["pct::100"]
    }
  ]
}


oder ist das nicht so möglich?

Probiere es bitte mal mit

["state::on"]

Dr. Boris Neubert

Hallo,

Zitat von: fretti am 16 September 2021, 09:14:34
{ "template": "dimmer",
"main": [
...}


im templ_dimmer.json ist

      ...
      "rightLong": ["state::on"]
      ...


Ich habe das Template so für Ikea-Tradfri-Lampen verwendet. Nur der Klick auf den Text an/aus geht nicht.

Kann man aus dem main-Abschnitt nur einzelne Attribute in den appOptions am FHEM-Device überschreiben oder muss man die gesamte main-Sektion wiederholen?

Ist vorgesehen, von Benutzer erstellte Templates einzusammeln? Dann sollten wir uns Gedanken über Namenskonventionen machen (es gibt ja schon Dimmer und Dimmer2).

Überschreiben von templ_dimmer.json kommt nicht in Frage, weil ich dann nicht einfach mehr Updates machen kann.

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

fretti

Zitat von: jemu75 am 16 September 2021, 13:41:50
Probiere es bitte mal mit

["state::on"]


Bei Verwendung von state::on schaltet die Lampe in der letzten eingestellten Helligkeit ein, deshalb meine Idee über pct auf volle Helligkeit zu gehen.
promox, debian, rpi, homematic, mqtt, dect, z2m

Dr. Boris Neubert

Zitat von: fretti am 16 September 2021, 16:11:24
Bei Verwendung von state::on schaltet die Lampe in der letzten eingestellten Helligkeit ein, deshalb meine Idee über pct auf volle Helligkeit zu gehen.

Verstehe.  Ich probiere mal mit...

Habe ein Template templ_dimmer3.json erstellt und der dimmbaren Tradfri-Lampe zugewiesen:
{
  "name": "dimmer3",
  "author": "borisneubert",
  "date": "2021-09-16",
  "status": {
    "bar": ["pct::%n:success"],
    "error": []
  },
  "main": [
    {
      "leftBtn": "mdi-minus",
      "leftClick": ["pct:10:pct %i-10","pct::off"],
      "leftLong": ["state::off"],
      "text": ["pct:1:an:","pct::aus"],
      "midClick": ["state::toggle"],
      "rightBtn": "mdi-plus",
      "rightClick": ["pct:90:on","pct::pct %i10"],
      "rightLong": ["pct::100"]
    }
  ],
  "info": {
    "left1": ["pct:1::mdi-lightbulb","pct:::mdi-lightbulb-off"],
    "left2": ["pct::%s%"]
  }
}


Bei rightLong komme ich nach Lesen der Doku auf die gleiche Lösung wie fretti. Ich will außerdem togglen, wenn ich die mittlere Taste (an/aus) klicke. Beides funktioniert nicht.

Wie kann man sehen/debuggen, welche Kommandos fhemApp absetzt?

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

jemu75

Zitat von: Dr. Boris Neubert am 16 September 2021, 18:00:32
Verstehe.  Ich probiere mal mit...

Habe ein Template templ_dimmer3.json erstellt und der dimmbaren Tradfri-Lampe zugewiesen:
{
  "name": "dimmer3",
  "author": "borisneubert",
  "date": "2021-09-16",
  "status": {
    "bar": ["pct::%n:success"],
    "error": []
  },
  "main": [
    {
      "leftBtn": "mdi-minus",
      "leftClick": ["pct:10:pct %i-10","pct::off"],
      "leftLong": ["state::off"],
      "text": ["pct:1:an:","pct::aus"],
      "midClick": ["state::toggle"],
      "rightBtn": "mdi-plus",
      "rightClick": ["pct:90:on","pct::pct %i10"],
      "rightLong": ["pct::100"]
    }
  ],
  "info": {
    "left1": ["pct:1::mdi-lightbulb","pct:::mdi-lightbulb-off"],
    "left2": ["pct::%s%"]
  }
}


Bei rightLong komme ich nach Lesen der Doku auf die gleiche Lösung wie fretti. Ich will außerdem togglen, wenn ich die mittlere Taste (an/aus) klicke. Beides funktioniert nicht.

Wie kann man sehen/debuggen, welche Kommandos fhemApp absetzt?

Den Debug-Modus kannst du in der config.json über den Parameter "debugMode": true aktivieren.
siehe auch: https://github.com/jemu75/fhemApp#debug-modus-f%C3%BCr-fhemapp-optional

Unabhängig von dem Debug-Mode kann man das Systemprotokoll über http://<meine_ip>:<port>/fhem/fhemapp/index.html#/syslog aufrufen und sehen, welche Befehle gesendet werden.

Die Befehle, die beim Betätigen der Button erzeugt werden sehen immer wie folgt aus: set <device> <definition>
Die Definition ist das, was du nach dem zweiten Doppelpunkt angibst. Wenn dort also 100 steht dann sieht der set-Befehl wie folgt aus: set device_xyz 100
Das dürfte im konkreten Fall nicht funktionieren, da der Befehl sicher set device_xyz pct 100 lauten muss.

Also sollte die Klick-Definition wie folgt aussehen:

"rightLong": ["pct::pct 100"]

Übrigens, die Definition beinhaltet folgende 3 Blöcke ["<reading welches geprüft werden soll>:<bedingung die erfüllt sein muss>:<set befehl der ausgeführt wird, wenn die Bedingung erfüllt ist>"]
Wenn also zwischen dem ersten Doppelpunkt und dem zweiten Doppelpunkt nichts definiert ist, kannst du im ersten Block faktisch jedes beliebige Reading reinschreiben.
Bitte hier gern auch mal die Doku ansehen - siehe https://github.com/jemu75/fhemApp#zuweisung-von-elementen

Dr. Boris Neubert

Vielen Dank, Jens, für die ausführliche Antwort!

Ich hatte die Doku vorher gelesen, sogar so verstanden, wie Du es nochmal erläutert hast, und dann doch falsch umgesetzt.

Zitat von: jemu75 am 16 September 2021, 21:00:04
Also sollte die Klick-Definition wie folgt aussehen:

"rightLong": ["pct::pct 100"]


Habe dazu jetzt so umgesetzt und es funktioniert damit. @fretti, Deine Aufgabe sollte damit dann genauso erledigt sein, nicht wahr?

Ich habe dann auch gleich selbst kapiert, dass ich auf Texte nicht klicken kann und statt eines Textes eines midBtn eingesetzt, um die Lampe zu toggeln. Folgendes Template funktioniert nun für mich wie gewollt:

{
  "name": "dimmer3",
  "description": "HUEDevice dimmer",
  "author": "borisneubert",
  "date": "2021-09-17",
  "status": {
    "bar": ["pct::%n:success"],
    "error": []
  },
  "main": [
    {
      "leftBtn": "mdi-minus",
      "leftClick": ["pct:10:pct %i-10","pct::off"],
      "leftLong": ["state::off"],
      "midBtn": ["onoff:1:mdi-lightbulb-on","onoff:0:mdi-lightbulb-off-outline"],
      "midClick": ["state::toggle"],
      "rightBtn": "mdi-plus",
      "rightClick": ["pct:90:on","pct::pct %i10"],
      "rightLong": ["pct::pct 100"]
    }
  ],
  "info": {
    "left1": ["pct:1::mdi-lightbulb","pct:::mdi-lightbulb-off"],
    "left2": ["pct::%s%"]
  }
}


Was ich nicht in der Doku gefunden habe aber durch Ausprobieren und Nachdenken ist wie man die Icons benennt. Man muss nämlich dem Namen des Icons von der Seite https://materialdesignicons.com/, der sich bei Mouse-Over zeigt, ein mdi- voranstellen.

Ich gebe für Hilfe immer gerne auch was zurück. Nimmst du Pull-Requests auf Github an?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Gehe ich recht in der Annahme, dass bei Angabe mehrerer Bedingungen z.B. für main.text ALLE Bedingungen geprüft werden?

Wäre es nicht für praktisch alle Anwendungsfälle sinnvoller, wenn die Prüfung nach dem ersten Match abbricht?

Beispiel:

     
"text": ["state:set_open:öffnet...",
           "state:set_close:schließt...",
           "Shutter1_Position:100:offen",
           "Shutter1_Position:1:teils offen",
           "Shutter1_Position::geschlossen"
         ]


Das ist für Tasmota-Rollladen. Wenn der Rollladen runter fährt, wird state auf set_close gesetzt und Shutter1_Position läuft runter. Daher erscheint kurz "schließt..." und dann "teils offen", bis der Rolladen ganz zu ist und "geschlossen" angezeigt wird.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

jemu75

#84
Zitat von: Dr. Boris Neubert am 20 September 2021, 19:01:11
Gehe ich recht in der Annahme, dass bei Angabe mehrerer Bedingungen z.B. für main.text ALLE Bedingungen geprüft werden?

Wäre es nicht für praktisch alle Anwendungsfälle sinnvoller, wenn die Prüfung nach dem ersten Match abbricht?

Beispiel:

     
"text": ["state:set_open:öffnet...",
           "state:set_close:schließt...",
           "Shutter1_Position:100:offen",
           "Shutter1_Position:1:teils offen",
           "Shutter1_Position::geschlossen"
         ]


Das ist für Tasmota-Rollladen. Wenn der Rollladen runter fährt, wird state auf set_close gesetzt und Shutter1_Position läuft runter. Daher erscheint kurz "schließt..." und dann "teils offen", bis der Rolladen ganz zu ist und "geschlossen" angezeigt wird.

Hallo,

die Bedingungen werden von links nach rechts geprüft. Sobald die erste Bedingung zutrifft, wird die Prüfung beendet. Deshalb ist es wichtig, die Bedingungen ist der richtigen Reihenfolge zu definieren.

PS.: zu deiner Frage bzgl. pullrequest auf github. Wir haben bisher alle Anforderungen hier über das Forum eingesteuert, da es so auch User lesen, die mit github nicht so vertraut sind.

Beste Grüße
Jens  :)

Jamo

#85
Hallo Boris,
eine weitere Möglichkeit, über einen Klick auf den Text in der Mitte eine Aktion auszulösen, ist das midMenu.
Beispiel Radio programm

"leftBtn": "mdi-minus",
"leftClick": ["Vol::VolDn 1"],
"leftLong": ["playStatus:Play:Mute 1"],
"midBtn": "mdi-dots-vertical",
"text": ["StationRdbl::%s"],
"midMenu": ["1 Live:Station 1_Live","RTL 89.0:Station 89_0","Absolut Hot:Station AbsHOT","WDR 2:Station WDR2","WDR 5:Station WDR5"],
"rightBtn": "mdi-plus",
"rightClick": ["Vol::VolUp 1"],
"rightLong": ["playStatus:Mute:Mute 0"]
},

Ein Nachteil ist das der Anzeigetext nicht skaliert, ich glaube es werden 8 Buchstaben gezeigt. Deswegen habe ich die Radiosender im Reading ''StationRdbl'' auf 8 Buchstaben gekürzt, und und z.B. 89_0 durch 89,0 ersetzt. Im midMenu sind die Klartextnamen des Menues, und rechts vom ":" die Aktion.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Dr. Boris Neubert

Zitat von: Jamo am 21 September 2021, 00:15:32


"leftBtn": "mdi-minus",
"leftClick": ["Vol::VolDn 1"],
"leftLong": ["playStatus:Play:Mute 1"],
"midBtn": "mdi-dots-vertical",
"text": ["StationRdbl::%s"],
"midMenu": ["1 Live:Station 1_Live","RTL 89.0:Station 89_0","Absolut Hot:Station AbsHOT","WDR 2:Station WDR2","WDR 5:Station WDR5"],
"rightBtn": "mdi-plus",
"rightClick": ["Vol::VolUp 1"],
"rightLong": ["playStatus:Mute:Mute 0"]
},


Ich sehe, dass Du einen Text und einen midBtn hast. Wenn ich einen midBtn angegeben habe, erschien bei mir der Text nicht mehr. Habe ich da was falsch gemacht?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Jamo

#87
Hallo Boris,
ist denn das reading fuer den "text" definiert?
Wenn ich bei mir den midBtn weglasse, wird der "text" hell, aber es erscheint kein Menue mehr beim klicken auf den Text.
Mit midBtn wird der "text" leicht grau, und ich kann auf den Text klicken, es erscheint das Menu.

Hier das release, ab der das funktioniert: https://forum.fhem.de/index.php/topic,120911.msg1158359.html#msg1158359

Hier hat Jens damals beschrieben wie es funktioniert und angewendet wird.
https://forum.fhem.de/index.php/topic,120913.msg1158424.html#msg1158424

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Dr. Boris Neubert

Hallo Jamo,

Zitat von: Jamo am 21 September 2021, 09:25:46
ist denn das reading fuer den "text" definiert?
Wenn ich bei mir den midBtn weglasse, wird der "text" hell, aber es erscheint kein Menue mehr beim klicken auf den Text.
Mit midBtn wird der "text" leicht grau, und ich kann auf den Text klicken, es erscheint das Menu.

ich habe die aktuelle Version von fhemApp installiert. Hier mein Template zur Erläuterung:

{
  "name": "shutter3",
  "author": "borisneubert",
  "description": "Tasmota-based shutters",
  "date": "2021-09-20",
  "status": {
    "bar": ["Shutter1_Position::%n:success:invert"],
    "error": []
  },
  "main": [
    {
      "leftBtn": ["pct:1:mdi-chevron-down","pct::mdi-chevron-down:disabled"],
      "leftClick": ["state:set_close:stop","pct:1:close","pct::"],
      "text": ["state:set_open:öffnet...","state:set_close:schließt...","state:1:offen","state::geschlossen"],
      "rightBtn": ["Shutter1_Position:100:mdi-chevron-up:disabled","Shutter1_Position::mdi-chevron-up"],
      "rightClick": ["Shutter1_Position:100:","state:set_open:stop","state::open"]
    }
  ],
  "info": {
    "left1": ["state:set_.*::mdi-window-shutter-alert","pct:1::mdi-window-shutter-open","pct:::mdi-window-shutter"],
    "left2": ["Shutter1_Position::%s%"]
  }
}


Bei mir läuft erst einmal obiges Template und der Text wird entsprechend angezeigt. Auch wenn ich

       "midClick": ["state::stop"],


unter main hinzufüge, ist das mittlere Feld nicht klickbar. Erst wenn ich auch noch

      "midBtn": "mdi-dots-vertical",

unter main hinzufüge, wird das mittlere Feld klickbar und ich kann die Rollladenfahrt damit stoppen. Jedoch sehe ich dann statt des Texts nur das Icon (egal welches Icon). Auch mit einer leeren midBtn-Definition "[state::]" kommt kein Text.

Viele Grüße
Boris

(ich trenne das hier ab und schiebe es in Template-Konfiguration)
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Zitat von: jemu75 am 20 September 2021, 21:11:16
die Bedingungen werden von links nach rechts geprüft. Sobald die erste Bedingung zutrifft, wird die Prüfung beendet. Deshalb ist es wichtig, die Bedingungen ist der richtigen Reihenfolge zu definieren.

Danke Jens. Mit der Erklärung konnte ich ausschließen, dass es aufgrund der Verwendung unterschiedlicher Readings nicht bei funktioniert. Ursache war nach weitergehender Analyse, dass im Reading state erst "state_close" kommt und dann "closing", wenn der Rollladen runterfährt. Das hatte ich nicht gesehen. Wenn ich beide Werte im Regex für state beachte, funktioniert die Anzeige.

"text":  [
"state:set_open|opening:öffnet...",
"state:set_close|closing:schließt...",
"Shutter1_Position:100:offen",
"Shutter1_Position:1:teils offen",
"Shutter1_Position::geschlossen"
],
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!