2 unterschiedliche Timer auf dem gleichen Aktor

Begonnen von coolheizer, 22 Juni 2017, 20:42:02

Vorheriges Thema - Nächstes Thema

coolheizer

Wie bekomme ich es hin 2 unterschiedliche Timer auf Knopfdruck auf einen Aktor zu schalten? (2 Schalter, sollen über HA Bridge geschaltet werden)

Es geht darum meine Deckenlampe zu steuern, Tastendruck unter 1 sekunde = an/aus , länger als 1 Sekunde dimmen.

Unten mal meine cfg.
Auch wenn ich den Schalter Deckenlampe_Dimmer betätige, läuft der Timer von Deckenlampe mit und schaltet die Lampe an/aus, was nicht sein soll.

define Deckenlampe IT 1111111000110011101010110 0 1110
attr Deckenlampe IODev CUL
attr Deckenlampe room IT
define Deckenlampeon_for1sec notify Deckenlampe*:on sleep 0.2;; set $NAME off


define Deckenlampe_Dimmer IT 1111111000110011101010110 0 1110
attr Deckenlampe_Dimmer IODev CUL
attr Deckenlampe_Dimmer room IT
define Deckenlampeon_Dimmer_for5sec notify Deckenlampe_Dimmer*:on sleep 5;; set $NAME off


FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Beta-User

Die .* sollten nicht notwendig sein, oder. Ansonsten ist regex 1 auch erfüllt, wenn reges 2 triggert...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

coolheizer

Die * habe ich jetzt raus genommen.

Wie kann ich das ganze nun ändern so das ich das gewünschte Ergebniss erhalte?
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Beta-User

Schau doch mal in den Eventmonitor, was beim Drücken Deiner FB-Tasten passiert (so es eine gibt...). M.E. sollte jeweils auch der "." noch weg.

Bitte auch die Grundlagen zu perl-regex mal durchsehen: "." steht für genau ein beliebiges Zeichen, ".*" für keines oder beliebig viele.

Was die HA Bridge angeht, habe ich keine Erfahrung, vermutlich müßtest Du dazu noch je einen Trigger-Befehl für jedes der beiden Notifys anlegen. (=> commandref zu notify).

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

coolheizer

Hallo Beta-User,

irgendwie habe ich das Gefühl du hast meine Frage nicht richtig verstanden, bzw. habe ich evtl. nicht richtig beschrieben was läuft und was nicht.

Nochmal etwas ausfürlicher:

keine Ahnung was du mit dem "." meinst, ein Punkt ist nicht enthalten, außer an der Stelle 0.2 was 0,2 Sekunden bedeutet.

Befehle für die HA Bridge benötige ich nicht, das Läuft bereits und läst sich mit Alexa steuern.

Der Befehl :

define Deckenlampeon_for1sec notify Deckenlampe*:on sleep 0.2;; set $NAME off

Der fertige, funktionierende Schalter:
define Deckenlampe IT 1111111000110011101010110 0 1110
attr Deckenlampe IODev CUL
attr Deckenlampe room IT
define Deckenlampeon_for1sec notify Deckenlampe*:on sleep 0.2;; set $NAME off




Funktioniert auch einwandfrei, so wie es soll, auch mit dem * welches ich mitlerweise entfernt habe.
Es schaltet mir meine umgebaute Baumarkt Steckdose für unter eine Sekunde ein/aus und somit meine Deckenlampe.


Jetzt war halt die Idee einen weiteren Schalter anzulegen:

define Deckenlampe_Dimmer IT 1111111000110011101010110 0 1110
attr Deckenlampe_Dimmer IODev CUL
attr Deckenlampe_Dimmer room IT
define Deckenlampeon_Dimmer_for5sec notify Deckenlampe_Dimmer*:on sleep 5;; set $NAME off


Dieser sollte zum Dimmen benutzt werden und den Schalter für 5 Sekunden einschalten.

Das Problem dabei ist das beide notify gestartet werden, egal welchen Schalter ich betätige
dh. es wird die Lambe über den Impuls von 0,2 Sekunden ein oder ausgeschaltet (Schalter gibt für 0,2 Sekunden Strom auf meine Lampe), dann nach 5 Sekunden wird nochmal der ausschaltbefehl von der Deckenlampe_Dimmer gesendet, der Schalter ist ja aber bereits aus durch das define mit den 0.2 Sekunden.

Was ich benötige sind 2 voneinander unabhängige schalter mit je den 0,2 bzw. 5 Sekunden Einschaltdauer der Baumarkt Steckdose.

Gruß
Heizer
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Beta-User

OK,

