Blinken - Impulsgenerator mit variablem Tastgrad: Unterschied zwischen den Versionen

Aus FHEMWiki
(Änderung 32028 von Byte09 (Diskussion) rückgängig gemacht.)
Markierung: Rückgängigmachung
 
(18 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 5: Zeile 5:
[[Datei:Importfenster.png|mini|Import nach FHEM Schritt 2]]
[[Datei:Importfenster.png|mini|Import nach FHEM Schritt 2]]


defmod Pulse MSwitch    # MSwitch_Self pulsedevice<br>
<pre>defmod Pulse MSwitch    # MSwitch_Self pulsedevice<br>
attr Pulse MSwitch_Debug 0<br>
attr Pulse MSwitch_Debug 0<br>
attr Pulse MSwitch_Delete_Delays 1<br>
attr Pulse MSwitch_Delete_Delays 1<br>
Zeile 25: Zeile 25:
attr Pulse webCmd on:off:onpulse:offpulse<br>
attr Pulse webCmd on:off:onpulse:offpulse<br>
attr Pulse webCmdLabel ::ontime:offtime<br>
attr Pulse webCmdLabel ::ontime:offtime<br>
 
</pre>
defmod pulsedevice MSwitch  # no_device<br>
<pre>defmod pulsedevice MSwitch  # no_device<br>
attr pulsedevice MSwitch_Debug 0<br>
attr pulsedevice MSwitch_Debug 0<br>
attr pulsedevice MSwitch_Eventhistory 0<br>
attr pulsedevice MSwitch_Eventhistory 0<br>
Zeile 35: Zeile 35:
attr pulsedevice room 07_Pulse<br>
attr pulsedevice room 07_Pulse<br>
attr pulsedevice setList on off<br>
attr pulsedevice setList on off<br>
 
</pre>
setstate Pulse off<br>
<pre>setstate Pulse off<br>
setstate Pulse 2019-11-03 14:17:18 .Device_Affected MSwitch_Self-AbsCmd1,MSwitch_Self-AbsCmd2,pulsedevice-AbsCmd1,pulsedevice-AbsCmd2<br>
setstate Pulse 2019-11-03 14:17:18 .Device_Affected MSwitch_Self-AbsCmd1,MSwitch_Self-AbsCmd2,pulsedevice-AbsCmd1,pulsedevice-AbsCmd2<br>
setstate Pulse 2019-11-03 14:21:52 .Device_Affected_Details MSwitch_Self-AbsCmd1#[NF]exec_cmd_1#[NF]no_action#[NF]ID#[sp]1#[NF]#[NF]delay1#[NF]delay1#[NF][Pulse#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]3#[ND]MSwitch_Self-AbsCmd2#[NF]exec_cmd_1#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF][Pulse#[dp]offpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]1#[NF]#[NF]0#[NF]0#[NF]4#[ND]pulsedevice-AbsCmd1#[NF]on#[NF]off#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]pulsedevice-AbsCmd2#[NF]off#[NF]no_action#[NF]#[NF]#[NF]delay2#[NF]delay1#[NF][Pulse#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]2<br>
setstate Pulse 2019-11-03 14:21:52 .Device_Affected_Details MSwitch_Self-AbsCmd1#[NF]exec_cmd_1#[NF]no_action#[NF]ID#[sp]1#[NF]#[NF]delay1#[NF]delay1#[NF][Pulse#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]3#[ND]MSwitch_Self-AbsCmd2#[NF]exec_cmd_1#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF][Pulse#[dp]offpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]1#[NF]#[NF]0#[NF]0#[NF]4#[ND]pulsedevice-AbsCmd1#[NF]on#[NF]off#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]pulsedevice-AbsCmd2#[NF]off#[NF]no_action#[NF]#[NF]#[NF]delay2#[NF]delay1#[NF][Pulse#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]2<br>
Zeile 54: Zeile 54:
setstate Pulse 2019-11-03 14:19:18 onpulse 00:00:02<br>
setstate Pulse 2019-11-03 14:19:18 onpulse 00:00:02<br>
setstate Pulse 2019-11-03 14:21:24 state off<br>
setstate Pulse 2019-11-03 14:21:24 state off<br>
 
</pre>
setstate pulsedevice on<br>
<pre>setstate pulsedevice on<br>
setstate pulsedevice 2019-11-03 12:32:30 .Device_Affected no_device<br>
setstate pulsedevice 2019-11-03 12:32:30 .Device_Affected no_device<br>
setstate pulsedevice 2019-11-03 12:32:30 .Device_Events no_trigger<br>
setstate pulsedevice 2019-11-03 12:32:30 .Device_Events no_trigger<br>
Zeile 65: Zeile 65:
setstate pulsedevice 2019-11-03 12:32:30 .V_Check V2.00<br>
setstate pulsedevice 2019-11-03 12:32:30 .V_Check V2.00<br>
setstate pulsedevice 2019-11-03 12:32:30 Trigger_log off<br>
setstate pulsedevice 2019-11-03 12:32:30 Trigger_log off<br>
</pre>


== Inbetriebnahme ==
== Inbetriebnahme ==
Der Testraum 07_Puls enthält zwei konfigurierte MSwitch-Geräte, die die beabsichtigte Funktion zusammen bewirken. Pulse enthält die Logik, Pulsedevice dient der Statusausgabe des Generators. Als einziges muss in Pulse eine Auslösezeit in die obere Zeile (switch MSwitch on + execute 'cmd1' at :) im Format hh:mm:ss geschrieben werden, um die Impulsfolge zu starten.
Der Testraum 07_Puls enthält zwei konfigurierte MSwitch-Geräte, die die beabsichtigte Funktion zusammen bewirken. Pulse enthält die Logik, Pulsedevice dient der Statusausgabe des Generators. Um die Impulsfolge durch Selbsttriggerung zu starten, genügt es Pulse per Webinterface zu deaktivieren und zu aktivieren.  


[[Datei:Pulse-Fenster-oben.png|mini|Pulse-Konfiguration 1. Teil]]
[[Datei:Pulse-Fenster-oben.png|mini|Pulse-Konfiguration 1. Teil]]
Zeile 78: Zeile 79:


== Funktionsbeschreibung ==
== Funktionsbeschreibung ==
[[Datei:Kausakkette1.png|Trigger]]<br>
1. Auslösung des MSwitch-Gerätes 'Pulse' durch Aus- und Wiedereinschalten,<br>
2. Aktivieren des 1. Befehlszweiges 'cmd1' des MSwitch-Gerätes 'Pulse',
[[Datei:Kausakkette2.png|Geräteauswahl]]<br>
3. Auswahl betroffener Geräte:  'MSwitch_Self -> pulse' und 'pulsedevice', Erzeugung je eines 'device action'-Rahmens
 
[[Datei:Kausalkette3.png|Setzen der positiven Flanke des Rechtecksignals ]]<br>
4. unverzögertes Setzen des Status von 'pulsedevice' auf 'on', positive Flanke des Rechtecksignals
[[Datei:Kausalkette4.png|Negative Flanke des Ausgangssignals]]<br>
5. um die Länge von 'onpulse' verzögertes Rücksetzen des Status von 'pulsdevice', negative Flanke des Rechtecksignals
[[Datei:Kausalkette5.png|Pausenzeit]]<br>
6. um die Länge von 'onpulse' verzögertes Ausführen von 'Set exec_cmd_1', Verweis auf ID1, damit um 'offpulse' verzögertes erneutes Abarbeiten des Zweiges 'cmd1'.


* Auslösung des MSwitch-Gerätes 'Pulse' beim Erreichen der angegebenen Triggertime,
[[Datei:Kausalkette6.png|x]]<br>
* Setzen des Status des MSwitch-Gerätes 'Pulse' auf 'on',
5. Die Rahmen eins bis drei werden zeitgleich sofort abgearbeitet, der vierte Rahmen wird erst nach 'onpuls' des dritten gestartet.
* Aktivieren des 1. Befehlszweiges 'cmd1' des MSwitch-Gerätes 'Pulse',
* Ausführen von 'cmd1' des MSwitch-Gerätes 'Pulse': Setzen des Status des MSwitch-Gerätes 'Pulsedevice' auf on,
* Ausführen von 'cmd1' des MSwitch-Gerätes 'Pulse': Setzen des Status des MSwitch-Gerätes 'Pulsedevice' mit einer Zeitverzögerung der Länge 'onpulse':,
* Rücksetzen des Status des MSwitch-Gerätes 'Pulsedevice' auf off,
* erster kompletter Durchlauf abgeschlossen,
* Reaktivierung durch Selbsttriggerung,
* Ausführen von 'cmd1' des MSwitch-Gerätes 'Pulse': Set exec_cmd_1 ID1,
* Der Befehl führt dazu dass, der erste Zweig 'cmd1' exklusiv an der Stelle ID1 ausgeführt wird,


== Anpassung an eigene Anforderungen ==
== Anpassung an eigene Anforderungen ==


Um eigene Geräte für die Auslösung benutzen zu können, muss das Attribut 'Switch_Ignore_Types' von 'TYPE=MSwitch' auf 'notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul' geändert werden.  
Um eigene Geräte für die Ausgabe benutzen zu können, muss:
 
<code>Attribut Switch_Ignore_Types = TYPE=MSwitch</code>  auf
 
<code>Attribut Switch_Ignore_Types = notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul</code>
 
geändert werden.
 
[[Datei:MSwitch Ignore Types geaendert.png|MSwitch_Ignore_Types geändert|938px]]
 
Um den Verlust von Konfigurationsdaten zu vermeiden, lässt man das quickedit verriegelt und fügt eigene Zielgeräte per 'edit list' hinzu.
[[Datei:Eigenes device.png|938px|Eigenes Device]]
 
Die Bestätigung mit 'modify Devices' erzeugt pro neuem Gerät einen 'device action'-Rahmen, in den die Konfiguration von 'pulsedevice' übernommen werden kann. 'Modify action' übernimmt.
 
[[Datei:Deviceaction uebernehmen.png|938px|Deviceaction übernehmen]]
 
Der zweite notwendige Action-Rahmen für das eigene Device wird per 'add action ..' erzeugt.
 
Das Attribut 'setlist' erlaubt die leichte Anpassung der auswählbaren Impuls- bzw. Pausenzeiten. Hier können auch Dezimalbrüche wie 0,5 angegeben werden.
Das Attribut 'setlist' erlaubt die leichte Anpassung der auswählbaren Impuls- bzw. Pausenzeiten. Hier können auch Dezimalbrüche wie 0,5 angegeben werden.
[[Datei:Bei der Arbeit.png|bei der Arbeit]]

Aktuelle Version vom 19. Dezember 2019, 19:03 Uhr

Blinken - Impulsgenerator mit variablem Tastgrad

Import

Die folgende Definition kann als Testraum in die eigene FHEM-Installation ohne Seiteneffekte importiert werden, indem man auf das Pluszeichen oben links im Webinterface klickt. Falls dieses unsichtbar sein sollte, kann es z.B über den Style f18 sichtbar gemacht werden.

Import nach FHEM Schritt 1
Import nach FHEM Schritt 2
defmod Pulse MSwitch     # MSwitch_Self pulsedevice<br>
attr Pulse MSwitch_Debug 0<br>
attr Pulse MSwitch_Delete_Delays 1<br>
attr Pulse MSwitch_Eventhistory 0<br>
attr Pulse MSwitch_Expert 1<br>
attr Pulse MSwitch_Extensions 1<br>
attr Pulse MSwitch_Help 1<br>
attr Pulse MSwitch_Ignore_Types "TYPE=MSwitch"<br>
attr Pulse MSwitch_Include_Devicecmds 1<br>
attr Pulse MSwitch_Include_MSwitchcmds 0<br>
attr Pulse MSwitch_Include_Webcmds 0<br>
attr Pulse MSwitch_Inforoom MSwitch<br>
attr Pulse MSwitch_Lock_Quickedit 1<br>
attr Pulse MSwitch_Mode Full<br>
attr Pulse MSwitch_Safemode 1<br>
attr Pulse readingList onpulse offpulse<br>
attr Pulse room 07_Pulse<br>
attr Pulse setList onpulse:00:00:01,00:00:02,00:00:03,00:00:04,00:00:05 offpulse:00:00:01,00:00:02,00:00:03,00:00:04,00:00:05<br>
attr Pulse webCmd on:off:onpulse:offpulse<br>
attr Pulse webCmdLabel ::ontime:offtime<br>
defmod pulsedevice MSwitch  # no_device<br>
attr pulsedevice MSwitch_Debug 0<br>
attr pulsedevice MSwitch_Eventhistory 0<br>
attr pulsedevice MSwitch_Help 0<br>
attr pulsedevice MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul<br>
attr pulsedevice MSwitch_Inforoom MSwitch<br>
attr pulsedevice MSwitch_Mode Dummy<br>
attr pulsedevice room 07_Pulse<br>
attr pulsedevice setList on off<br>
setstate Pulse off<br>
setstate Pulse 2019-11-03 14:17:18 .Device_Affected MSwitch_Self-AbsCmd1,MSwitch_Self-AbsCmd2,pulsedevice-AbsCmd1,pulsedevice-AbsCmd2<br>
setstate Pulse 2019-11-03 14:21:52 .Device_Affected_Details MSwitch_Self-AbsCmd1#[NF]exec_cmd_1#[NF]no_action#[NF]ID#[sp]1#[NF]#[NF]delay1#[NF]delay1#[NF][Pulse#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]3#[ND]MSwitch_Self-AbsCmd2#[NF]exec_cmd_1#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF][Pulse#[dp]offpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]1#[NF]#[NF]0#[NF]0#[NF]4#[ND]pulsedevice-AbsCmd1#[NF]on#[NF]off#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]pulsedevice-AbsCmd2#[NF]off#[NF]no_action#[NF]#[NF]#[NF]delay2#[NF]delay1#[NF][Pulse#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]2<br>
setstate Pulse 2019-11-03 12:31:25 .Device_Events no_trigger<br>
setstate Pulse 2019-11-03 12:31:25 .First_init done<br>
setstate Pulse 2019-11-03 12:31:25 .Trigger_cmd_off no_trigger<br>
setstate Pulse 2019-11-03 12:31:25 .Trigger_cmd_on no_trigger<br>
setstate Pulse 2019-11-03 12:31:25 .Trigger_off no_trigger<br>
setstate Pulse 2019-11-03 12:31:25 .Trigger_on no_trigger<br>
setstate Pulse 2019-11-03 12:31:25 .V_Check V2.00<br>
setstate Pulse 2019-11-03 14:18:43 .sortby show<br>
setstate Pulse 2019-11-03 12:31:25 Trigger_log off<br>
setstate Pulse 2019-11-03 14:21:24 last_activation_by manual<br>
setstate Pulse 2019-11-03 14:21:23 last_cmd 1<br>
setstate Pulse 2019-11-03 14:21:23 last_exec_cmd set Pulse exec_cmd_1 <br>
setstate Pulse 2019-11-03 14:21:05 offpulse 00:00:05<br>
setstate Pulse 2019-11-03 14:19:18 onpulse 00:00:02<br>
setstate Pulse 2019-11-03 14:21:24 state off<br>
setstate pulsedevice on<br>
setstate pulsedevice 2019-11-03 12:32:30 .Device_Affected no_device<br>
setstate pulsedevice 2019-11-03 12:32:30 .Device_Events no_trigger<br>
setstate pulsedevice 2019-11-03 12:32:30 .First_init done<br>
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_cmd_off no_trigger<br>
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_cmd_on no_trigger<br>
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_off no_trigger<br>
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_on no_trigger<br>
setstate pulsedevice 2019-11-03 12:32:30 .V_Check V2.00<br>
setstate pulsedevice 2019-11-03 12:32:30 Trigger_log off<br>

Inbetriebnahme

Der Testraum 07_Puls enthält zwei konfigurierte MSwitch-Geräte, die die beabsichtigte Funktion zusammen bewirken. Pulse enthält die Logik, Pulsedevice dient der Statusausgabe des Generators. Um die Impulsfolge durch Selbsttriggerung zu starten, genügt es Pulse per Webinterface zu deaktivieren und zu aktivieren.

Pulse-Konfiguration 1. Teil
Pulse-Konfiguration 2. Teil
Pulsdevice-Konfiguration

Nach der Auslösung liefert das Pulsdevice eine endlose konfigurierbare Folge von Rechtecksignalen. Pulsdevice im Testraum in Aktion:

Pulsdevice im Testraum in Aktion

Funktionsbeschreibung

Trigger
1. Auslösung des MSwitch-Gerätes 'Pulse' durch Aus- und Wiedereinschalten,
2. Aktivieren des 1. Befehlszweiges 'cmd1' des MSwitch-Gerätes 'Pulse',

Geräteauswahl
3. Auswahl betroffener Geräte: 'MSwitch_Self -> pulse' und 'pulsedevice', Erzeugung je eines 'device action'-Rahmens

Setzen der positiven Flanke des Rechtecksignals
4. unverzögertes Setzen des Status von 'pulsedevice' auf 'on', positive Flanke des Rechtecksignals

Negative Flanke des Ausgangssignals
5. um die Länge von 'onpulse' verzögertes Rücksetzen des Status von 'pulsdevice', negative Flanke des Rechtecksignals

Pausenzeit
6. um die Länge von 'onpulse' verzögertes Ausführen von 'Set exec_cmd_1', Verweis auf ID1, damit um 'offpulse' verzögertes erneutes Abarbeiten des Zweiges 'cmd1'.

x
5. Die Rahmen eins bis drei werden zeitgleich sofort abgearbeitet, der vierte Rahmen wird erst nach 'onpuls' des dritten gestartet.

Anpassung an eigene Anforderungen

Um eigene Geräte für die Ausgabe benutzen zu können, muss:

Attribut Switch_Ignore_Types = TYPE=MSwitch auf

Attribut Switch_Ignore_Types = notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul

geändert werden.

MSwitch_Ignore_Types geändert

Um den Verlust von Konfigurationsdaten zu vermeiden, lässt man das quickedit verriegelt und fügt eigene Zielgeräte per 'edit list' hinzu. Eigenes Device

Die Bestätigung mit 'modify Devices' erzeugt pro neuem Gerät einen 'device action'-Rahmen, in den die Konfiguration von 'pulsedevice' übernommen werden kann. 'Modify action' übernimmt.

Deviceaction übernehmen

Der zweite notwendige Action-Rahmen für das eigene Device wird per 'add action ..' erzeugt.

Das Attribut 'setlist' erlaubt die leichte Anpassung der auswählbaren Impuls- bzw. Pausenzeiten. Hier können auch Dezimalbrüche wie 0,5 angegeben werden.

bei der Arbeit