[gelöst] Fhem , Alexa für Anfänger

Begonnen von apohero, 10 November 2020, 14:05:55

Vorheriges Thema - Nächstes Thema

apohero

Hi,

hier ist das listing vom Wohnzimmerlicht:

Internals:
   FUUID      5fac3036-f33f-b4c0-1316-78f4e43386062e58
   NAME       Wonhzimmerlicht
   NR         19
   STATE      value 72
   TYPE       dummy
   READINGS:
     2020-11-12 15:15:44   state           value 72
Attributes:
   alexaName  Wohnlicht
   genericDeviceType light
   homebridgeMapping Brightness=state,cmd=
   setList    value:slider,0,1,100 on off
   webCmd     on:off:value

justme1968

du hast readingList nicht gesetzt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

apohero

Hallo,
ok, readingsList kenne ich noch nicht, muss ich mir mal ansehen.
Ich habe derweil den Wert dezimal herraus bekommen, das :d hat zumindest den Wert eingefügt, siehe hier:
Internals:
   DEF        ([Wonhzimmerlicht] eq "on") ({ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=80")}) DOELSEIF ([Wonhzimmerlicht] eq "off") ({ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=0")}) DOELSE (
{ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=[Wonhzimmerlicht:state:d]") } )
   FUUID      5fad120a-f33f-b4c0-a49c-01e82898e5b664db
   MODEL      FHEM
   NAME       Wonhzimmerlicht.DOIF
   NOTIFYDEV  global,Wonhzimmerlicht
   NR         21
   NTFY_ORDER 50-Wonhzimmerlicht.DOIF
   STATE      cmd_3
   TYPE       DOIF
   VERSION    22913 2020-10-04 21:46:02
   READINGS:
     2020-11-12 18:50:25   Device          Wonhzimmerlicht
     2020-11-12 18:50:23   cmd             3
     2020-11-12 18:50:23   cmd_event       Wonhzimmerlicht
     2020-11-12 18:50:23   cmd_nr          3
     2020-11-12 18:50:25   e_Wonhzimmerlicht_STATE value 17
     2020-11-12 18:50:23   error           { GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=100") }: 1
     2020-11-12 18:41:58   mode            enabled
     2020-11-12 18:50:23   state           cmd_3
   Regex:
     accu:
     cond:
       Wonhzimmerlicht:
         0:
           &STATE     ^Wonhzimmerlicht$
         1:
           &STATE     ^Wonhzimmerlicht$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Wonhzimmerlicht','STATE') eq "on"
     1          ::InternalDoIf($hash,'Wonhzimmerlicht','STATE') eq "off"
   do:
     0:
       0          { GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=80")}
     1:
       0          { GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=0")}
     2:
       0           { GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=[Wonhzimmerlicht:state:d]") }
   helper:
     DEVFILTER  ^global$|^Wonhzimmerlicht$
     NOTIFYDEV  global|Wonhzimmerlicht
     event      value 17
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Wonhzimmerlicht
     timerevent value 17
     triggerDev Wonhzimmerlicht
     timerevents:
       value 17
     timereventsState:
       state: value 17
     triggerEvents:
       value 17
     triggerEventsState:
       state: value 17
   internals:
     all         Wonhzimmerlicht:STATE
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:


Problem ist jetzt nur das der Slider auf den Wert gesetzt wird, der Befehl aber nicht direkt abgeschickt wird, ich muss erst auf "value <WERT>" klicken (neben "on" "off") dann wird der Eingestellte Befehl geschickt. Ich fürchte der Slide ist das falsche mittel... Gibt es eine Alternative, welche direkt den eingestellen Wert schickt?
Zudem kennt Alexa den Slider auch nicht, nur on und off.
mfg

apohero

...achso der Slider wird von Alexa schon erkannt. Musste das Device nur löschen und wieder neu suchen lassen.
Interessant ist nun, daß wenn ich die Lampen auf off stelle und sie dann aus sind ich einmalig "Alexa schalte Lampe auf 80 Prozent" stellen kann. Dann wird die Lampe auf 80% gestellt. Alle Sprachbefehle danach schalten die Lampe dann nicht mehr mit Wert. Erst wenn ich die Lampe wieder auf off setzte  kann ich wieder ein Sprachbefehl absetzten.

apohero

Also der Slider funktioniert nur mit stateänderungen. Dh. ich muss immer einen Lampenwert setzten, dann Lampe aus, dann Lampe Wert setzen usw. damit ich verschiedene Helligkeiten bekomme. Würde es gerne direkt haben ohne das Ausschalten....

justme1968

nicht alles auf einmal machen.

zuerst das device in fhemweb komplett zum laufen bekommen.. inklusive slider, STATE, icon webCmd.

dann die http steuerung. dann alexa.

solange schritt 1 nicht komplett geht ist es sinnlos mit 2. und 3. anzufangen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

apohero

...ich habe die anderen Schritte getestet um die Ursache zu finden. Anscheinend braucht das ganze einen Statechange um zu funktionieren. Also von zbsp on -> on passiert nichts genauso von slider -> slider. Wenn ich von on-> slider gehe funktionierts, auch off->slider geht. Aber wenn ich einen Sliderwert setzte und danach einen anderen Sliderwert, passiert nichts. Erst wenn ich on oder off drücke und danach wieder "slide" geht es einmal.

TomLee

#22
Zitatdu hast readingList nicht gesetzt.

Hast du das jetzt mal versucht ?
Zitat
ok, readingsList kenne ich noch nicht, muss ich mir mal ansehen.

Du willst oben in dem DOIF in $EVENT nur den numerischen Wert.
Falls das noch unklar sein sollte, dazu ist einfach nur ein attr Wonhzimmerlicht readingList value nötig, dann landet nur der Wert in state.

ZitatAlso von zbsp on -> on passiert nichts genauso von slider -> slider. Wenn ich von on-> slider gehe funktionierts, auch off->slider geht. Aber wenn ich einen Sliderwert setzte und danach einen anderen Sliderwert, passiert nichts. Erst wenn ich on oder off drücke und danach wieder "slide" geht es einmal.

Weiß nicht genau aber denke es muss doch das Attribut do always im DOIF gesetzt werden ?

Gruß

Thomas

MadMax-FHEM

Kommen denn Events, also auch bei on -> on?

Siehe Eventmonitor...

Kann man bestimmt bei DOIF einstellen.
Da gibt es so viele Attribute: do always / repeatcmd usw.

Also falls es das DOIF ist was du meinst, dass nicht "geht"...

Aber wie geschrieben: bei DOIF bin ich raus.

Die Mischung von "Projektieren/Konfigurieren" und "Programmieren" ist mir zu hoch... ;)

Ich nehme lieber ein simples notify und programmiere...
Da ist MIR dann klar was passiert und was ich passieren lassen will... :)

Bei DOIF ein Attribut geändert etc. und das ganze "Konstrukt" verhält sich anders...

Aber: jeder wie er will und kann ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

apohero

Hallo zusammen,

jaaa das war der letzte wichtige Schritt zum glücklichen Vollendung do always führt den Befehl immer aus.
Hier der fertige RAW Code für alle die ihre Schalter per Http Request schalten wollen und auch dimmen:

Device:
defmod Wohnzimmerlicht dummy
attr Wohnzimmerlicht alexaName Licht Wohnzimmer
attr Wohnzimmerlicht genericDeviceType light
attr Wohnzimmerlicht homebridgeMapping Brightness=state,cmd=
attr Wohnzimmerlicht setList pct:slider,0,1,100 on off
attr Wohnzimmerlicht webCmd pct


Das dazugehörige DOIF
defmod Wohnzimmerlicht.DOIF DOIF ([Wohnzimmerlicht] eq "on") ({ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=80")}) DOELSEIF ([Wohnzimmerlicht] eq "off") ({ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=0")}) DOELSE ( \
{ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=[Wohnzimmerlicht:state:d]")})
attr Wohnzimmerlicht.DOIF do always


Großen großen Dank an MadMax und alle anderen die mir geholfen haben. Ihr seid TOP!!!!!

MadMax-FHEM

Gerne.

Dann pappe doch bitte vorne beim ersten Post ein [gelöst] o.ä. dran, danke.

Viel Spaß noch, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

TomLee

Wenn man sich den dummy sparen wollte, wärs auch möglich das ganze nur über das DOIF umzusetzen.

So meine ich könnte das klappen:

defmod Wohnzimmerlicht.DOIF DOIF ($SELF eq "on") ({ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=80")}) DOELSEIF\
($SELF eq "off") ({ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=0")}) DOELSEIF\
([$SELF:pct,"0"]) ({ GetHttpFile("192.168.178.111", "/api/?action=set&ext=DimmerEG&io=Q2&value=[$SELF:pct]")})
attr Wohnzimmerlicht.DOIF alexaName aprikose
attr Wohnzimmerlicht.DOIF cmdState on|off
attr Wohnzimmerlicht.DOIF do always
attr Wohnzimmerlicht.DOIF genericDeviceType light
attr Wohnzimmerlicht.DOIF readingList pct
attr Wohnzimmerlicht.DOIF room Test
attr Wohnzimmerlicht.DOIF setList on\
off\
pct:slider,0,1,100
attr Wohnzimmerlicht.DOIF webCmd pct


Was hier noch nicht passt ist der Status des Button in der App, der stellt sich immer wieder auf AN nachdem man ausgeschaltet hat.
Nimmt man das pct:slider,0,1,100 aus der setList passt der Status, vlt hat wer ja eine Idee wie man setList korrekt definieren müsste (oder einfach nicht die App öffnen  :P)


Gruß

Thomas