Schmitt-Trigger - Temperaturabhängiges Schalten: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „= Schmitt-Trigger - Temperaturabhängiges Schalte = == Import == Die folgende Definition kann als Testraum in die eigene FHEM-Installation ohne Seiteneffekte i…“)
 
Zeile 1: Zeile 1:
= Schmitt-Trigger - Temperaturabhängiges Schalte =
= Schmitt-Trigger - Temperaturabhängiges Schalten =
== Import ==
== 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.
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.
Zeile 105: Zeile 105:
setstate tempdummy 2019-11-09 13:48:33 temperature 14<br>
setstate tempdummy 2019-11-09 13:48:33 temperature 14<br>
== Inbetriebnahme ==
== Inbetriebnahme ==
Der Testraum 07_Puls enthält drei konfigurierte MSwitch-Geräte, die die beabsichtigte Funktion zusammen bewirken. Pulse enthält die Logik, Pulsedevice dient der Statusausgabe des Generators und tempdummy der Simulation eines Temperatursensors. Um die Impulsfolge durch Selbsttriggerung zu starten, genügt es Pulse per Webinterface zu deaktivieren und zu aktivieren.  
Der Testraum 07_Puls enthält drei konfigurierte MSwitch-Geräte, die die beabsichtigte Funktion zusammen bewirken. Pulse enthält die Logik, Pulsedevice dient der Statusausgabe des Generators und tempdummy die Simulation eines Temperatursensors. Beim Erreichen der konfigurierbaren Einschaltschwelle startet die Impulsfolge, beim Erreichen der Ausschaltschwelle stoppt sie.  


[[Datei:Sensor Simulation.png|Sensor Simulation]]
[[Datei:Sensor Simulation.png|938px|Sensor Simulation]]
 
Nach der Auslösung liefert das Pulsdevice eine endlose konfigurierbare Folge von Rechtecksignalen. Pulsdevice im Testraum in Aktion:
 
[[Datei:Pulsdevice .png||Pulsdevice im Testraum in Aktion]]


== Funktionsbeschreibung ==
== Funktionsbeschreibung ==
[[Datei:Kausakkette1.png|Trigger]]<br>
Der verwendete Rechteckgenerator ist in einem vorigen Beispiel erklärt.
1. Auslösung des MSwitch-Gerätes 'Pulse' durch Aus- und Wiedereinschalten,<br>
[[Datei:Konfiguration Schmitt-Trigger.png|938px|Konfiguration Schmitt-Trigger]]
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'.
 
[[Datei:Kausalkette6.png|x]]<br>
5. Die Rahmen eins bis drei werden zeitgleich sofort abgearbeitet, der vierte Rahmen wird erst nach 'onpuls' des dritten gestartet.


== Anpassung an eigene Anforderungen ==
== Anpassung an eigene Anforderungen ==
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.
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.
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. 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]]
Tempdummy kann durch einen physischen Sensor ersetzt werden.

Version vom 9. November 2019, 18:52 Uhr

Schmitt-Trigger - Temperaturabhängiges Schalten

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 tempdummy # MSwitch_Self pulsedevice
attr Pulse MSwitch_Comments 1
attr Pulse MSwitch_Debug 1
attr Pulse MSwitch_Delete_Delays 1
attr Pulse MSwitch_Event_Id_Distributor temperature:.*=>cmd1 ID 2
attr Pulse MSwitch_Eventhistory 0
attr Pulse MSwitch_Expert 1
attr Pulse MSwitch_Extensions 1
attr Pulse MSwitch_Help 1
attr Pulse MSwitch_Ignore_Types "TYPE=.*"
attr Pulse MSwitch_Include_Devicecmds 1
attr Pulse MSwitch_Include_MSwitchcmds 0
attr Pulse MSwitch_Include_Webcmds 0
attr Pulse MSwitch_Inforoom MSwitch
attr Pulse MSwitch_Lock_Quickedit 1
attr Pulse MSwitch_Mode Full
attr Pulse MSwitch_Safemode 1
attr Pulse readingList onpulse offpulse schwelle_on schwelle_off
attr Pulse room 07_Pulse
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 schwelle_off:slider,1,1,50 schwelle_on:slider,1,1,50
attr Pulse webCmd on:off:onpulse:offpulse:schwelle_off:schwelle_on
attr Pulse webCmdLabel ::ontime:offtime:off bei:on bei

defmod pulsedevice MSwitch # no_device
attr pulsedevice MSwitch_Debug 0
attr pulsedevice MSwitch_Eventhistory 0
attr pulsedevice MSwitch_Help 0
attr pulsedevice MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr pulsedevice MSwitch_Inforoom MSwitch
attr pulsedevice MSwitch_Mode Dummy
attr pulsedevice room 07_Pulse
attr pulsedevice setList on off

