Hauptmenü

FHEM App - Manage your Home

Begonnen von Gisbert, 12 März 2021, 15:05:20

Vorheriges Thema - Nächstes Thema

hydrotec

Hallo Icinger,

beschäftige mich gerade auch etwas mit panel, daher noch nicht wirklich der Profi.
Was mir auffällt, "btn": "pump" ist das Icon erreichbar?
Zum Thema Status, was sagt das log?
Versuche doch mal einen Status nach dem anderen aus.

{ "panel": { "status": ["state:00:aus:0:success"]} }

Also wirklich nur einen nach dem anderen, ohne "btn", "click" oder "link".
Wenn deine Status funktionieren, kannst du den Rest noch beimengen.

Wie gesagt, bin ich selber noch am lernen, aber so würde ich erst einmal vorgehen.

Gruß, Karsten

Benni

Hallo Jens,

ich bin gerade auch daran mir noch ein paar Panels aufzubauen.

Dabei ist mir relativ schnell aufgefallen, dass ich auch die Einstellungen für die PanelItems gerne etwas zentraler verwalten möchte, anstatt immer wieder dieselbe PanelItem-Definition bei allen möglichen Devices einfügen zu müssen.

Beispiel:

Ich habe einige Timer (at), die ich gerne in einem Panel aktiviere, bzw. deaktivieren können möchte.
Im Moment muss ich dazu bei jedem (!) at, dass ich auf dem Panel haben möchte, immer folgenden Code in die appOptions eintragen:


{
  "panel": {
    "status": [
      "state:inactive:deaktiviert:0:success",
      "state::%s:100:success"
    ],
    "btn": [
      "state:inactive:mdi-toggle-switch-off",
      "state::mdi-toggle-switch"
    ],
    "click": [
      "state:inactive:active",
      "state::inactive"
    ]
  }
}


schön wäre es, wenn man analog zu den Templates auch ein panelTemplate definieren könnte, entweder als separate Datei (ptempl_at.json) mit o.g. Code (entsprechend erweitert um name, author, ...).
Das würde dann mit einem entsprechenden Member in appOptions im Device angegeben.

Etwa so:


{
  "template": "light",
  "room": "Flur",
  "group": "Licht,EG-Licht",
  "name": "Flurlicht",
  "panel": {
    "template": "lightpanel"
  }
}


Oder das ganze gleich direkt integriert in ein normales template, somit auch integrierbar in bspw. templ_light.json & Co.

Und was auch noch schön wäre, wenn der Anzeigetext für das Panel nicht zwingend aus dem Namen, bzw. alias des Device genommen würde, sondern ebenfalls angegeben werden könnte, analog zu name bei den normalen templates.
Denn gerade bei at oder notify möchte ich gar keinen alias haben, sondern in FHEMWEB gerne immer den "technischen" Namen sehen.

gb#


hydrotec

Guten Morgen Jens,

beschäftige mich gerade etwas mit panel.
Dazu hätte ich noch eine Frage.

Erst einmal beispielhaft die Umgebung.

1.) Device welches mir die Wetterdaten liefert

