Dummy Dimmer konfigurieren, Steuerung über Alexa-FHEM, Logik in Notify

Begonnen von Master_Nick, 23 Februar 2017, 10:24:11

Vorheriges Thema - Nächstes Thema

Master_Nick

Guten Morgen,  :)

Ich habe einen LED Stripe der über Infrarot durch meinen Harmony Hub gesteuert werden kann.
Generell wird ihm der Strom geschaltet über einen IT Schalter - der LED Stripe geht bei Stromzufuhr auch direkt an.
Es sind also schon definitiv 2 Devies in FHEM (einmal der IR Teil und einmal der IT Teil) die den Stripe steuern können.

Ich möchte nun gerne eine Dummy erzeugen, der on of und dimmen auf Prozentangaben für Alexa-FHEM bereitstellt.
Ein anderer Ansatz war die Idee den Device der bisher von IT geschaltet wird mit Möglichen Kommandos anzureichern (So wie ich es bisher mal aufschnappt hatte evtl. webCMD?) die einfach an den Hub weitergegeben werden. Aber das scheint durch die feste Verdrahtung mit dem IT Protokoll und darin enthaltenen Möglichkeiten nicht zu gehen oder ich weiß nicht wie.

Aktuell sagt mein Echo über das Smart Home Skill das Gerät kann diesen Befehl nicht und der Custom Skill sagt "Ich habe Ich kann stripe nicht auf 50 schalten. auf 50 prozent gestellt"

Getestet habe ich einen Dummy mit Namen Stripe und setList on off up down. Sobald ich mehr als on off anbiete über den Dummy erkennt Alexa-FHEM die angebotenen Möglichkeiten nicht mehr.
Was ist zu tun?
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

#1
So nachdem ich mal in anderen Threads gewildert habe....

Kann ich nun per Echo meinen dummy dimmen.

define Stripe dummy
attr Stripe alexaName Stripe
attr Stripe alexaRoom Wohnzimmer
attr Stripe genericDeviceType light
attr Stripe group Licht
attr Stripe homebridgeMapping Brightness=state,cmd=
attr Stripe room Wohnzimmer,Echo
attr Stripe setList value:slider,0,1,100 on off
attr Stripe webCmd value


Integrieren in einen vorhandenen IT Device scheint nicht zu gehen, das ganze muss nun noch deligiert werden an IT Aktor und Hub.

Witzigerweise sagt das Smart Home Skill nun es habe mehrere Geräte mit dem Namen Stripe gefunden... ist aber definitiv nicht der Fall.
*EDIT* Und das kommt von geänderten Eigenschaften :-) also einmal die 2 Geräte verwerfen in der Alexa App und neu suchen. Steuern setzen von Dimmwerten und ein aus geht also nun.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

Ach du sch.......

Mir wurde gerade klar, was es heißt wenn mal von 50% auf 25% gedimmt werden soll... das Notify muss wissen,  ist der neue state Wert größer oder kleiner als der alte und wie viele Schritte sind es von dort zum neuen. Die andere unschöne Alternative wäre, ganz runter dimmen und auf den Wert hoch dimmen... *PFUI!*

Tja dann muss ich jetzt mal überlegen  :-D
Alten wert speichern als Attr ist ja kein Ding. Berechnen zum neuen mhhh eigentlich geht das alles... Umsetzung in Perl ist die Herausforderung.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

MadMax-FHEM

Zitat von: Master_Nick am 23 Februar 2017, 23:48:40
Ach du sch.......

Mir wurde gerade klar, was es heißt wenn mal von 50% auf 25% gedimmt werden soll... das Notify muss wissen,  ist der neue state Wert größer oder kleiner als der alte und wie viele Schritte sind es von dort zum neuen. Die andere unschöne Alternative wäre, ganz runter dimmen und auf den Wert hoch dimmen... *PFUI!*

Tja dann muss ich jetzt mal überlegen  :-D
Alten wert speichern als Attr ist ja kein Ding. Berechnen zum neuen mhhh eigentlich geht das alles... Umsetzung in Perl ist die Herausforderung.