ich versuche das mal zu sortieren:
- Du hast eine FB-Taste, die Du kurz oder lang drückst. Ganz ohne FHEM wird ein- bzw. ausgeschaltet (kurz) bzw. gedimmt (lang).
- Das 1. Problem scheint jetzt zu sein, dass Du in FHEM kurz oder lang beim Empfangen unterscheiden willst
- und dann damit (?) (2. Problem) seitens FHEM einen (weiteren?) Sendebefehl über den CUL auslösen.

Nach meinem Eindruck wird das nicht funktionieren, aber schauen wir mal:
- Deaktiviere mal die beiden notify und analysiere dann, was im Eventmonitor passiert und wie die Lampe im "realen Leben" geschaltet wird. Meine Vermutung wäre, dass FHEM schon nicht mitbekommt, dass es einen langen Tastendruck gegeben hat (der CUL bzw. das IT-Modul verwirft uU doppelte Nachrichten). Unterscheiden sich die Ereignisse im Eventmonitor nicht, kannst Du auch keine unterschiedlichen Aktionen darauf ausführen.

Das war die Empfangsseite. Zur Sendeseite:
- M.E. machen Deine notify auch ganz was anderes, als Du vermutest, nämlich 1. warten (sleep x) und dann einen "off"-Befehl an die Lampe senden. Damit ist der Lampenzustand am Ende immer "off", jedenfalls, wenn der Sendebefehl zuverlässig funktioniert.
- Was Du aber brauchen dürftest, ist ein "sende für eine gewisse Zeit" (und beende danach das Senden). Ob das für IT-Befehle mit dem CUL geht: Keine Ahnung... Eventuell, aber sehr unwahrscheinlich mit einer Art "blink" mit sehr kurzen Ausschaltzeiten. Die Anzahl der Wiederholungen läßt sich auch beeinflussen, aber (ungeprüft) eher auf eine für alle IT-Befehle gültige Weise.

Was die Diskussion um den Punkt angeht: Sorry, das hatte ich auf dem Handy gelesen, meine Augen lassen wohl nach :'( .

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

coolheizer

Hallo Beta-User,

entschuldige bitte aber überfliegst du meine Antwort nur ohne richtig zu lesen? Viel genauer und ausfürlicher geht schon bald nicht mehr,
vergiss einfach mal die Deckenlampe, denke mal dabei hakt es.

Ich möchte ganz einfach eine Baumarkt Steckdose ein und aus schalten, egal was dahinter drannen hängt.

Wie ich schon schrieb funktionieren beide notifi, jedes für sich, genauso wie sie sollen:

die beiden notify machen genau das was Sie sollen, eine Baumarkt Steckdose einmal für 0,2 sekunden und einmal für 5 sekunden ein und dann wieder ausschalten.

Das hat jetzt nix mit kurzem oder langen Druck auf der Fernbedienung zu tun, es "simuliert" einen kurzen oder langen Druck des "Wandtasters" , der Treiber in der Lampe reagiert bei Strohmzufuhr von unter 1 Sekunden mit einem Schaltbefehl an oder aus, je nach Zustand.
Bei längerem Druck 1<sekunde wird gedimmt.

Das notifi könnte auch anders aussehen:
define Deckenlampeon_for1sec notify Deckenlampe:on set Deckenlampe on-for-timer 0.1
Hier ist allerdings das Problem das nicht schnell genug der Ausschaltbefehl nach dem einschalten kommt, das ganze dauert länger als eine Sekunde.

Wie schon geschrieben funktionieren beide notify für sich perfekt, leider werden beide notify, egal welchen der beiden Schalter ich tätige, gestartet.
Sie sollen unabhängig voneinander funtionieren.
Gruß
Heizer
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Beta-User

Hallo Heizer,

leider scheine ich Deinen Use-Case tatsächlich bis dato nicht so recht durchschaut zu haben.

Wenn ich noch genauer lese, verstehe ich allerdings auch nicht so richtig viel mehr, weil aus FHEM-Sicht die beiden Schalter, die Du beschreibst (bis auf den Namen) identisch zu sein scheinen (ich hoffe, die Einrückung paßt auf deinem Endgerät dann auch untereinander):

define Deckenlampe_Dimmer IT 1111111000110011101010110 0 1110
define Deckenlampe IT        1111111000110011101010110 0 1110


Daraus würde ich jetzt ganz oberflächlich gedacht schließen, dass ein Tastendruck auf einen - egal welchem - Deiner physischen Schalter immer auf beide FHEM-Devices wirkt und daher eben auch immer beide notify ausgelöst werden. Müßte eigentlich im Event-Monitor auch so zu sehen sein ;) .

Überflogene Grüße,
Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

coolheizer

Hallo Beta-User,

