Hauptmenü

set Befehl klappt nicht

Begonnen von dafreak, 25 Dezember 2022, 22:41:36

Vorheriges Thema - Nächstes Thema

dafreak

Ich habe bei einigen FHEM-Devices Probleme beim set-Befehl.
Beispiel: WLED
Ich bekomme es nicht hin über ein Menü oder ein Btn-Click ein Preset zu setzen.
Der Befehl in FHEM "set EG_Wohnzimmer_Wandlampe preset 2" funktioniert einwandfrei, aber unter fhemapp klappt es nicht.
Ich habe es wie folgt eingebunden:
"main": [
    {
      "leftBtn": ["preset:set 1:mdi-party-popper","preset:set 2:mdi-television-classic","preset:set 3:mdi-music"],
      "leftMenu": ["Preset 1:preset 1","Preset 2:preset 2","Preset 3:preset 3"],
      "slider": ["brightness::brightness %v:%n.0:0:255:5"],
      "rightBtn": ["state:ON:mdi-lightbulb::success","state:on:mdi-lightbulb::success","state:off:mdi-lightbulb-off","state:OFF:mdi-lightbulb-off"],
      "rightClick": ["state:on:off","state:off:on"]
    }

Im Reading steht hinterher "set 2". Der Versuch mit "preset set 2" hat leider auch keinen Erfolg gebracht.

Ich habe auch festgestellt, dass ein set-Befehl über das Menü anders zu sein scheint, als über einen Button. Kann das sein? Bei einem Device ging es nur über das Menü und nicht über einen Button.

Danke für eure Hilfe.

... hab gerade noch etwas herausgefunden. Wenn ich den kompletten set-Befehl inkl. Device und set angebe, funktioniert es, aber dann ist es nicht mehr so flexibel mit der absoluten Angabe des Device's.

"leftMenu": ["Preset 1:set EG_Wohnzimmer_Wandlampe preset 1","Preset 2:set EG_Wohnzimmer_Wandlampe preset 2","Preset 3:set EG_Wohnzimmer_Wandlampe preset 3"]

jemu75

Hast du dir die Hilfe schon mal angesehen?
Hier ist die Funktion der Button beschrieben.
https://github.com/jemu75/fhemApp#hinweis-zur-definition-von-fhem-kommandos

Melde dich gern, wenn es danach noch Probleme gibt.

dafreak

#2
Klappt leider nicht.
"rightClick": ["preset::3"]
...soll eigentlich ein "set EG_Wohnzimmer_Wandlampe preset 3" auslösen. Es passiert aber nichts.
Mache ich etwas falsch? Das erstgenannte Reading (preset) gilt doch auch für den set-Befehl oder ist das ohne Angabe immer nur state?

Es funktioniert nur so:
"rightClick": ["preset::set EG_Wohnzimmer_Wandlampe preset 3"]

Jamo

Zitat... oder ist das ohne Angabe immer nur state?
Ja, das ist so, "state" ist bei fhem speziell. Also 'set EG_Wohnzimmer_Wandlampe on' (ohne state), oder 'set EG_Wohnzimmer_Wandlampe irgendWasAnderes Wert'.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

jemu75

Du brauchst einfach nur preset 3 reinschreiben. Das "set <device>" ergänzt FHEMApp automatisch.
Alternativ würde auch set %d preset 3 funktionieren.
Aber set preset 3 funktioniert nicht, da bei Angabe von set immer der komplette Befehl hinterlegt werden muss.

dafreak

#5
Es geht tatsächlich nur mit dem set-Befehl inkl. Angabe des Devices über %d :-)
Super danke dir :-)

Aber ich habe hier schon das nächste Mysterium. Ich bekomme keinen set-Befehl an meinen Enigma2-Receiver(VU Uno4k) mit dem "Reading" remoteControl gesendet. Es gibt hier allerdings gar kein Reading für, da es nur ein Befehl ohne Antwort ist.

So funktioniert es leider nicht:
"midClick": "remoteControl::set %d remoteControl UP",

Unter FHEM funktioniert es aber mit:
set EG_Wohnzimmer_VU remoteControl UP