Bevor du noch vor lauter Selbstgesprächen irre wirst ;)

Nimm doch ein Reading beim eh schon vorhandenen Dummy zum Zwischenspeichern:

setreading DUMMYNAME Value

Ich hab noch nicht genau raus was jetzt wo wie...

Was kommen denn für Events im EventMonitor, wenn du die Kommandos an Alexa gibst.

Wie wird da was im Dummy gespeichert (state ist der Wert der dann von Alexa / alexa-fhem gesetzt wird)?

Was soll dann übertragen werden...
...auf was zum IT Device?

Vielleicht kann ich helfen, wenn ich raus hab was ihr da ausgeheckt habt ;)

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)

Master_Nick

#4
Also im Eventmonitor kommt bei "Setze Streifen auf 10%" dies hier: 2017-02-24 00:10:16 dummy Streifen value 10

Ich habe nun ein Notify angefangen:


Streifen {
fhem "setreading Streifen newstate [Streifen:state]"
if ([Streifen:state] = "on") {set Stripe.Strom on}
if ([Streifen:state] = "off") {set Stripe.Strom off}
if ([Streifen:state] = "0") { set harmony_37861872 Dimm- }
if ([Streifen:state] = "5") {}
if ([Streifen:state] = "10") {}
if ([Streifen:state] = "15") {}
if ([Streifen:state] = "20") {}
if ([Streifen:state] = "25") {}
if ([Streifen:state] = "30") {}
if ([Streifen:state] = "35") {}
if ([Streifen:state] = "40") {}
if ([Streifen:state] = "45") {}
if ([Streifen:state] = "50") {}
if ([Streifen:state] = "55") {}
if ([Streifen:state] = "60") {}
if ([Streifen:state] = "65") {}
if ([Streifen:state] = "70") {}
if ([Streifen:state] = "75") {}
if ([Streifen:state] = "80") {}
if ([Streifen:state] = "85") {}
if ([Streifen:state] = "90") {}
if ([Streifen:state] = "95") {}
if ([Streifen:state] = "100") {}
}


Aktuell setzt es aber das reading noch nicht richtig :-D Und beim Rest fehlt logischerweise alles.
Ich denke ich werde newstate und oldstate nutzen. Nachdem es dann gedimmt hat soll es in oldstate eintragen was der Wert nun ist.
Ggfs. werde ich noch anpassen, dass dort nur zahlen stehen ohne value (für die Verarbeitung einfacher) und dann arbeite ich mit < und > damit ich mit den oben aktuell sichtbaren Schritten auskomme so, dasss alles was von 0-2 ist 0 ist und alles was 3 bis 7 ist 5 ist. *EDIT* Mit homebridgeMapping Brightness=state,cmd= bekommt man nur noch eine Zahl ohne value davor :-)

On und Off gehen auf den IT Device und schalten ein und aus. Der Rest geht alles über den Harmony Device.

Mh - aktuell möchte der Notify mal so gar nicht gehen... ob das die Uhrzeit ist  ;D

Zitat2017.02.24 01:15:03 1: ERROR evaluating my $NAME='Streifen';my $EVENT='86';my $SELF='Stripe.Dimmer';my $TYPE='dummy';my $EVTPART0='86';{
setreading Streifen newstate [Streifen:state]
if ([Streifen:state] = "on") { set Stripe.Strom on }
if ([Streifen:state] = "off") { set Stripe.Strom off }
if ([Streifen:state] = "0") { set harmony_37861872 Dimm- }
if ([Streifen:state] = "5") {}
if ([Streifen:state] = "10") {}
if ([Streifen:state] = "15") {}
if ([Streifen:state] = "20") {}
if ([Streifen:state] = "25") {}
if ([Streifen:state] = "30") {}
if ([Streifen:state] = "35") {}
if ([Streifen:state] = "40") {}
if ([Streifen:state] = "45") {}
if ([Streifen:state] = "50") {}
if ([Streifen:state] = "55") {}
if ([Streifen:state] = "60") {}
if ([Streifen:state] = "65") {}
if ([Streifen:state] = "70") {}
if ([Streifen:state] = "75") {}
if ([Streifen:state] = "80") {}
if ([Streifen:state] = "85") {}
if ([Streifen:state] = "90") {}
if ([Streifen:state] = "95") {}
if ([Streifen:state] = "100") {}
}
: syntax error at (eval 14705) line 2, near "newstate ["
syntax error at (eval 14705) line 4, near "Streifen:"