defmod tempdummy MSwitch # nodevices
attr tempdummy MSwitch_Debug 0
attr tempdummy MSwitch_Eventhistory 0
attr tempdummy MSwitch_Help 0
attr tempdummy MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr tempdummy MSwitch_Inforoom MSwitch
attr tempdummy MSwitch_Mode Dummy
attr tempdummy readingList temperature
attr tempdummy room 07_Pulse
attr tempdummy setList temperature:slider,1,1,40
attr tempdummy webCmd temperature

setstate Pulse off
setstate Pulse 2019-11-09 13:27:51 .Device_Affected MSwitch_Self-AbsCmd1,MSwitch_Self-AbsCmd2,MSwitch_Self-AbsCmd3,MSwitch_Self-AbsCmd4,MSwitch_Self-AbsCmd5,pulsedevice-AbsCmd1,pulsedevice-AbsCmd2
setstate Pulse 2019-11-09 13:47:55 .Device_Affected_Details MSwitch_Self-AbsCmd1#[NF]exec_cmd_1#[NF]no_action#[NF]ID#[sp]1#[NF]#[NF]delay1#[NF]delay1#[NF][$SELF#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]5#[NF]0#[NF]führt#[sp]den#[sp]befehl#[sp]mit#[sp]der#[sp]ID#[sp]1#[sp]verzögert#[sp]aus#[ko]#[sp]verzögerungszeit#[sp]aus#[sp]reading#[sp]onppulse#[sp]#[NF]0#[NF]0#[NF]3#[ND]MSwitch_Self-AbsCmd2#[NF]exec_cmd_1#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF][$SELF#[dp]offpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]6#[NF]1#[NF]wird#[sp]um#[sp]onpulse#[sp]verzögert#[sp]ausgeführt.#[sp]und#[sp]startet#[sp]cmd1#[sp]erneut#[ko]#[sp]um#[sp]offpulse#[sp]verzögert.#[sp]Hieraus#[sp]ergiebt#[sp]sich#[sp]ein#[sp]neustart#[sp]von#[sp]cmd1#[sp]nach#[sp]onpulse+offpulse#[NF]0#[NF]0#[NF]4#[ND]MSwitch_Self-AbsCmd3#[NF]on#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF][EVTPART3]#[sp]>=#[sp][$SELF#[dp]schwelle_on]#[sp]AND#[sp][$SELF#[dp]state]#[sp]eq#[sp]"off"#[NF][EVTPART3]#[sp]<#[sp]10#[sp]AND#[sp][$SELF#[dp]state]#[sp]eq#[sp]"on"#[NF]0#[NF]0#[NF]1#[NF]2#[NF]#[NF]1#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd4#[NF]no_action#[NF]del_delays#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF][EVTPART3]#[sp]<#[sp]10#[sp]AND#[sp][$SELF#[dp]state]#[sp]eq#[sp]"on"#[NF]0#[NF]0#[NF]2#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd5#[NF]off#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF][EVTPART3]#[sp]<#[sp][$SELF#[dp]schwelle_off]#[sp]AND#[sp][$SELF#[dp]state]#[sp]eq#[sp]"on"#[NF]#[NF]0#[NF]0#[NF]1#[NF]2#[NF]#[NF]1#[NF]0#[NF]1#[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]3#[NF]0#[NF]schaltet#[sp]device#[sp]an#[sp]#[NF]0#[NF]0#[NF]1#[ND]pulsedevice-AbsCmd2#[NF]off#[NF]off#[NF]#[NF]#[NF]delay2#[NF]delay1#[NF][$SELF#[dp]onpulse]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]4#[NF]0#[NF]schaltet#[sp]device#[sp]verzögert#[sp]aus#[ko]#[sp]verzögerungszeit#[sp]aus#[sp]reading#[sp]onppulse#[NF]0#[NF]0#[NF]2 setstate Pulse 2019-11-09 13:48:33 .Device_Events temperature:18#[tr]temperature:24#[tr]temperature:23#[tr]temperature:11#[tr]temperature:2#[tr]temperature:14#[tr]temperature:21#[tr]no_trigger#[tr]temperature:16#[tr]temperature:27#[tr]temperature:30#[tr]temperature:32#[tr]temperature:19#[tr]temperature:7#[tr]temperature:17#[tr]temperature:25#[tr]temperature:12#[tr]temperature:3#[tr]temperature:29#[tr]temperature:28#[tr]temperature:31#[tr]temperature:1#[tr]temperature:9#[tr]temperature:5#[tr]temperature:6#[tr]temperature:4#[tr]temperature:8#[tr]temperature:34#[tr]temperature:.*#[tr]temperature:15
setstate Pulse 2019-11-03 12:31:25 .First_init done
setstate Pulse 2019-11-09 12:42:33 .Trigger_cmd_off temperature:.*
setstate Pulse 2019-11-09 12:42:33 .Trigger_cmd_on temperature:.*
setstate Pulse 2019-11-09 13:04:08 .Trigger_condition
setstate Pulse 2019-11-09 12:42:33 .Trigger_off no_trigger
setstate Pulse 2019-11-09 12:42:33 .Trigger_on no_trigger
setstate Pulse 2019-11-09 13:04:08 .Trigger_time
setstate Pulse 2019-11-03 12:31:25 .V_Check V2.00
setstate Pulse 2019-11-09 12:45:42 .sortby priority
setstate Pulse 2019-11-09 13:48:33 EVENT temperature:14
setstate Pulse 2019-11-09 13:48:33 EVTFULL tempdummy:temperature:14
setstate Pulse 2019-11-09 13:48:33 EVTPART1 tempdummy
setstate Pulse 2019-11-09 13:48:33 EVTPART2 temperature
setstate Pulse 2019-11-09 13:48:33 EVTPART3 14
setstate Pulse 2019-11-09 13:04:08 Trigger_device tempdummy
setstate Pulse 2019-11-09 12:42:33 Trigger_log on
setstate Pulse 2019-11-09 13:48:33 last_activation_by manual
setstate Pulse 2019-11-09 13:48:33 last_cmd 1
setstate Pulse 2019-11-09 13:48:33 last_event temperature:14
setstate Pulse 2019-11-09 13:48:33 last_exec_cmd set pulsedevice off
setstate Pulse 2019-11-09 13:42:02 offpulse 00:00:01
setstate Pulse 2019-11-09 13:42:20 onpulse 00:00:01
setstate Pulse 2019-11-09 13:48:06 schwelle_off 15
setstate Pulse 2019-11-09 13:47:01 schwelle_on 17
setstate Pulse 2019-11-09 13:48:33 state off