Wenn ich den Befehl über ein Menu abfeuere, geht es komischerweise:
      "rightBtn": "mdi-dots-horizontal-circle-outline",
      "rightMenu": ["Up:set %d remoteControl UP","Down:set %d remoteControl DOWN"]


Gibt es einen Unterscheid zwischen Menü und Button?

jemu75

#6
Schau mal bitte in die Hilfe zu FHEMApp. Hier ist im Grunde alles sehr ausführlich beschrieben.

Die Grundlogik von FHEMApp gesteht darin, dass readings (oder Attribute oder Internals) auf einen bestimmten Wert geprüft werden und sobald eine Bedingung zutrifft, etwas getan wird. Für die Prüfung sind in den Definitionen immer die beiden ersten Werte (reading:wert:...) zuständig.

Deine Definition funktioniert aus folgendem Grund nicht.
Du hast ein reading angegeben, welches es nach deiner Aussage nicht gibt. Diese Bedingung wird also niemals zutreffen und damit dein definierter Set-Befehl auch niemals ausgeführt.
Tipp: Wenn keine Werteprüfung erfolgen soll, dann nimm am besten immer das Reading state. Das gibt es faktisch in jedem Device.

So sollte dein Button funktionieren:
"midClick": "state::remoteControl UP",

Und, wie ebenfalls in der Hilfe beschrieben, erfolgt bei Menüs keine Werteprüfung.  :)

Himbi777

Hallo zusammen

ich melde mich wegen einem eventuell ähnlichen Proble.
Ich möchte mit Buttons ein Reading von einem dummy-Device ändern.
Hierzu habe ich folgende Definition in appOtions hinterlegt:
{
  "leftBtn": ["temp-level:2:mdi-minus","temp-level:1:mdi-minus:disabled"],
   "leftClick": ["temp-level::set %d temp-level %i-0.5"],
    "text": ["temp-level::Schaltschwelle bei %n.1 C"],
   "rightBtn": ["temp-level:20:mdi-plus:disabled","temp-level::mdi-plus"],
"rightClick": ["temp-level::set %d temp-level %i0.5"]
    }

Die Funktion in der App klappt damit, der Wert wird hoch bzw. runtergezählt, allerdings ändert sich das Reading nicht.
Wo liegt hier mein Denkfehler ?

Gruß vorab an alle und einen guten Rutsch ins neue Jahr
Gerhard
Raspberry Pi4, OMV, FHEM, FHEM-App // Tasmota-Geräte, Zigbee2Tasmota,

jemu75

Funktioniert das Setzen des readings in FHEM über die Kommandoleiste?
Hast du in dem Dummy evtl. das Attribut event-on-change-reading gesetzt?

dafreak

Also ich muss leider nochmal auf mein Problem zurückkommen. @jemu75, du musst echt denken ich bin zu blöd, aber es geht wirklich nicht. Ich habe alle Variationen ausprobiert.
Ich poste hier mal das komplette Template.
In der zweiten Reihe rechts habe ich ein Menü eingebaut, welches mir die UP- und DOWN-Taste betätigt und das funktioniert auch wunderbar(macht nur wenig Sinn als Menü), aber der Button in der Mitte mit UP funktioniert genau so wenig, wie alle anderen Buttons. Bin echt ratlos...
{
  "name": "vu",
  "author": "ich",
  "date": "2022-12-27",
  "description": "",
  "expand": true,
  "expanded": false,
  "show": ["presence:absent:true::99","power:off:true::98"],
  "status": {
    "bar": ["power:on:255:success","power:off:0:"],
    "min": 0,
    "max": 255,
    "error": ["presence:absent::error:offline"]
  },
  "main": [
    {
      "leftBtn": ["state:on:mdi-power::success","state::mdi-power:"],
      "leftClick": ["state:on:off","state:off:on"],
      "text": ["servicename::%s"]
    },
    {
      "leftBtn": "mdi-movie-play-outline",
      "leftClick": "state::remoteControl PVR",
      "midBtn": "mdi-arrow-up-circle",
      "midClick": "state::remoteControl UP",
      "rightBtn": "mdi-dots-horizontal-circle-outline",
      "rightMenu": ["UP:remoteControl UP","DOWN:remoteControl DOWN"]
    },
    {
      "leftBtn": "mdi-arrow-left-circle",
      "leftClick": "state::remoteControl LEFT",
      "midBtn": "mdi-record-circle",
      "midClick": "state::remoteControl OK",
      "rightBtn": "mdi-arrow-right-circle",
      "rightClick": "state::remoteControl RIGHT"
    },
    {
      "leftBtn": ["mute:on:mdi-volume-mute::success","mute::mdi-volume-mute"],
      "leftClick": ["mute:on:set %d mute off","mute::set %d mute on"],
      "midBtn": "mdi-arrow-down-circle",
      "midClick": "state::remoteControl DOWN",
      "rightBtn": "mdi-keyboard-return",
      "rightClick": "state::remoteControl BACK"
    }
  ],
  "info": {
    "left1": ["currentTitle::%s"],
    "right1": ["mute:on::mdi-volume-off:success"],
    "right2": ["recordings:1::mdi-record-rec:error"]
  }
}