2017.02.24 01:15:03 3: Stripe.Dimmer return value: syntax error at (eval 14705) line 2, near "newstate ["
syntax error at (eval 14705) line 4, near "Streifen:"

2017.02.24 01:15:03 5: End notify loop for Streifen
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

MadMax-FHEM

Du führst irgendwie immer noch selbstgespräche habe ich den Eindruck...

Mir ist nicht klar, was du nun wo setzen willst/musst...

Ich würde ein so langes notify anders machen:

define dimmenIrgendwas REGEX notify {my_HierDimmeIch($EVENT)}

Und dann eine sub my_HierDimmeIch in myUtils:

https://wiki.fhem.de/wiki/99_myUtils_anlegen


sub my_HierDimmeIch($)
{
  my ($Event) = @_;
  my $ActValue = ReadingsNum("Gerät", "Reading", Default);

  # um zu sehen was kommt / wenn zu viel/falsches kommt evtl. dann statt $EVENT -> $EVTPART1 $EVTPART2 etc. (hier wäre dann das mit value auch kein Problem: EVTPART1 oder EVTPART2 wäre dann nur die Zahl)
  Log(1, "my_HierDimmeIch   Event: $Event");

  # hier was immer nötig ist zu dimmen

  # abspeichern des aktuellen Wertes
  {fhem "setReading DIMMDUMMY READING_NAME $ActValue "}

 
}


Mache ich selbst bei "einfachen" notify (ist manchmal etwas übertrieben vielleicht).

Ich beginne erst mal mit der Logausgabe.
Da sehe ich ob der notify auslöst und was "kommt"...

Wenn ich weiß was ich (übergeben bekommen) habe, lege ich los...

Vielleicht hilft das...
...ansonsten vielleicht erläuterst du das Problem so, dass ich's verstehen kann ;)

Viel Erfolg, 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)

Master_Nick

Ich bin heute irgendwie nicht auffnahmefähig :-D
Danke generell schon mal für die Antwort... ich schau mir das morgen in Ruhe an. :-D
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

Also ich bekomme das hier nicht lauffähig, sobald man die "#" entfernt geht nix mehr:



Streifen {
   fhem("setreading Streifen newstate [Streifen:state]");
   if (Value("Streifen") eq "on") { fhem("set Stripe.Strom on"); }
   if (Value("Streifen") eq "off") { fhem("set Stripe.Strom off"); }
#   if (Value("Streifen") == 0) { for (my $i=0 ; $i < 1 ; $i++) { fhem("set harmony_37861872 Dimm-"); } }
}
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

MadMax-FHEM

Wie geschrieben ich nutze kein if perl etc. in einem notify...

Ich mache das losgelöst in einer Sub...

Da habe ich ganz normal alles was in perl geht...
...und kann Ausgaben machen...
...und ich finde es übersichtlicher...

Wenn eh im Event on/off steht, dann sind die ersten beiden if doch irgendwie überflüssig??

Du kannst doch einfach auf $Event setzen...

Sorry aktuell nur Handy...

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)

Master_Nick

Die on off sind nötig, da es ein Dummy ist. Es würde NICHTS geschaltet ohne auf seinen Status on off zu reagieren. Oder sehe ich das falsch? :-)

Wie und wohin lagerst du denn aus? Und Womit triggerst du dann deinen Sub? Das, was du oben schriebst sieht aus, als würde es generell ALLE Events filtern auf eine nötige aktion von dem Sub. Da finde ich ein Notify schon eingrenzender, falls es so ist.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

