Hauptmenü

FHEM App - Manage your Home

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

Vorheriges Thema - Nächstes Thema

tomspatz

Beispiel:
"leftBtn": "mdi-chevron-up",
      "leftClick": ["state::up"],
      "text": ["moving:down:schließt...","moving:up:öffnet...","position:100:geschlossen","position:[0]:offen"],
      "rightBtn": "mdi-chevron-down",
      "rightClick": ["state::down"]


Die klicks sollten auch für dich funktionieren

Jamo

Zitat von: marboj am 07 April 2021, 18:10:42
Das ich kein motor-reading habe, habe ich gesehen. Die Frage ist, da es ja für alle meine Rolläden funktionieren soll, was an die Stelle "motor" kommt.

Habe es mit NAME probiert, da ich die Rolllade über den Namen ansprechen kann: set roll22 up

Das klappt aber nicht :-(

Lies Dir doch mal die Doku durch. Ein reading durch einen Namen zu ersetzen, macht doch gar keinen Sinn. Jens hat auch geschrieben, das "set devicename" weggelassen werden muss (ist im template eingebaut). Du musst also schon das template von jens kopieren, ein eigenes template für deinen shutter typ machen, und auf deinen Shutter anpassen, sonst wir das nicht klappen. Du muesstest wahrscheinlich erstmal dort 'motor' durch 'state' ersetzten. Viel Erfolg. 
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

marboj

Zitat von: tomspatz am 07 April 2021, 15:58:16
und unter FHEM selbst ??
bekommst du dort Readings angezeigt?
Ob es etwas ausmacht habe ich nicht getestet aber meine DEF für sysmon holt alle Werte.
defmod sysmon SYSMON 1 1 1 10

mit 1 1 1 10 geht es...

Danke
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

marboj

Zitat von: tomspatz am 07 April 2021, 18:33:52
Beispiel:
"leftBtn": "mdi-chevron-up",
      "leftClick": ["state::up"],
      "text": ["moving:down:schließt...","moving:up:öffnet...","position:100:geschlossen","position:[0]:offen"],
      "rightBtn": "mdi-chevron-down",
      "rightClick": ["state::down"]


Die klicks sollten auch für dich funktionieren

Die Rollade fährt jetzt bei Klick hoch und runter. Danke!

Kann man auch definieren, dass bei erneutem Klick der stop-Befehl ausgeführt wird?

Gruß und Danke
Marco
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

Jamo

ZitatKann man auch definieren, dass bei erneutem Klick der stop-Befehl ausgeführt wird?

Ja, kann man, Du musst das reading abfragen, also etwa (Pseudo code) leftClick": ["state:moving:stop","state::up"],
Übersetzt:Wenn der wert des readings 'state' des rollos 'moving' ist (das Rollo also nach oben fährt), dann ist der leftClick 'stop', ansonsten für alle anderen werte des readings 'state' ist der leftClick dann 'up'.

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

jemu75

Zitat von: marboj am 07 April 2021, 18:54:48
Die Rollade fährt jetzt bei Klick hoch und runter. Danke!

Kann man auch definieren, dass bei erneutem Klick der stop-Befehl ausgeführt wird?

Gruß und Danke
Marco

Ja, das geht. Jeden Befehl den du absetzt, kannst ebenfalls nach dem Schema prüfen.
Also z.B.
Wenn "Reading xy" den Status "stop" hat, dann sende den Befehl "down"
Wenn "Reading xy" den Status "moving" hat, dann sende den Befehl "stop"
In deiner Definition könnte das dann wie folgt aussehen
["state:stop:down", "state:moving:stop"]
Das Reading state musst du nun sicher gegen ein Reading austauschen, dass dir den aktuellen Zustand des Motors liefert.

Ich empfehle vor der Erstellung eigener Template-Definitionen, sich zuerst genau das Verhalten des jeweiligen Devices in fhem anzusehen. So erkennt man sehr gut, welches Reading was tut, wenn man einen Aktor betätigt. Danach kann man dann recht gut ableiten, wie die Definition des Templates aussehen muss. Melde dich gern nochmal bei Fragen.  :)

jemu75