defmod Wetter_01 HTTPMOD https://www.wunderground.com/dashboard/pws/ISCHWA181
attr Wetter_01 DbLogExclude .*
attr Wetter_01 DbLogInclude TemperaturC,Feuchtigkeit
attr Wetter_01 enableControlSet 1
attr Wetter_01 reading01Name Wind
attr Wetter_01 reading01Regex wu-unit .{109}>(\d+\.\d)
attr Wetter_01 reading02Name Windboeen
attr Wetter_01 reading02Regex wu-unit-speed .{109}>(\d+\.\d)
attr Wetter_01 reading03Name Windrichtung
attr Wetter_01 reading03Regex (\d+)deg\).{84}Wind-Marker
attr Wetter_01 reading04Name Regen
attr Wetter_01 reading04Regex wu-unit-rainRate .{109}>(\d+\.\d\d)
attr Wetter_01 reading05Name RegenGesamt
attr Wetter_01 reading05Regex wu-unit-rain .{109}>(\d+\.\d\d)
attr Wetter_01 reading06Name Temperatur
attr Wetter_01 reading06Regex wu-unit-temperature .{127}>(\d+.\d)
attr Wetter_01 reading07Name Feuchtigkeit
attr Wetter_01 reading07Regex wu-unit-humidity .{109}>(\d\d)
attr Wetter_01 reading08Name UV
attr Wetter_01 reading08Regex UV<.{268}>(\d)
attr Wetter_01 reading09Name Luftdruck
attr Wetter_01 reading09Regex PRESSURE<.{285}>(\d+.\d+)
attr Wetter_01 reading10Name TemperaturGefuehlt
attr Wetter_01 reading10Regex wu-unit is-degree-visible .{109}>(\d+.\d)
attr Wetter_01 room 97_FhemApp->weather,13_Wetter->Wunderground
attr Wetter_01 stateFormat C: TemperaturC T: TemperaturC_timestamp
attr Wetter_01 timeout 10
attr Wetter_01 userReadings WindKm {ReadingsVal("Wetter_01","Wind",0)*1.60934},\
WindboeenKm {ReadingsVal("Wetter_01","Windboeen",0)*1.60934},\
WindrichtungGrad {ReadingsVal("Wetter_01","Windrichtung",0)-180},\
RegenMm {ReadingsVal("Wetter_01","Regen",0)*25.4},\
RegenGesamtMm {ReadingsVal("Wetter_01","RegenGesamt",0)*25.4},\
TemperaturC {(ReadingsVal("Wetter_01","Temperatur",0)-32)*5/9},\
LuftdruckHpa {ReadingsVal("Wetter_01","Luftdruck",0)*33.8639},\
TemperaturGefuehltC {(ReadingsVal("Wetter_01","TemperaturGefuehlt",0)-32)*5/9},\
TemperaturC_timestamp {ReadingsTimestamp("Wetter_01","Temperatur",0)}


2.) Device panel

defmod du_panel_wetter_general dummy
attr du_panel_wetter_general DbLogExclude .*
attr du_panel_wetter_general appOptions {\
"template": "panel",\
"name": "Temperatur",\
"room": "13_Wetter",\
"group": "zone_general_outside",\
"sortby": "13021",\
"home": "true",\
"dashboard": "false",\
"system": "false",\
"connected": {\
"wetter01": "du_wetter_01",\
"wetter02": "du_wetter_02",\
"wetter03": "du_wetter_03"\
},\
"setup": {\
"info": {\
"left1": [\
"Internals.STATE:::mdi-thermometer"\
]\
}\
}\
}
attr du_panel_wetter_general group zone_apartment_general
attr du_panel_wetter_general room 97_FhemApp->dummy


3.) Device panelItems

defmod du_wetter_01 dummy
attr du_wetter_01 DbLogExclude .*
attr du_wetter_01 appOptions {\
"panel": {\
"status": [\
"state::%n.1 °C:%n:success"\
],\
"btn": "state:%n.1:"\
},\
"name": "Temperatur Wetter 01",\
"room": "13_Wetter",\
"group": "zone_general_outside",\
"sortby": "13031",\
"home": "true",\
"dashboard": "false",\
"system": "false"\
}
attr du_wetter_01 group zone_apartment_general
attr du_wetter_01 room 97_FhemApp->dummy


4.) Device notify

defmod no_wetter_01_temp_dummy notify Wetter_01:TemperaturC:.* {\
  fhem("setreading du_wetter_01 state $EVTPART1");;\
}
attr no_wetter_01_temp_dummy DbLogExclude .*


Das funktioniert soweit. (siehe Anhang)

Jetzt die Frage.
Wäre es möglich bei "btn": ["reading:wert:icon"] noch :text mit einzubauen?
Würde gerne die Temperaturanzeige von state nach rechts verschieben.

Weiterhin noch schöne Ostern  :)
Gruß, Karsten

Icinger

#468
ZitatWas mir auffällt, "btn": "pump" ist das Icon erreichbar?
das ist aus dem IconSet, welches im git verlinkt ist. Aber auch wenn ich das icon komplett welgasse, ändert sich nix
ZitatZum Thema Status, was sagt das log?
Habe leider keinen irgendwie gearteten Logeintrag und auch nicht in der Console.
ZitatVersuche doch mal einen Status nach dem anderen aus.
Also wirklich nur einen nach dem anderen, ohne "btn", "click" oder "link".
Auch das habe ich schon versucht. Ich glaube ja schon, dass es was mit der Regex auf sich hat, die aus dem Text "00", "01", "10", "11" jeweils Zahlen macht, also "0" und "1"

