98_MSwitch - Support

Begonnen von Byte09, 25 März 2018, 12:19:58

Vorheriges Thema - Nächstes Thema

Torsten_MG

Kurze Frage nochmal dazu:

Zitat von: Torsten_MG am 25 Mai 2018, 15:49:18

...
Ich kann über meine Tablet UI die 2 Zeiten (von/bis) einstellen. Diese 2 Zeiten werden im Dummy Flur_Lampe_Dummy in den Readings Licht_an & Licht_aus abgelegt. Wie kann ich das einbinden?

Gruß Torsten
...

Zitat von: Byte09 am 26 Mai 2018, 06:29:41

geht in dieser version leider nicht so einfach , müsste dann über freecmd gemacht werden. Ich werde für die nächste version( noch am WE ) eine jkleine änderung machen , sa dass er in den conditions eine solche syntax erkennt :

[[dummy1:state]-[dummy2:state]]

gruss Byte

Mein Dummy heißt Flur_Lampe_Dummy
Reading für Zeitpunkt Licht ein Licht_an
Reading für Zeitpunkt Licht aus Licht_aus

Muß ich dann bei on condition statt [18:00-6:00] folgendes eintragen:

[[Flur_Lampe_Dummy:Licht_an]-[Flur_Lampe_Dummy:Licht_aus]]

Keine Zeit zum Testen, darum die kurze Frage.

Byte09

Ja , so sollte es gehen. Aber bitte darauf achten , dass die Zeit in den Dummys such dieses Format hh:mm haben.


Der freeze mit den nicht mehr aktualisierenden events sollte nicht mehr passieren .... eigentlich.

Gruss byte09

Gesendet von meinem SM-G900F mit Tapatalk


Byte09

#197
Ich habe die Version V1.5 eben in das GIT geladen , sie ist somit über das Update verfügbar .
Das Wiki wurde entsprechend angepasst.

Die Vorgängerversion ist im Anhang des ersten Beitrages zu finden.

Gruss Byte09

PS: Uber die neuen Attribute und Schaltmöglichkeiten ist relativ einfach eine komplexe Anwesenheitssimulation zu realisieren.

Byte09

#198
ATTR Safemode hinzugefügt.

Da es mit einem MSwitch Device durchaus möglich ist ... ist mir selber schon mehr als einmal passiert .... , bei entsprechender Konfiguration, das Device und somit Fhem in eine Endlosschleife zu schicken , die nur noch durch einen Neustart zu beenden ist - insbesondere daher, das sich ein MSwitch device selber togglen kann - habe ich ab sofort das Attribut 'MSwitch_Safemode (0,1)' eingeführt .

Bei aktiviertem Attribut (1) beendet das Device den Vorgang bei Verdacht auf eine Endlosschleife.
In diesem Fall erfolgt ein Logeintrag
2018.05.31 10:38:43 0: Das Device Aborttest wurde automatisch deaktiviert ( Safemode )
und das Device wird automatisch auf ATTR disable gesetzt. Meim nächsten Aufruf des Devices erfolgt ein Hinweis in der Webansicht .

Vor dem deaktivieren des Devices wird ein letztes Event generiert, auf das reagiert werden kann :
2018-05-31 09:39:21 MSwitch dummytest Safemode: on

Bei Neuanlage eines (komplizierten) Devices ist die Aktivierung dieses Attributes somit durchaus empfehlenswert.

Sollte die Erkennung einer Schleife zu eng gesteckt sein , bitte kurze Info, dann erweitere ich das etwas.

gruss Byte09



Torsten_MG

#199
habe gerade update all durchgeführt und diese Meldung bekommen

2018.05.31 20:43:22 1 : UPD FHEM/98_MSwitch.pm
2018.05.31 20:43:22 1 : open ./FHEM/98_MSwitch.pm failed: Permission denied, trying to restore the previous version and aborting the update


Habe auch schon das Problem gehabt, wenn ich über FileZilla das Modul einladen möchte, dass ich das alte erstmal vom RPi löschen muß bevor ich das neue speichern kann