Ich würde weiterhin empfehlen, in der Readme den Teil Erstellung eigener Templates zu lesen. Ist zwar mal etwas Text, aber wenn man das Prinzip verstanden hat, dann ist die Erstellung eigener Templates recht einfach.  :)
Die Templates, die ich in der Grundinstallation ausliefere und in der Doku beschreibe, sind eher als Anleitung zu verstehen. Insbesondere wenn man andere Aktoren bzw. Sensoren im Einsatz hat.
Ich hoffe damit noch etwas weiter helfen zu können. Ansonsten gern mit Fragen auf mich zukommen.  :)

tomspatz

Ich probiere mich gerade an einem Konstrukt welches für einen Heizungs dummy sein soll.
SO sieht der aus:
Internals:
   CFGFN     
   FUUID      606dd656-f33f-fa82-60ba-c60f6c9a571d955e
   NAME       HeizungReglerKuecheTest
   NR         724
   STATE       19.5 °C
   TYPE       dummy
   READINGS:
     2021-04-07 18:13:14   state           24
Attributes:
   alias      Heizung Küche Test
   appOptions { "template": "thermostat_dummy", "connected": { "receiver": "ThermostatKueche_75", "valve": "ThermostatKueche_75" } }
   group      Heizung & Temperatur
   icon       sani_heating_manual
   room       Küche,System
   setList    state:8.00,8.50,9.00,9.50,10.00,10.50,11.00,11.50,12.00,12.50,13.00,13.50,14.00,14.50,15.00,15.50,16.00,16.50,17.00,17.50,18.00,18.50,19.00,19.50,20.00,20.50,21.00,21.50,22.00,22.50,23.00,23.50,24.00,24.50,25.00,25.50,26.00,26.50,27.00,27.50,28.00
   stateFormat {sprintf(" %.1f °C",(ReadingsNum("HeizungReglerKueche","state",0)))}
   webCmd     state

Das template, oder zumindest mein test template:
{
  "name": "thermostat_dummy",
  "author": "tomspatz",
  "date": "2021-03-27",
  "status": {
    "bar": ["state:8.00:0:success","state:28.00:100:success","state::%n:success"],
    "error": []
  },
  "main": [
    {
      "leftBtn": "mdi-minus",
      "leftClick": ["state::%i-0.5"],
      "slider": ["state::%v:%n.2:8.00:28.00"],
      "rightBtn": "mdi-plus",
      "rightClick": ["state::%i0.5"]
    }
  ],
  "info": {
    "left1": ["Connected.receiver.Readings.thermostatSetpointSet.Value::%s"],
    "left2": ["controlMode:auto::mdi-clock-time-four-outline"],
    "mid1": ["measured-temp::%n.1°C:mdi-thermometer"],
    "mid2": ["humidity::%n%:mdi-water"],
    "right1": ["Connected.receiver.Readings.batteryState.Value:ok::mdi-battery","Connected.receiver.Readings.batteryState.Value:::mdi-battery-10"],
    "right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]
  }

}


Jetzt zum Eigentlichen, ich kann mit den Tasten den Wert jeweils um 0.5 ändern. Ich bräuchte als Ausgabe allerdings 8.50 und nicht 8.5.
Habe es mit "%i-0.50" bzw "%i0.50" probiert aber das tut so nicht.
Auch erreiche ich damit Werte die außerhalb der gewollten liegen.  :-\

Den slider habe ich begrenzt das ist OK aber dieser lifert NUR ganze Zahlen.
Hat da jemand eine Idee zu ?

tomspatz

@jemu75
bei der slider "Geschichte" die du mir verkauft hast  ;)
"slider": ["state::dim %v:%n:0:99"]

gibt es oder sollte es irgendwo eine Anzeige auf oder in dem Slider selbst über den eingestellten Wert?

jemu75

Zitat von: tomspatz am 07 April 2021, 19:52:49
Ich probiere mich gerade an einem Konstrukt welches für einen Heizungs dummy sein soll.
SO sieht der aus:
Internals:
   CFGFN     
   FUUID      606dd656-f33f-fa82-60ba-c60f6c9a571d955e
   NAME       HeizungReglerKuecheTest
   NR         724
   STATE       19.5 °C
   TYPE       dummy
   READINGS:
     2021-04-07 18:13:14   state           24