Aber auch zB
{ "panel": { "status": ["state:10:Auto aus:0:success"]} }
bringt bei mir nicht mehr, als am vorherigen Bild.
state ist aber aktuell definitiv "10"
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

hydrotec

@Icinger

was liefert den ein
"status": ["state::%n::"]

Icinger

Zitat von: hydrotec am 05 April 2021, 09:36:10
@Icinger

was liefert den ein
"status": ["state::%n::"]

Leider genausowenig
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

jemu75

Zitat von: Icinger am 05 April 2021, 07:59:20
Guten Morgen,

Also irgendwie steh ich mit dem Panel auf Kriegsfuß. Egal was ich probiere, es ändert nichts an der Anzeige.

Panel-Definition:
{ "template": "panel",
  "room": "Pool",
  "connected": { "Filter": "rpx_Pool_Filterpumpe"}}

Wird auch richtig dargestellt, das funktioniert schon mal

Und das connectedDevice:
Internals:
   DEF        PoolController:Filter
   DEVICE     PoolController
   FVERSION   33_readingsProxy.pm:0.162990/2018-03-01
   NAME       rpx_Pool_Filterpumpe
   NOTIFYDEV  PoolController,global
   NR         406
   NTFY_ORDER 50-rpx_Pool_Filterpumpe
   READING    Filter
   STATE      10
   TYPE       readingsProxy
   CONTENT:
     PoolController 1
   READINGS:
     2017-08-13 09:47:26   Title           Sandfilter
     2021-04-04 16:40:33   lastCmd         Auto
     2021-04-04 20:00:11   state           10

Attributes:
   DbLogExclude .*
   alias      Sandfilter
   appOptions { "panel": { "status": ["state:00:aus:0:success", "state:01:an:100:success", "state:10:Auto aus:0:success", "state:11:Auto an:100:success"],
             "btn": "pump",
"click": ["state:00:on","state:01:off"]} }
   devStateIcon 11:time_timer@green:off 10:time_timer@orange:off 1:sani_pump@green:Auto 0:sani_pump@red:on
   event-on-update-reading .*
   getFn      ""
   powerMap   {
  'state' => {
            '00' => 0,
            '01' => 650,
            '10' => 0,
            '11' => 650,
            '0' => 0,
            '1' => 650,
          },
}

   setFn      {fhem "set PoolControler raw filter ".$CMD}
   setList    on off Auto Temp:select,25,26,27,28,29,30,31,31
   webCmd     on:off:Auto:Temp


Egal, wie der state ist, ich bekomm nur diese Anzeige im Bild.
Vermutlich eh nur eine Kleinigkeit, aber ich komm nicht drauf.

Setze deine Werte bitte mal in Runde Klammern also Z.B. (01) oder (00) Dann werden die Werte als Regex verarbeitet und nicht als reiner Zahlenwerte.
Das icon muss mdi-pump lauten. Also immer das mdi- vor den Icon Name setzen.  :)

hydrotec

Zitat von: Icinger
Leider genausowenig

Sorry, dann kann ich dir leider nicht mehr weiterhelfen.
Da muss ein Profi ran, kenne mich mit panel noch nicht so gut aus.

Zu spät, Jens war schneller  ;)

Icinger

{ "panel": { "status": ["state:(00):aus:0:success", "state:(01):an:100:success", "state:(10):Auto aus:0:success", "state:(11):Auto an:100:success"] }}

Auch mit diesem Panelitem tut sich nichts.

Inzwischen glaub ich ja schon eher, dass hier bei der Panel-Definition selbst der Fehler liegt
{ "template": "panel",
  "room": "Pool",
  "connected": { "Filter": "rpx_Pool_Filterpumpe"}}


Selbst, wenn ich das panelitem (also das attr appOptions) komplett lösche, hab ich die selbe Anzeige.

Und ja: Bei jeder Änderung mach ich einen Cache-Reload ^^
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

jemu75

Zitat von: hydrotec am 05 April 2021, 09:15:55
Guten Morgen Jens,

beschäftige mich gerade etwas mit panel.
Dazu hätte ich noch eine Frage.

Erst einmal beispielhaft die Umgebung.

1.) Device welches mir die Wetterdaten liefert

