FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Moerk am 24 November 2020, 10:45:34

Titel: Fehlermeldung "Unknown Argument" bei Slider in MQTT2 Device
Beitrag von: Moerk am 24 November 2020, 10:45:34
Hallo zusammen,

ich habe eine Lichtsteuerung per Arduino realisiert in der ich MQTT eingebunden habe um sie per FHEM anzusprechen.
Man kann per  MQTT auf /Sauna/Licht/State Werte zwischen 0 und 255 als Dimmlevel oder on / off senden.
Klappt auch soweit alles, ich habe einen Slider in das Device eingebunden und wenn ich diesen manuell bediene wird das Licht entsprechend eingestellt.

Wenn ich ihn aber im "Status" oben bediene und z.B. auf 40 stelle dann erhalte ich eine Fehlermeldung:
ZitatUnknown argument 40, choose one of on off state:slider,0,5,255 off-for-time...

Ich habe was falsch gemacht, anders kann es nicht sein, aber ich komme nicht drauf was.

Hier das Device:

defmod MQTT2_IoT.MirkOTech.Licht.Sauna MQTT2_DEVICE IoT.MirkOTech.Licht.Sauna
attr MQTT2_IoT.MirkOTech.Licht.Sauna IODev MQTT2
attr MQTT2_IoT.MirkOTech.Licht.Sauna readingList IoT.MirkOTech.Licht.Sauna:/state:.* state\
IoT.MirkOTech.Licht.Sauna:/mode:.* mode
attr MQTT2_IoT.MirkOTech.Licht.Sauna room MQTT2_DEVICE
attr MQTT2_IoT.MirkOTech.Licht.Sauna setList on /Sauna/Licht/state on\
off /Sauna/Licht/state off\
state:slider,0,5,255 /Sauna/Licht/state $EVTPART1
attr MQTT2_IoT.MirkOTech.Licht.Sauna webCmd state:on:off



Ich freu mich über Hilfe :-)

Vielen Dank und liebe Grüße,
Moerk
Titel: Antw:Fehlermeldung "Unknown Argument" bei Slider in MQTT2 Device
Beitrag von: Beta-User am 24 November 2020, 11:00:28
Na ja, "state" ist immer etwas besonders...

Zwei Varianten hätte ich im Angebot:
Zum einen einfach - wie sonst auch üblich - ein separates brightness-Reading zu verwenden:
defmod MQTT2_IoT.MirkOTech.Licht.Sauna MQTT2_DEVICE IoT.MirkOTech.Licht.Sauna
attr MQTT2_IoT.MirkOTech.Licht.Sauna IODev m2server
attr MQTT2_IoT.MirkOTech.Licht.Sauna readingList IoT.MirkOTech.Licht.Sauna:/state:.* state\
IoT.MirkOTech.Licht.Sauna:/mode:.* mode
attr MQTT2_IoT.MirkOTech.Licht.Sauna room MQTT2_DEVICE
attr MQTT2_IoT.MirkOTech.Licht.Sauna setList on /Sauna/Licht/state on\
off /Sauna/Licht/state off\
brightness:slider,0,5,255 /Sauna/Licht/state $EVTPART1
attr MQTT2_IoT.MirkOTech.Licht.Sauna setStateList on off
attr MQTT2_IoT.MirkOTech.Licht.Sauna webCmd brightness:on:off


(Es wäre dabei sinnvoll, zum einen für das Setzen einen separaten Topic zu nehmen, und - vor allem - die Rückmelde-Topics etwas mehr auszudifferenzieren, auch was die Grundstruktur angeht. Dass der MQTT2_SERVER den Client beachtet, ist eine Besonderheit, und falls du mal was umbauen musst und andere Devices hast, die auch unter "/state" rückmelden, ist "Spass" angesagt.
Bei der Gelegenheit noch: Topic-Strukturen, die mit "/" beginnen, sind uncool ::) .)

Variante 2 wäre, 0 auf "off" und 255 auf "on" zu mappen (via eventMap). Vermutlich hat das aber eine andere Wirkung und du willst ggf. mit einem gedimmten Helligkeitswert einschalten können?
Titel: Antw:Fehlermeldung "Unknown Argument" bei Slider in MQTT2 Device
Beitrag von: Moerk am 24 November 2020, 11:30:35
Zuerst vielen Dank für deine Hilfsbereitschaft!

Ich bin deinem Rat gefolgt und habe in dem Arduino-Sketch statt "state" nun "brightness" angegeben, damit funktioniert es mit dem Slider im Web. Klasse!

Du hast erwähnt das ein Topic mit / keine großen Begesiterungsstürme in der Fachwelt auslöst.
Kannst du mir dazu noch etwas mehr sagen? Einfach entfernen oder baut man das ganz anders auf?
Die MQTT Geschichte ist nicht das Hauptprojekt hier, ich hab mir einfach nur ein bisschen abgeguckt wie meine Tasmota-Steckdosen das machen...
Titel: Antw:Fehlermeldung "Unknown Argument" bei Slider in MQTT2 Device
Beitrag von: Beta-User am 24 November 2020, 11:39:07
Danke für die Rückmeldung, schön, dass das funktioniert wie gewünscht :) .

Na ja, als Teil der "Fachwelt" würde ich mich nicht bezeichnen, aber z.B. grade weit verbreitete firmwares wie tasmota verwenden (im default) keine slashes am Topic-Beginn (dto. für die meisten paho-basierten Projekte wie zigbee2mqtt). Neben dem "machen die guten auch so" Argument finde ich es schlicht optisch einfacher, einen MQTT-Pfad von einem normalen Linux-Pfad zu unterscheiden, wenn man es weglässt...

Ansonsten würde ich den Topic halt mehr gliedern (sauna als "base" ist ja hinreichend), und dann eben zwischen Hin- und Rückweg klar unterscheiden, wie tasmota das eben mit "cmnd" und "stat" (bzw. tele) macht. Machst du ja auch schon, aber eben auf einer sehr hohen Ebene des Topic-Pfades.
Titel: [gelöst] Antw:Fehlermeldung "Unknown Argument" bei Slider in MQTT2 Device
Beitrag von: Moerk am 24 November 2020, 11:48:01
ok das verstehe ich.
Ich bin davon ausgegangen das man quasi einen "Pfad" hat aus dem man sowohl den aktuellen Status liest als diesen auch setzen kann. Eine Unterscheidung hatte ich so gar nicht vorgesehen.

Aber ich nehme es gerne als "Best-Practive", freue mich was gelernt zu haben und werde das entsprechend einbauen.

Ganz vielen Dank für deine Unterstützung, es klappt nun alles wie ich mir das vorgestellt habe! :-)