Attributes:
   alias      Heizung Küche Test
   appOptions { "template": "thermostat_dummy", "connected": { "receiver": "ThermostatKueche_75", "valve": "ThermostatKueche_75" } }
   group      Heizung & Temperatur
   icon       sani_heating_manual
   room       Küche,System
   setList    state:8.00,8.50,9.00,9.50,10.00,10.50,11.00,11.50,12.00,12.50,13.00,13.50,14.00,14.50,15.00,15.50,16.00,16.50,17.00,17.50,18.00,18.50,19.00,19.50,20.00,20.50,21.00,21.50,22.00,22.50,23.00,23.50,24.00,24.50,25.00,25.50,26.00,26.50,27.00,27.50,28.00
   stateFormat {sprintf(" %.1f °C",(ReadingsNum("HeizungReglerKueche","state",0)))}
   webCmd     state

Das template, oder zumindest mein test template:
{
  "name": "thermostat_dummy",
  "author": "tomspatz",
  "date": "2021-03-27",
  "status": {
    "bar": ["state:8.00:0:success","state:28.00:100:success","state::%n:success"],
    "error": []
  },
  "main": [
    {
      "leftBtn": "mdi-minus",
      "leftClick": ["state::%i-0.5"],
      "slider": ["state::%v:%n.2:8.00:28.00"],
      "rightBtn": "mdi-plus",
      "rightClick": ["state::%i0.5"]
    }
  ],
  "info": {
    "left1": ["Connected.receiver.Readings.thermostatSetpointSet.Value::%s"],
    "left2": ["controlMode:auto::mdi-clock-time-four-outline"],
    "mid1": ["measured-temp::%n.1°C:mdi-thermometer"],
    "mid2": ["humidity::%n%:mdi-water"],
    "right1": ["Connected.receiver.Readings.batteryState.Value:ok::mdi-battery","Connected.receiver.Readings.batteryState.Value:::mdi-battery-10"],
    "right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]
  }

}


Jetzt zum Eigentlichen, ich kann mit den Tasten den Wert jeweils um 0.5 ändern. Ich bräuchte als Ausgabe allerdings 8.50 und nicht 8.5.
Habe es mit "%i-0.50" bzw "%i0.50" probiert aber das tut so nicht.
Auch erreiche ich damit Werte die außerhalb der gewollten liegen.  :-\

Den slider habe ich begrenzt das ist OK aber dieser lifert NUR ganze Zahlen.
Hat da jemand eine Idee zu ?

Lass uns mal der Reihe nach vorgehen. Erste Frage die ich habe: muss der set-wert wirklich mit zwei Nachkommastellen übergeben werden, auch wenn du nur die erste Nachkommastelle änderst?

hydrotec

Ich glaub ich seh den Wald vor lauter Bäumen nicht mehr   :-[

Kann mir bitte jemand einen Schubs in die richtige Richtung geben.

Folgendes, ich versuche schon seit geraumer Zeit den timestamp eines readings in die Info-Zeile zu bekommen.
Das einzige was bisher funktioniert hat, ein userreading anlegen.
Das muss doch anders auch gehen, oder?

Versuchsobjekt

defmod du_test_hb dummy
attr du_test_hb DbLogExclude .*
attr du_test_hb appOptions {\
"template": "switch",\
"name": "Testschalter",\
"room": "97_FhemApp->dummy",\
"group": "zone_apartment_general",\
"sortby": "97001",\
"home": true,\
"dashboard": false,\
"system": false,\
"setup": {\
"size": "col-12 col-sm-6 col-md-4 col-lg-2",\
"main": [\
{\
"leftBtn": "mdi-power-off",\
"leftClick": [\
"state::off"\
],\
"text": [\
"state:on:an",\
"state:off:aus",\
"state::%s"\
],\
"rightBtn": "mdi-power",\
"rightClick": [\
"state::on"\
]\
}\
],\
"info": {\
"left1": [\
"state:::mdi-switch"\
],\
"mid1": [\
"state_timestamp::%t"\
]\
}\
}\
}
attr du_test_hb room 97_FhemApp->dummy
attr du_test_hb userReadings state_timestamp {ReadingsTimestamp("du_test_hb","state",0)}
attr du_test_hb webCmd on:off


Vorab schon einmal Danke.
Gruß, Karsten

jemu75

#596
Zitat von: hydrotec am 07 April 2021, 21:09:09
Ich glaub ich seh den Wald vor lauter Bäumen nicht mehr   :-[

Kann mir bitte jemand einen Schubs in die richtige Richtung geben.

Folgendes, ich versuche schon seit geraumer Zeit den timestamp eines readings in die Info-Zeile zu bekommen.
Das einzige was bisher funktioniert hat, ein userreading anlegen.
Das muss doch anders auch gehen, oder?

Versuchsobjekt

defmod du_test_hb dummy
attr du_test_hb DbLogExclude .*
attr du_test_hb appOptions {\
"template": "switch",\
"name": "Testschalter",\
"room": "97_FhemApp->dummy",\
"group": "zone_apartment_general",\
"sortby": "97001",\
"home": true,\
"dashboard": false,\
"system": false,\
"setup": {\
"size": "col-12 col-sm-6 col-md-4 col-lg-2",\
"main": [\
{\
"leftBtn": "mdi-power-off",\
"leftClick": [\
"state::off"\
],\
"text": [\
"state:on:an",\
"state:off:aus",\
"state::%s"\
],\
"rightBtn": "mdi-power",\
"rightClick": [\
"state::on"\
]\
}\
],\
"info": {\
"left1": [\
"state:::mdi-switch"\
],\
"mid1": [\
"state_timestamp::%t"\
]\
}\
}\
}
attr du_test_hb room 97_FhemApp->dummy
attr du_test_hb userReadings state_timestamp {ReadingsTimestamp("du_test_hb","state",0)}
attr du_test_hb webCmd on:off


Vorab schon einmal Danke.
Gruß, Karsten

Probiere mal bitte folgendes in der Template Definition, anstelle des readings
z. B.
Readings.state.Time

Ich arbeite intern in der App mit der Datenstruktur von jsonlist2 aus fhem. Im Standard werden readings also intern um Readings.<readingname>.Value ergänzt. Alternativ kann man aber immer die gesamte Struktur angeben. So ist es z. B. auch möglich, auf Internals oder Attribute zuzugreifen.

Also gern mal ausprobieren und bei Fragen melden.  :)

PS. : userreadings sind damit nicht mal nötig ;)

