FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: coolheizer am 22 Juni 2017, 20:42:02

Titel: 2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 22 Juni 2017, 20:42:02
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


Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 22 Juni 2017, 22:32:04
Die .* sollten nicht notwendig sein, oder. Ansonsten ist regex 1 auch erfüllt, wenn reges 2 triggert...
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 22 Juni 2017, 22:45:57
Die * habe ich jetzt raus genommen.

Wie kann ich das ganze nun ändern so das ich das gewünschte Ergebniss erhalte?
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 22 Juni 2017, 22:54:34
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 22 Juni 2017, 23:43:46
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 23 Juni 2017, 08:26:07
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 23 Juni 2017, 10:34:34
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 23 Juni 2017, 10:51:46
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 23 Juni 2017, 11:51:22
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?
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 23 Juni 2017, 11:58:26
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 23 Juni 2017, 12:20:30
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?
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 23 Juni 2017, 12:31:30
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 23 Juni 2017, 12:58:31
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.

Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 23 Juni 2017, 13:12:25
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 23 Juni 2017, 13:31:21
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
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 23 Juni 2017, 13:47:45
Da habe ich Verständnis für ;) , kämpfe auch immer mal wieder mit irgendwas rum, was nicht so will wie gedacht...

Das 2. Notify würde mit dem webCmd aus dem letzten Post hoffentlich so funktionieren:
define Deckenlampeon_Dimmer_for5sec notify Deckenlampe_an:dimm set Deckenlampe on;;sleep 5;;set Deckenlampe off

Damit wäre schon mal der 2. Dummy überflüssig. Den Rest kannst Du Dir ja bei Gelegenheit mal ansehen (perl-if bzw. elsif, einige wenige Beispiele hat es in der Commandref).

Gruß, Beta-User
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: coolheizer am 23 Juni 2017, 14:12:18
Verstehe wiedermal nur Bahnhof  :-[

define Deckenlampeon_Dimmer_for5sec notify Deckenlampe_an:dimm set Deckenlampe on;;sleep 5;;set Deckenlampe off

Wo soll das hin?

Sehe dort den dimm befehl, wie aber wird dieser ausgelöst? wenn ich nur noch 1 nen Dummy habe?

Übrigens benötige ich für die Bridge Schalter, die Bridge gibt lediglich den Befehl an Fhem weiter "Schalter von device xyz an oder aus" keine weiteren sachen/ Befehle Abfragen oder sonst etwas werden übergeben, den Rest macht einzig und allein Fhem.

Gruß
Heizer
Titel: Antw:2 unterschiedliche Timer auf dem gleichen Aktor
Beitrag von: Beta-User am 23 Juni 2017, 14:29:22
Das sollte der neue Code für Dein 2. Notify sein.

Dabei bin ich davon ausgegangen, dass Alexa auch ein
http://191.168.178.34:8088/fhem?cmd=set%20Deckenlampe_an%20dimm&fwcsrf=xxxxxxsenden kann.
Aber wie gesagt: Mit Alexa kenne ich mich nicht aus, bin aber ziemlich sicher, dass Alexa nicht nur an und aus kennt... Es muß halt entsprechend konfiguriert werden.

Hoffe, das ist jetzt etwas klarer.

Ansonsten empfehle ich zur Frage, ob es erforderlich ist, physische Devices durch mehrere logische Devices irgendwie in Kette zu repräsentieren noch: https://forum.fhem.de/index.php/topic,68310.0.html. Ist zwar vermutlich schwierig zu lesen, uU. aber aufschlußreich.

Gruß, Beta-User