setstate pulsedevice off
setstate pulsedevice 2019-11-03 12:32:30 .Device_Affected no_device
setstate pulsedevice 2019-11-03 12:32:30 .Device_Events no_trigger
setstate pulsedevice 2019-11-03 12:32:30 .First_init done
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_cmd_off no_trigger
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_cmd_on no_trigger
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_off no_trigger
setstate pulsedevice 2019-11-03 12:32:30 .Trigger_on no_trigger
setstate pulsedevice 2019-11-03 12:32:30 .V_Check V2.00
setstate pulsedevice 2019-11-03 12:32:30 Trigger_log off
setstate pulsedevice 2019-11-09 13:48:33 state off

setstate tempdummy active
setstate tempdummy 2019-11-09 13:02:10 .Device_Affected no_device
setstate tempdummy 2019-11-09 13:02:10 .Device_Events no_trigger
setstate tempdummy 2019-11-09 13:02:10 .First_init done
setstate tempdummy 2019-11-09 13:02:10 .Trigger_cmd_off no_trigger
setstate tempdummy 2019-11-09 13:02:10 .Trigger_cmd_on no_trigger
setstate tempdummy 2019-11-09 13:02:10 .Trigger_off no_trigger
setstate tempdummy 2019-11-09 13:02:10 .Trigger_on no_trigger
setstate tempdummy 2019-11-09 13:02:10 .V_Check V2.00
setstate tempdummy 2019-11-09 13:02:10 Trigger_log off
setstate tempdummy 2019-11-09 13:02:10 state active
setstate tempdummy 2019-11-09 13:48:33 temperature 14

Inbetriebnahme

Der Testraum 07_Puls enthält drei konfigurierte MSwitch-Geräte, die die beabsichtigte Funktion zusammen bewirken. Pulse enthält die Logik, Pulsedevice dient der Statusausgabe des Generators und tempdummy die Simulation eines Temperatursensors. Beim Erreichen der konfigurierbaren Einschaltschwelle startet die Impulsfolge, beim Erreichen der Ausschaltschwelle stoppt sie.

Sensor Simulation

Funktionsbeschreibung

Der verwendete Rechteckgenerator ist in einem vorigen Beispiel erklärt. Konfiguration Schmitt-Trigger

Anpassung an eigene Anforderungen

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

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. 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.

Tempdummy kann durch einen physischen Sensor ersetzt werden.