PS2. : gern auch mal in der Fhem Kommandozeile ein jsonlist2 für ein beliebiges Device aufrufen. Das sieht ähnlich aus wie der bekannte Befehl list ist aber für das Verständnis von FHEMApp hilfreich, um die richtigen Werte abzugreifen.

hydrotec

@Jens

Zitat von: jemu75
Readings.state.Time
Das war es  :)

So funktioniert es auch mit dem Nachbarn  ;)
"mid1": [ "Readings.state.Time::%t" ]

Und das war jenes was mir nicht mehr eingefallen ist  :-[
Zitat von: jemu75
... jsonlist2 ...

Vielen Dank für deine schnelle Hilfe  :)
Gruß, Karsten

marboj

Zitat von: jemu75 am 07 April 2021, 19:35:50
Ja, das geht. Jeden Befehl den du absetzt, kannst ebenfalls nach dem Schema prüfen.
Also z.B.
Wenn "Reading xy" den Status "stop" hat, dann sende den Befehl "down"
Wenn "Reading xy" den Status "moving" hat, dann sende den Befehl "stop"
In deiner Definition könnte das dann wie folgt aussehen
["state:stop:down", "state:moving:stop"]
Das Reading state musst du nun sicher gegen ein Reading austauschen, dass dir den aktuellen Zustand des Motors liefert.

Ich empfehle vor der Erstellung eigener Template-Definitionen, sich zuerst genau das Verhalten des jeweiligen Devices in fhem anzusehen. So erkennt man sehr gut, welches Reading was tut, wenn man einen Aktor betätigt. Danach kann man dann recht gut ableiten, wie die Definition des Templates aussehen muss. Melde dich gern nochmal bei Fragen.  :)

Leider hat das Device nur das Reading state, welches sich beim Motorlauf ändert (in Prozentschritten).

Habe jetzt leftLong und leftLongRelease mit den Befehlen belegt, was auch wunderbar am PC im Browser funktioniert.

Gibt es einen Grund, warum leftlong am Handy/Tablet mit Chrome nicht funktioniert?

Gruß
Marco
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

jemu75

Zitat von: marboj am 08 April 2021, 08:58:42
Leider hat das Device nur das Reading state, welches sich beim Motorlauf ändert (in Prozentschritten).

Habe jetzt leftLong und leftLongRelease mit den Befehlen belegt, was auch wunderbar am PC im Browser funktioniert.

Gibt es einen Grund, warum leftlong am Handy/Tablet mit Chrome nicht funktioniert?

Gruß
Marco

Hast du Version 3.7.1 im Einsatz? Ich hatte das Release gestern noch freigegeben, da es mit den "langen Tastendrücken" Probleme bei verschiedenen Browsern gab.