MadMax-FHEM

#10
Das ist doch ein ganz normales notify.
Die Regex musst du festlegen ich weiß ja nicht auf welchen Event von was du genau reagieren willst...

Wenn der notify triggert wird die Sub in dem Fall mit Parameter $EVENT aufgerufen...
Du kannst alles übergeben was bei einem notify zur Verfügung steht (siehe commandref) oder mit fhem/perl Funktionen auch anderes was du halt in der sub brauchst...

Ich mache halt zunächst nur eine Ausgabe der Parameter.
Dann weiß ich dass das notify (wie gewünscht) triggert und was übergeben wird...

Damit programmiere ich dann was passieren soll zusammen mit allen nötigen Abhängigkeiten/Bedingungen...

EDIT2: Und kann (mache ich während Entwicklung auch großzügig) Logausgaben inkl. von "Zwischenwerten" um zu sehen was geht und was (hoffentlich warum) nicht geht...

EDIT: im Prinzip dasselbe was du machst, nur mit dem ganzen if-Zeugs halt übersichtlich in einer Sub...

Wie das Anlegen von subs etc. geht ist verlinkt...

EDIT3: aber in dem anderen Thread scheint die Lösung ja zum Greifen nah... ;)  Da wurde ja davon ausgegangen, dass du eine Sub aufrufst... ;)

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)

Master_Nick

Soo:

Dummy kann bisher so bedient werden:

"mache Streifen heller" (25er Schritte)
"mache Streifen dunkler" (25er Schritte)
"Setze Streifen auf [Wert von 0 - 100%]"
"Schalte Streifen an"
"Schalte Streifen aus"

Farbe kann ich bisher noch nicht, aber da wäre es wohl das einfachste die andere alexa-fhem Version zu nutzen bevor man aufwändig was bastelt.

Die Logik für das Notify wo er prüft:

- neuer Wert größer oder kleiner als alter
- wieviele Dimmkommandos nötig zum erreichen des Wertes

Ist noch nicht fertig - aktueller Stand:

Streifen {
   fhem("setreading Streifen newstate [Streifen:state]");
   if (Value("Streifen") eq "on") { fhem("set Stripe.Strom on"); }
   if (Value("Streifen") eq "off") { fhem("set Stripe.Strom off"); }
   if (Value("Streifen") eq "0") { for (my $i=0 ; $i < 32 ; $i++) { fhem("set harmony_37861872 Dimm-"); } }
   if (Value("Streifen") eq "100") { for (my $i=0 ; $i < 32 ; $i++) { fhem("set harmony_37861872 Dimm-"); } }
}


Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

MadMax-FHEM

Ich seh schon du kämpfst dich auf allen Fronten durch!

Dann viel Erfolg weiterhin!

Bei Fragen einfach fragen...

(war ja keine Frage dabei oder hab ich sie übersehen? ;)  )

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)

Master_Nick

Ne alles gut :-) (War ein Status keine Frage)

Ja der Antrieb bei Hausautomation ist irgendwie extrem stark ^^ Ich will es einfach schaffen und meist über den besten Weg :-D

Aber man erfährt hier auch SEHR VIEL HILFE, wenn man mitdenkt ;-) Finde ich klasse!

Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

MadMax-FHEM

Zitat von: Master_Nick am 03 März 2017, 00:06:19
Ja der Antrieb bei Hausautomation ist irgendwie extrem stark ^^ Ich will es einfach schaffen und meist über den besten Weg :-D

Jep, kann "böse" enden ;)



Zitat von: Master_Nick am 03 März 2017, 00:06:19
Aber man erfährt hier auch SEHR VIEL HILFE, wenn man mitdenkt ;-) Finde ich klasse!

Den Mitdenkenden hilft sich's auch gut und gerne...
...leider sind nicht alle so...
...viele wollen fertige Lösungen und das geht meist nicht...
...also nicht ohne "Zusammenarbeit"...

Dann hau rein!

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)