;D jetzt hast du es, genau das ist mein Problem, und ich weis nicht wie ich es lösen kann.

eine Idee?
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Beta-User

Flapsig gesprochen: nimm andere - vernünftige - Hardware, die auch den effektiven Status zurückmeldet...

Ansonsten würdest Du eben noch einen weiteren Taster benötigen mit einer anderen IT-Codierung, um damit die "Inputs" an FHEM auseinanderhalten zu können.

Oder - aber weniger intuitiv für den Endanwender - Du verwendest sequence und triggerpartial. Also ein Tastendruck: notify1, zwei Tastendrücke: notify2.

Erhellte Grüße,

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

coolheizer

Der Endanwender bekommt von der ganzen schalterei nix mit, der sagt einfach nur "Alexa Licht an" oder aber "Alexa dimmen an"

Es muss doch möglich sein in Fhem 2 Schalter an zu legen die mir die Schaltbefehle unabhängig voneinader zur Steckdose senden.
Dabei kann es dem Schaltern egal sein welchen Zustand die Steckdose gerade hat.

Meinetwegen 2 weitere dummy schalter die die jeweilige sequenz enthält und an den richtigen schalter in fhem sendet.

Nur wie löse ich das?
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Beta-User

Mit Alexa und Sprachsteuerung kenne ich mich nicht aus, habe aber den Eindruck, dass Du eventuell zu kompliziert denkst.

Braucht es denn ein zwischengeschaltetes device (dummy, Schalter oder was auch immer mit "define" festgelegt wird)?

Es sollte doch gehen zu sagen: Wen Alexa "Licht an" versteht, führe Anweisung1 aus (also: set Deckenlampe on;; sleep 0.2;; set Deckenlampe off

bzw. ein Perl-Äquivalent. Oder eben "set Deckenlampe on", wie die Device-Struktur aktuell ist.

Oder wie löst Alexa irgendeine andere Aktion in FHEM aus?

Ratlose Grüße, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

coolheizer

Habe die Lösung endlich gefunden:

Den Schalter für die Steckdose spreche ich mit 2 dummys an mit den jeweiligen befehlen, und schwups es funktioniert....

define Deckenlampe IT 11011011111110011111010110 0 1110
attr Deckenlampe IODev CUL
attr Deckenlampe room IT



define Deckenlampe_an dummy
attr Deckenlampe_an room IT
attr Deckenlampe_an webCmd on:off
define Deckenlampeon_Dimmer_for0.2sec notify Deckenlampe_an:on set Deckenlampe on;;sleep 0.2;;set Deckenlampe off


define Deckenlampe_Dimmer dummy
attr Deckenlampe_Dimmer room IT
attr Deckenlampe_Dimmer webCmd on:off
define Deckenlampeon_Dimmer_for5sec notify Deckenlampe_Dimmer:on set Deckenlampe on;;sleep 5;;set Deckenlampe off


und schon rennt die Kiste.
Mal schauen ob ich die Schalter der Dummys noch etwas modifiziert bekomme, aus hat ja keine Funktion,


Für Alexa wird die HA Bridge benötigt, Sie erkennt dort angelegte/erlernte "Geräte"
Die Bridge sendet dann einen Befehl an Fhem http://191.168.178.34:8088/fhem?cmd=set%20Deckenlampe_an%20on&fwcsrf=xxxxxx
so sieht zb. der befehl aus der gesendet wird bei dem Sprachbefehl "Alexa Licht an" wobei die xxxxxx mit dem eigenen Passwort für das Token ersetzt werden muss.

FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Beta-User

Schön, dass es jetzt geklappt hat.

Dummy ist evtl. nicht ganz optimal, habe aber im Moment auch nichts besseres anzubieten, den Alexa-Sende-Code umzubasteln ginge zwar, ist aber mühsam.

Du kannst aber evtl. mit einem Dummy auskommen
attr Deckenlampe_an webCmd on:dimm:off
und dann das 2. notify eben auf "dimm" legen.

Erweitert: Die beiden notify zusammenlegen und $EVENT auswerten (dann müßtest Du aber ein tempräres "at" verwenden statt "sleep" bzw. da, wo es geht "on-for-timer"). Das könnte dann auch gleich "off" übernehmen (wie auch immer das Licht von FHEM aus konkret auszuschalten ist).

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

coolheizer

Das wird mir jetzt zu hoch, ich bin Anfänger und beschäftige mich damit erst ein paar tage.

Ohne konkretes Beispiel wird das bei mir nix.

Bin froh das es jetzt endlich läuft, wäre schön wenn es besser ginge, aber letztendlich bin ich mit dem Ergebniss zufrieden.

Gruß
Heizer
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.