Himbi777

Zitat von: jemu75 am 29 Dezember 2022, 16:26:06
Funktioniert das Setzen des readings in FHEM über die Kommandoleiste?
Hast du in dem Dummy evtl. das Attribut event-on-change-reading gesetzt?
Hallo Jens
das Setzen in der Kommandozeile klappt , event-on-change-reading ist nicht gesetzt, aber auch wenn es gesetzt ist klappt es nicht,
sorry -
Danke für den Support

Gruß Gerhard
Raspberry Pi4, OMV, FHEM, FHEM-App // Tasmota-Geräte, Zigbee2Tasmota,

jemu75

#11
Hallo Gerhard,

hast du mal probiert, statt
set %d temp-level %i-0.5
nur mit folgender Definition im "set-Teil" zu arebiten
temp-level %i-0.5

Das sollte meiner Meinung nach auch funktionieren.
Ansonsten empfiehlt es sich, dass Logging zu beobachten, da man dort den generierten Befehl sehen kann, der erzeugt und an FHEM übergeben wird. (siehe Aufruf Syslog https://github.com/jemu75/fhemApp#debug-modus-f%C3%BCr-fhemapp-optional)

Beste Grüße und einen guten Start ins neue Jahr!
Jens  :)

Himbi777

#12
Hallo Jens
Ebenso noch alles Gute für 2023

Deinen Vorschlag hatte ich schon probiert, es wird einfach als state Befehl gesendet:
state: temp-lvl 4.5

Ich habe die Vermutung dass setreading mit %d zusammen nicht funktioniert.
Wenn ich %d mit dem Devicenamen ersetze, dann klappt das setreading  :)
Ich kann damit leben, wenn das Template jedoch für mehrere Geräte genutzt werden soll passt es schon nicht mehr.
Vielleicht kann dies ja in einem der nächsten Updates berücksichtigt werden.

Ansonsten aber großes Lob für deinen Support und deine schnellen Rückmeldungen
Gruß Gerhard
Raspberry Pi4, OMV, FHEM, FHEM-App // Tasmota-Geräte, Zigbee2Tasmota,

draddy

moin,
@dafreak wenn du direkt im FHEM bist, hast du doch in dem device für das VU sicher eine "set" dropdown liste oder?

kann es sein, dass der befehl für UP, DOWN etc ... einfach nur z.B. UP ist? also OHNE das remotecontrol? (so kenne ich das halt von anderen Multimedia dingen wie z.b. Kodi)
dann wäre es einfach nur: "midClick": ["state::up"]
das remoteControl wird ehr das Reading sein, aber das setzt du eigentlich nicht, sondern wird gesetzt nachdem du den passenden set befehl geschickt hast.

lg
Jens
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

dafreak

Hi draddy,
das geht leider auch nicht. Die Befehle sind unter set auch nicht aufgeführt. Dafür gibt es extra den Befehl "RemoteControl" in der set-Liste. Wenn ich den set-Befehl über ein Menü abschicke, klappt es ja. Macht nur wenig Sinn die Pfeiltasten über ein Menü auszuwählen.
Ich habe auch mal versucht über den Debug-Mode mit Debug-Level 5 etwas zu erkennen, aber da sehe ich gar keine Befehle die rausgesendet werden, nur zig Readings die reinkommen.