EDIT:

habe jetzt 98_mswitch.pm über FileZilla gelöscht, dann ging update

Torsten_MG

Irgendwie ist da noch der Wurm drin.

Gestern hat alles wunderbar funktioniert. Als wir eben nach Hause kamen, hat der Bewegungsmelder nicht "reagier" also Licht ging nicht an. Im On Condition steht [$EVTPART1] eq "Flur_Taster2_Motion" AND [18:00-06:00] als ich es auf [$EVTPART1] eq "Flur_Taster2_Motion" geändert habe, ging der Bewegungsmelder, als ich die Zeit wieder eingefügt habe nichtmehr. Nun habe ich noch das update gemacht, jetzt geht der MSwitch komplett nicht mehr  :o

Im reading steht jetzt auch was ganz anderes, siehe Foto

Byte09

#201
Zitat von: Torsten_MG am 31 Mai 2018, 20:57:49
Irgendwie ist da noch der Wurm drin.

Gestern hat alles wunderbar funktioniert. Als wir eben nach Hause kamen, hat der Bewegungsmelder nicht "reagier" also Licht ging nicht an. Im On Condition steht [$EVTPART1] eq "Flur_Taster2_Motion" AND [18:00-06:00] als ich es auf [$EVTPART1] eq "Flur_Taster2_Motion" geändert habe, ging der Bewegungsmelder, als ich die Zeit wieder eingefügt habe nichtmehr. Nun habe ich noch das update gemacht, jetzt geht der MSwitch komplett nicht mehr  :o

Im reading steht jetzt auch was ganz anderes, siehe Foto

zu deinem ersten post : das ist/war ein rechteproblem - hast da ja wohl behoben

zum zweiten: ich habe die gesamte funktion ( kombi aus zeit und readingbedingung ) eben geprüft und kann keinen Fehler feststellen.

kannst du mir bitte den configfile schicken ?

EDIT on:
Falls du Fhem nach dem löschen der 98_Mswitch.pm neu gestartet hast , ohne das Modul , kann es sein das du die Config des MSwitch-Devices 'zerstört' hast . Diese ist dann zwar noch vorhanden und wird angezeigt , aber nicht mehr richtig eingelesen. Mit einem Klick auf 'modify device' kannst du das beheben. Ich spiele heute Nachmitag eine Version ein , die dieses in einem solchen Fall automatisch macht ( auch nach einspielen eine Configfiles - da gab es ein ähnliches Problem . Konkret: in diesen Fällen wurde das Internal 'NOTIFYDEV' nicht neu Belegt und somit nicht Korrekt getriggert)

ich weiss aber nicht ob dieses das Problem ist - nur ein Verdacht
EDIT off

Das Event , das im Reading steht, ist das letzte Event , was die Trigger-Condition passiert hat .

Gruss Byte09

Torsten_MG

Ok, nach modify Device funktioniert es wieder, auch der Bewegungsmelder. Nur schaltet er jetzt das Licht 2x

#V V1.51
#S .Device_Affected -> Flur_Lampe-AbsCmd1,Flur_Lampe-AbsCmd2
#S .Device_Affected_Details -> Flur_Lampe-AbsCmd1,MSwitchtoggle,no_action,on/off,,delay1,delay1,000000,000000,[$EVENT]~eq~"state.~Flur_Taster1_02~Short"~OR~[$EVENT]~eq~"state.~Flur_Taster1_01~Short"~OR~[$EVTPART1]~eq~"Flur_Taster2_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_02",,0,0|Flur_Lampe-AbsCmd2,on-for-timer,no_action,30,,delay1,delay1,000000,000000,[$EVTPART1]~eq~"Flur_Taster2_Motion"~AND~[11.00-06.00],,0,0
#S .Device_Events -> no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> Flur_Taster1,Flur_Taster2_01,Flur_Taster2_02,Flur_Taster2_Motion
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition ->
#S .Trigger_off -> no_trigger
#S .Trigger_on -> *
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd -> set Flur_Lampe on-for-timer 30
#S Trigger_device -> all_events
#S Trigger_log -> off
#S last_event -> Flur_Taster2_Motion:state:noMotion
#S state -> on
#A disable -> 0
#A MSwitch_Expert -> 1
#A MSwitch_Delete_Delays -> 1
#A room -> Flur->Licht,MSwitch
#A MSwitch_Help -> 1
#A MSwitch_Extensions -> 1
#A MSwitch_Debug -> 1
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Mode -> Full
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul


Byte09

Bin in 2 Std wieder zuhause ... schaue es mir dann an .

Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


Torsten_MG

Ok, bin in 30min zur Arbeit. Bin also erst ab morgen wieder erreichbar

Byte09

#205
Zitat von: Torsten_MG am 01 Juni 2018, 11:58:15
Ok, bin in 30min zur Arbeit. Bin also erst ab morgen wieder erreichbar

Hi Torsten,

ich habe mich jetzt recht lange damit beschäftigt . Entgegen meiner bisherigen Aussage ist es über ein Device aus verschiedenen Gründen nicht lösbar ( zumindest nicht ohne einen weiteren Dummy ):
1. die Devices liefern teilweise gleiche events, was eine trennung in einem MSwitch echt schwierig macht
2. wenn es über ein MSwitch gelöst wird kann das MSwitch nicht prüfen , wodurch das Licht angeschaltet wurde  ( manuell ? ) und somit nicht entscheiden, ob der bewegungsmelder nun aktiv sein soll oder nicht .

Also Fakt ist - es werden 2 Devices benötigt.

Die angehängten Configfiles setzen V1.52 und folgende Devices als vorhanden voraus:
Flur_Taster1
Flur_Taster2_01
Flur_Taster2_Motion
Flur_Lampe

und sollten wie folgt heissen :

Lampenschalter (MSwitch für taster)
Bewegungschalter (MSwitch für Bewegungsmelder)
bei anderer Namensgebung muss entsprechend anders konfiguriert werden.


das erste Device: ( hier: Lampenschalter)
mit diesem reagierst du nur auf die Taster. Um eine Kontrollmöglichkeit zu haben , ob das Licht durch die Taster angeschaltet wurde betreibst du dieses MSwitch im Togglemode. Somit kann durch das zweite Device später der Zustand dieses Devices abgefragt werden und somit der Bewegungsmelder aktiviert werden / oder eben nicht.
Getriggert werden muss in diesem Device GLOBAL, da du auf mehrere Geräte ( Taster ) reagieren willst.
Der Togglemode des MSwitcdevices bewirkt, das sich bei jedem getriggerten Event der Zustand des MSwitches toggelt und alle eingetragenen Geräte ( Lampe ) mit in den Zustand des MSwitches schalten.
Konfiguration im Anhang 1
File:
#V V1.52
#S .Device_Affected -> Flur_Lampe-AbsCmd1
#S .Device_Affected_Details -> Flur_Lampe-AbsCmd1,on,off,,,delay1,delay1,000000,000000,,,0,0
#S .Device_Events -> *:*:Short*|no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> Flur_Taster1,Flur_Taster2_01
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition ->
#S .Trigger_off -> no_trigger
#S .Trigger_on -> *:*:Short*
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd -> set Flur_Lampe off
#S Trigger_device -> all_events
#S Trigger_log -> off
#S last_event -> trigger: Short_12
#S state -> off
#A room -> Flur->Licht,MSwitch
#A MSwitch_Extensions -> 1
#A MSwitch_Mode -> Toggle
#A MSwitch_Debug -> 1
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Delete_Delays -> 1
#A disable -> 0
#A MSwitch_Help -> 1
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Expert -> 1
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul



das zweite Device: ( Bewegungschalter )
dieses Devive betreibst du im Notifymode und es Triggert nur auf den Bewegungsmeder , und schaltet die Lampe für 30 sekunden an , aber nur dann , wenn das erste Device auf 'off' steht und die Lampen somit ebenfalls aus sind . Als weitere Bedingung schaltet es nur zwischen xx und xx Uhr.
Steht das erste Device auf an , d.H die Lampen wurden manuell angeschaltet , reagiert das zweite Device gar nicht .
Konfiguration im Anhang 2.
File:
#V V1.52
#S .Device_Affected -> Flur_Lampe-AbsCmd1
#S .Device_Affected_Details -> Flur_Lampe-AbsCmd1,on-for-timer,no_action,5,,delay1,delay1,000000,000000,,,0,0
#S .Device_Events -> motion:on|no_trigger
#S .First_init -> done
#S .Trigger_Whitelist -> undef
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> motion:on
#S .Trigger_condition -> [Lampenschalter.state]~eq~"off"~AND~[16.00-22.00]
#S .Trigger_off -> no_trigger
#S .Trigger_on -> no_trigger
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd -> set Flur_Lampe on-for-timer 5
#S Trigger_device -> Flur_Taster2_Motion
#S Trigger_log -> off
#S last_event -> trigger:Short_45
#S state -> active
#A MSwitch_Extensions -> 0
#A MSwitch_Mode -> Notify
#A MSwitch_Debug -> 0
#A MSwitch_Lock_Quickedit -> 1
#A room -> Flur->Licht
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Expert -> 0
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
#A MSwitch_Include_Webcmds -> 0
#A MSwitch_Delete_Delays -> 1
#A MSwitch_Help -> 0
#A MSwitch_Include_Devicecmds -> 1


Bitte auf die Abhängigkeiten - insbesondere in der Namensgebung - achten und anpassen.

Gruss Byte

Torsten_MG

Wenn ich jetzt nichts übersehen habe, habe ich es mit einem MSwitch und einem Dummy hinbekommen
Warte aber jetzt noch heute Abend ab, wenn der Timer greift:

#V V1.51
#S .Device_Affected -> Flur_Lampe-AbsCmd1,Flur_Lampe-AbsCmd2,Flur_Lampe_Dummy-AbsCmd1
#S .Device_Affected_Details -> Flur_Lampe-AbsCmd1,MSwitchtoggle,no_action,on/off,,delay1,delay1,000000,000000,[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_02"~OR~[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_02",,0,0|Flur_Lampe-AbsCmd2,on-for-timer,no_action,30,,delay1,delay1,000000,000000,[$EVTPART1]~eq~"Flur_Taster2_Motion"~AND~[$EVTPART2]~eq~"trigger_cnt"~AND~[Flur_Lampe_Dummy.off]~AND~[18.00-06.00],,0,0|Flur_Lampe_Dummy-AbsCmd1,MSwitchtoggle,no_action,on/off,,delay1,delay1,000000,000000,[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_02"~OR~[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_02",,0,0
#S .Device_Events -> *state*|no_trigger|*
#S .First_init -> done
#S .Trigger_Whitelist -> Flur_Taster1,Flur_Taster2_01,Flur_Taster2_02,Flur_Taster2_Motion
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition ->
#S .Trigger_off -> no_trigger
#S .Trigger_on -> *
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd -> set Flur_Lampe on-for-timer 30
#S Trigger_device -> all_events
#S Trigger_log -> off
#S last_event -> Flur_Taster2_Motion:trigger_cnt:78
#S state -> on
#A disable -> 0
#A MSwitch_Expert -> 1
#A MSwitch_Delete_Delays -> 1
#A room -> Flur->Licht,MSwitch
#A MSwitch_Help -> 1
#A MSwitch_Extensions -> 1
#A MSwitch_Debug -> 1
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Mode -> Full
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul

Byte09

#207
Zitat von: Torsten_MG am 02 Juni 2018, 11:13:37
Wenn ich jetzt nichts übersehen habe, habe ich es mit einem MSwitch und einem Dummy hinbekommen
Warte aber jetzt noch heute Abend ab, wenn der Timer greift:

#V V1.51
#S .Device_Affected -> Flur_Lampe-AbsCmd1,Flur_Lampe-AbsCmd2,Flur_Lampe_Dummy-AbsCmd1
#S .Device_Affected_Details -> Flur_Lampe-AbsCmd1,MSwitchtoggle,no_action,on/off,,delay1,delay1,000000,000000,[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_02"~OR~[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_02",,0,0|Flur_Lampe-AbsCmd2,on-for-timer,no_action,30,,delay1,delay1,000000,000000,[$EVTPART1]~eq~"Flur_Taster2_Motion"~AND~[$EVTPART2]~eq~"trigger_cnt"~AND~[Flur_Lampe_Dummy.off]~AND~[18.00-06.00],,0,0|Flur_Lampe_Dummy-AbsCmd1,MSwitchtoggle,no_action,on/off,,delay1,delay1,000000,000000,[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_02"~OR~[$EVENT]~eq~"Flur_Taster1.state.Flur_Taster1_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_01"~OR~[$EVTPART1]~eq~"Flur_Taster2_02",,0,0
#S .Device_Events -> *state*|no_trigger|*
#S .First_init -> done
#S .Trigger_Whitelist -> Flur_Taster1,Flur_Taster2_01,Flur_Taster2_02,Flur_Taster2_Motion
#S .Trigger_cmd_off -> no_trigger
#S .Trigger_cmd_on -> no_trigger
#S .Trigger_condition ->
#S .Trigger_off -> no_trigger
#S .Trigger_on -> *
#S .Trigger_time ->
#S .V_Check -> V 0.3
#S Exec_cmd -> set Flur_Lampe on-for-timer 30
#S Trigger_device -> all_events
#S Trigger_log -> off
#S last_event -> Flur_Taster2_Motion:trigger_cnt:78
#S state -> on
#A disable -> 0
#A MSwitch_Expert -> 1
#A MSwitch_Delete_Delays -> 1
#A room -> Flur->Licht,MSwitch
#A MSwitch_Help -> 1
#A MSwitch_Extensions -> 1
#A MSwitch_Debug -> 1
#A MSwitch_Lock_Quickedit -> 1
#A MSwitch_Mode -> Full
#A MSwitch_Include_Devicecmds -> 1
#A MSwitch_Inforoom -> MSwitch
#A MSwitch_Include_MSwitchcmds -> 0
#A MSwitch_Include_Webcmds -> 1
#A MSwitch_Ignore_Types -> notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul


jetzt nur mal schnell drüber geflogen . Diese condition :
[$EVENT] eq "Flur_Taster1:state:Flur_Taster1_02" OR [$EVENT] eq "Flur_Taster1:state:Flur_Taster1_01" OR [$EVTPART1] eq "Flur_Taster2_01" OR [$EVTPART1] eq "Flur_Taster2_02"

reagiert nur daher überhaupt, da diese Teile greifen:

OR [$EVENT] eq "OR [$EVTPART1] eq "Flur_Taster2_01" OR [$EVTPART1] eq "Flur_Taster2_02"

die zwei ausdrücke davor werden nie greifen , da es sich bei deiner abfrage 'Flur_Taster1:state:Flur_Taster1_02'  nicht um events handeln, die jemals eintreten.

Ich sehe zwar wie du es dir gedacht hast , hat aber - selbst wenn es funktioniert - den nachteil , das der bewegungsmelder nicht mehr "nach"schaltet , wenn er einmal angeschaltet hat , sprich : das licht muss erst ausgehen und erst dann kann der bewegungsmelder es wieder anschalten. warum machst du es nicht wie oben von mir beschrieben ,  so schaltet der bewegungsmelder den on-for-timer immer wieder neu , solange bewegung erkannt wird und das licht geht nicht aus, solange sich jemand im flur? aufhält.

gruss Byte09

Torsten_MG

Alle Events kommen so wie eingetragen, mache später mal Screenshots bin gerade unterwegs

Byte09

Zitat von: Torsten_MG am 02 Juni 2018, 12:37:30
Alle Events kommen so wie eingetragen, mache später mal Screenshots bin gerade unterwegs

hm, ok  ...... muss mir glaube ich unbedingt mal so einen taster / bewegungsmelder kaufen !
kannst du mir mal die bezeichnung von den teilen geben ?

gruss Byte09