defmod Wetter_01 HTTPMOD https://www.wunderground.com/dashboard/pws/ISCHWA181
attr Wetter_01 DbLogExclude .*
attr Wetter_01 DbLogInclude TemperaturC,Feuchtigkeit
attr Wetter_01 enableControlSet 1
attr Wetter_01 reading01Name Wind
attr Wetter_01 reading01Regex wu-unit .{109}>(\d+\.\d)
attr Wetter_01 reading02Name Windboeen
attr Wetter_01 reading02Regex wu-unit-speed .{109}>(\d+\.\d)
attr Wetter_01 reading03Name Windrichtung
attr Wetter_01 reading03Regex (\d+)deg\).{84}Wind-Marker
attr Wetter_01 reading04Name Regen
attr Wetter_01 reading04Regex wu-unit-rainRate .{109}>(\d+\.\d\d)
attr Wetter_01 reading05Name RegenGesamt
attr Wetter_01 reading05Regex wu-unit-rain .{109}>(\d+\.\d\d)
attr Wetter_01 reading06Name Temperatur
attr Wetter_01 reading06Regex wu-unit-temperature .{127}>(\d+.\d)
attr Wetter_01 reading07Name Feuchtigkeit
attr Wetter_01 reading07Regex wu-unit-humidity .{109}>(\d\d)
attr Wetter_01 reading08Name UV
attr Wetter_01 reading08Regex UV<.{268}>(\d)
attr Wetter_01 reading09Name Luftdruck
attr Wetter_01 reading09Regex PRESSURE<.{285}>(\d+.\d+)
attr Wetter_01 reading10Name TemperaturGefuehlt
attr Wetter_01 reading10Regex wu-unit is-degree-visible .{109}>(\d+.\d)
attr Wetter_01 room 97_FhemApp->weather,13_Wetter->Wunderground
attr Wetter_01 stateFormat C: TemperaturC T: TemperaturC_timestamp
attr Wetter_01 timeout 10
attr Wetter_01 userReadings WindKm {ReadingsVal("Wetter_01","Wind",0)*1.60934},\
WindboeenKm {ReadingsVal("Wetter_01","Windboeen",0)*1.60934},\
WindrichtungGrad {ReadingsVal("Wetter_01","Windrichtung",0)-180},\
RegenMm {ReadingsVal("Wetter_01","Regen",0)*25.4},\
RegenGesamtMm {ReadingsVal("Wetter_01","RegenGesamt",0)*25.4},\
TemperaturC {(ReadingsVal("Wetter_01","Temperatur",0)-32)*5/9},\
LuftdruckHpa {ReadingsVal("Wetter_01","Luftdruck",0)*33.8639},\
TemperaturGefuehltC {(ReadingsVal("Wetter_01","TemperaturGefuehlt",0)-32)*5/9},\
TemperaturC_timestamp {ReadingsTimestamp("Wetter_01","Temperatur",0)}


2.) Device panel

defmod du_panel_wetter_general dummy
attr du_panel_wetter_general DbLogExclude .*
attr du_panel_wetter_general appOptions {\
"template": "panel",\
"name": "Temperatur",\
"room": "13_Wetter",\
"group": "zone_general_outside",\
"sortby": "13021",\
"home": "true",\
"dashboard": "false",\
"system": "false",\
"connected": {\
"wetter01": "du_wetter_01",\
"wetter02": "du_wetter_02",\
"wetter03": "du_wetter_03"\
},\
"setup": {\
"info": {\
"left1": [\
"Internals.STATE:::mdi-thermometer"\
]\
}\
}\
}
attr du_panel_wetter_general group zone_apartment_general
attr du_panel_wetter_general room 97_FhemApp->dummy


3.) Device panelItems

defmod du_wetter_01 dummy
attr du_wetter_01 DbLogExclude .*
attr du_wetter_01 appOptions {\
"panel": {\
"status": [\
"state::%n.1 °C:%n:success"\
],\
"btn": "state:%n.1:"\
},\
"name": "Temperatur Wetter 01",\
"room": "13_Wetter",\
"group": "zone_general_outside",\
"sortby": "13031",\
"home": "true",\
"dashboard": "false",\
"system": "false"\
}
attr du_wetter_01 group zone_apartment_general
attr du_wetter_01 room 97_FhemApp->dummy


4.) Device notify

defmod no_wetter_01_temp_dummy notify Wetter_01:TemperaturC:.* {\
  fhem("setreading du_wetter_01 state $EVTPART1");;\
}
attr no_wetter_01_temp_dummy DbLogExclude .*


Das funktioniert soweit. (siehe Anhang)

Jetzt die Frage.
Wäre es möglich bei "btn": ["reading:wert:icon"] noch :text mit einzubauen?
Würde gerne die Temperaturanzeige von state nach rechts verschieben.

Weiterhin noch schöne Ostern  :)
Gruß, Karsten

Ist ein guter Gedanke, wenn man das Panel z.B. für eine Wettervorhersage verwenden möchte. Jedoch würde ich den Palterhalter rechts dann nicht mehr über das Element "btn" befüllen. Ich denke mal drauf rum.  :)

Hast du dir alternativ mal das Wetter Template angeschaut? Das macht im Prinzip das was du möchtest und zeigt zudem links statt dem Statuskreis ein passendes Wettericon an.

jemu75

Zitat von: Icinger am 05 April 2021, 09:54:24
{ "panel": { "status": ["state:(00):aus:0:success", "state:(01):an:100:success", "state:(10):Auto aus:0:success", "state:(11):Auto an:100:success"] }}

Auch mit diesem Panelitem tut sich nichts.

Inzwischen glaub ich ja schon eher, dass hier bei der Panel-Definition selbst der Fehler liegt
{ "template": "panel",
  "room": "Pool",
  "connected": { "Filter": "rpx_Pool_Filterpumpe"}}


Selbst, wenn ich das panelitem (also das attr appOptions) komplett lösche, hab ich die selbe Anzeige.

Und ja: Bei jeder Änderung mach ich einen Cache-Reload ^^

Wenn du die Definition komplett löschst und sich in der App nichts ändert, dann hängt da noch was im Cache. Ich denke mit den Werten in Runden klammern sollte es auf jeden Fall gehen. Ansonsten sieht deine Definition auch korrekt aus.  :)

hydrotec

Zitat von: jemu75
... Ich denke mal drauf rum.  :)
TOP  :)
Ist nicht nur für Wetterdaten gedacht, sondern generell zur Übersicht von gesammelten Werten.
Temperatur hatte ich nur zum Testen verwendet.

Zitat von: jemu75
Hast du dir alternativ mal das Wetter Template angeschaut? ...
Ja hatte ich auch schon auf dem Schirm, doch das Template ist ja hardcoded mit (darksky-API).
Bei darksky bekommt man aber keinen key mehr.
Wollte mir die Tage mal anschauen ob man das nicht auch auf DWD_OpenData umbiegen kann.

Benni

Zitat von: jemu75 am 05 April 2021, 09:57:15
Ist ein guter Gedanke, wenn man das Panel z.B. für eine Wettervorhersage verwenden möchte. Jedoch würde ich den Palterhalter rechts dann nicht mehr über das Element "btn" befüllen. Ich denke mal drauf rum.  :)

Zu dem Gedanke, gleich noch einer von mir  ;D

Wenn man das dann noch umgekehrt darstellen könnte, also den Wert oben in Groß und die Beschreibung dazu unten in klein.
Wobei ich wieder bei meiner "name"-Geschichte von weiter oben lande: vielleicht bräuchte es noch ein paar Ersetzungen mehr (%n = name des device / %a = alias des device o.ä.) dann könnte man flexibel statt dem Namen auch den Wert (%s) anzeigen lassen und dann im Wert-Feld den Namen (%n), statt des Wertes.

gb#

PS: Leider sorgt mehr Flexibilität i.d.R. auch immer für mehr Komplexität.

Icinger

Zitat
Wenn du die Definition komplett löschst und sich in der App nichts ändert

Hmm, ich hab jetzt einfach mal in den panel-Definition ein zweites Device hinzugefügt, ohne dann das "echte" Device anzugreifen.
Bei diesem gibts also definitiv kein appOptions-Attribut.

Sieht genauso aus wie das erste. Daher ja meine Überlegung, obs schon an der panel-Definition happert :/

{ "template": "panel",
  "room": "Pool",
  "connected": { "Filter": "rpx_Pool_Filterpumpe", "Solar": "rpx_Pool_Solarpumpe"}}
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Jamo

Hallo Icinger,
bei mir hat es manchmal geholfen, bei der template definition im config.json alle Leerzeichen/Tabs am Anfang jeder Zeile zu loeschen. Die json Validierung hakt wohl manchmal. Vielleicht hilfts Dir.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence