STELLMOTOR: Unterschied zwischen den Versionen

Aus FHEMWiki
(neues set kommando: stop)
(Korrektur 0,1 auf 1,1 für Rechtslauf / Wechsel in Tabelle)
 
(7 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 11: Zeile 11:


== Features ==
== Features ==
 
<u>Diese Wiki-Seite beschreibt die Version 3.0 des STELLMOTOR Moduls.</u>
<u>Diese Wiki-Seite beschreibt die Version 2.1 des STELLMOTOR Moduls.</u>


----
----
Zeile 20: Zeile 19:
* Vermeiden von Blockade des FHEM während der Laufzeit des Motors
* Vermeiden von Blockade des FHEM während der Laufzeit des Motors


Thread im Forum:[http://forum.fhem.de/index.php/topic,23933.0.html]
Thread im {{Link2Forum|Topic=23933|LinkText=Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.
 
 
----


== Beschreibung ==
== Beschreibung ==
[[Datei:dok39_STELLMOTOR.jpg|mini|Funktionsweise]]


[[Datei:dok39_STELLMOTOR.jpg|mini|Funktionsweise]]
Vorrangig ist dieses Modul für zwei Relais an GPIO- oder an PIFace-Pins eines [[Raspberry Pi|Raspberrys]] gedacht. Andere Einplatinencomputer werden  mit dem Device-Typ SysCmd unterstützt. Es bietet zusätzlich auch die Option, zwei Schaltaktoren per Funk (aus Timinggründen nicht empfohlen) oder 1-Wire anzusteuern.


Vorrangig ist dieses Modul für zwei Relais an GPIO- oder an PIFace-Pins eines Rasberrys gedacht. Andere Einplatinencomputer werden
Aus den Werten MaxTics (Default=100, für Prozentanzeige) und MaxDriveSeconds (Laufzeit des Motors von 0 bis 100%) wird die Zeit berechnet, die der Motor nach rechts oder links laufen muss, um die mit set gewünschte Motorstellung zu erreichen.
mit dem Device-Typ SysCmd unterstützt. Es bietet zusätzlich auch die Option, zwei Schaltaktoren per Funk (aus Timinggründen nicht
empfohlen) oder 1-Wire anzusteuern.  


Aus den Werten MaxTics (Default=100, für Prozentanzeige) und MaxDriveSeconds (Laufzeit des Motors von 0 bis 100%) wird die Zeit  
FHEM läuft dann weiter ohne einzufrieren, und prüft in einer Schleife nur noch ob, die Stoppzeit im Cache erreicht ist. Da der Stopp nie exakt zur geplanten Zeit ausgeführt wird, liegt im Cache ein weiterer Wert, der die Differenz zwischen geplanter und tatsächlicher Stoppzeit dem nächsten Kommando hinzurechnet. So werden sich addierende kleine Zeitdifferenzen vermieden.
berechnet, die der Motor nach rechts oder links laufen muss, um die mit set gewünschte Motorstellung zu erreichen.


FHEM läuft dann weiter ohne einzufrieren, und prüft im Loop nur noch ob, die Stoppzeit im Cache erreicht ist. Da der Stopp nie
Der Befehl "stop" hält den Motor sofort an und berechnet den aktuellen Stand neu.
exakt zur geplanten Zeit ausgeführt wird, liegt im Cache ein weiterer Wert, der die Differenz zwischen geplanter und tatsächlicher
Stoppzeit dem nächsten Kommando hinzurechnet. So werden sich addierende kleine Zeitdifferenzen vermieden.


Zum Kalibrieren (set calibrate) fährt der Motor einfach volle Zeit nach links/null. Hier wird der in Getriebemotoren meist eingebaute  
Zum Kalibrieren (set calibrate) fährt der Motor einfach volle Zeit nach in eine Richtung (default=links, über attr auch rechts einstellbar). Hier wird der in Getriebemotoren meist eingebaute Endschalter genutzt, um den "Null-Punkt" sicher zu finden. Falls ein angeschlossener Motor solche Endschalter nicht hat, müssen diese für diese Schaltungsweise unbedingt vorgesehen werden. Übliche Montagepunkte sind ein Wellrad an der Ansgangswelle, an Endpunkten des zu bewegenden Objektes oder direkt am Motor gegen eine drehend gefedert gelagerte Motoraufhängung.
Endschalter genutzt, um den "Null-Punkt" sicher zu finden. Falls ein angeschlossener Motor solche Endschalter nicht hat, müssen diese  
für diese Schaltungsweise unbedingt vorgesehen werden.
Übliche Montagepunkte sind ein Wellrad an der Ansgangswelle, an Endpunkten des zu bewegenden Objektes oder direkt am Motor gegen
eine drehend gefedert gelagerte Motoraufhängung.


Anwendungsszenarien für das Modul sind unter Anderem:
Anwendungsszenarien für das Modul sind unter Anderem:
* [[Mischersteuerung|3- oder 4-Wege Heizkreis-Mischer]]
* [[Mischersteuerung|3- oder 4-Wege Heizkreis-Mischer]]
* [[Solarspeicher|Warmwasser-Mischventil für Solarspeicher]]
* Solarspeicher|Warmwasser-Mischventil für Solarspeicher
* [[Eigenbau-Heizungsthermostate]]
* Eigenbau-Heizungsthermostate
* [[Eigenbau-Rolladensteuerung]]
* Eigenbau-Rolladensteuerung
* [[(Dach-)Fensteröffner]]
* (Dach-)Fensteröffner
* [[Beamer-Leinwand]]
* Beamer-Leinwand
* [[Heliostaten]]
* Heliostaten
* ....
* ....


== Define ==
:<code>define <name> STELLMOTOR <PiFace|Gpio|FhemDev|SysCmd> </code>


----
Je nach Device Typ sind verschiedene Attribute erforderlich, damit STELLMOTOR weiß, wie die beiden Relais angeschlossen sind.
 
== Define ==
<code>
  define <name> STELLMOTOR <PiFace|Gpio|FhemDev|SysCmd> 
</code>
Je nach Device Typ sind verschiedene Attribute zur erforderlich, damit STELLMOTOR weiß, wie die beiden Relais angeschlossen sind.
* '''PiFace''' und '''Gpio''' benötigen STMgpioPortRL und STMgpioPortSTART
* '''PiFace''' und '''Gpio''' benötigen STMgpioPortRL und STMgpioPortSTART
* '''FhemDev''' benötigt STMfhemDevRL und STMfhemDevSTART  
* '''FhemDev''' benötigt STMfhemDevRL und STMfhemDevSTART  
Zeile 75: Zeile 59:
</code>
</code>


* Die Schaltbefehle 0 und 1 können mit Attributen invertiert und/oder gemapped werden (zB.: On/Off)
* Die Schaltbefehle 0 und 1 können mit Attributen invertiert und/oder gemapped werden (z.B.: On/Off)


Um die Wirkung auszuprobieren, ohne jedes Mal zum Mischer rennen zu müssen, bietet sich an, zwei '''Dummys''' zu verwenden:
Um die Wirkung auszuprobieren, ohne jedes Mal zum Motor rennen zu müssen, bietet sich an, zwei '''Dummys''' zu verwenden:


<code>
<code>
Zeile 89: Zeile 73:
</code>
</code>


stellt den Motor nun auf 45%. Angenommen, stand er bei 10%, wird er nun (45-10)*MaxDriveSeconds/MaxTics Sekunden lang nach rechts laufen und dann von STELLMOTOR gestoppt.
stellt den Motor nun auf 45%. Angenommen, er stand bei 10%, wird er nun (45-10)*MaxDriveSeconds/MaxTics Sekunden lang nach rechts laufen und dann von STELLMOTOR gestoppt.
 
<code>
set <name> stop
</code>
 
stellt den Motor während einer laufenden Bewegung sofort ab und berechnet den Stand neu.


Diese beiden Bilder zeigen die elektrische Verdrahtung von zwei Relais, die von je einem Aktor gesteuert werden:
Diese beiden Bilder zeigen die elektrische Verdrahtung von zwei Relais, die von je einem Aktor gesteuert werden:
[[Datei:Relais-Schaltung FBH-Mischer attr einzel.jpg|mini|Schaltplan einzel]]      [[Datei:Relais-Schaltung FBH-Mischer attribut Wechsel.jpg|mini|Schaltplan wechsel]]   
[[Datei:Relais-Schaltung FBH-Mischer attr einzel.jpg|mini|Schaltplan einzel]]      [[Datei:Relais-Schaltung FBH-Mischer attribut Wechsel.jpg|mini|Schaltplan wechsel]]   


Typische Getriebemotoren haben eingebaute Endschalter, die beim Erreichen der 0%- oder 100%-Position die Stromversorgung unterbrechen. Das Modul Stellmotor nutzt dies  
Typische Getriebemotoren haben eingebaute Endschalter, die beim Erreichen der 0%- oder 100%-Position die Stromversorgung unterbrechen. Das Modul Stellmotor nutzt dies aus, um eine Kalibrierung zwischen rechnerischem und tatsächlichen Stand herzustellen.  
aus, um eine Kalibrierung zwischen rechnerischem und tatsächlichen Stand herzustellen.  
 
----


== Attribute ==
== Attribute ==
 
Alle Attribute sind auch in FHEM durch das Kommando get attrHelp <varname> erklärt, für's "schnelle Nachschauen zwischendurch".
Alle Attributes sind auch in fhem durch das Kommando get attrHelp <varname> erklärt, für's "schnelle Nachschauen zwischendurch".


=== Global gültige Attribute ===
=== Global gültige Attribute ===
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
Zeile 112: Zeile 97:
<b>'''ACHTUNG:'''</b> falsche Einstellung kann zu Kurzschluss am Motor führen, bitte Einstellung genau überdenken oder mit dummy testen
<b>'''ACHTUNG:'''</b> falsche Einstellung kann zu Kurzschluss am Motor führen, bitte Einstellung genau überdenken oder mit dummy testen


bei einzel:  
bei Einzel:  
Rechtslauf: start=0 rl=1  
Rechtslauf: start=0 rl=1  
Linkslauf: start=1 rl=0 Ruhe:  
Linkslauf: start=1 rl=0 Ruhe:  
start=0 rl=0
start=0 rl=0


bei wechsel:  
bei Wechsel:  
Rechtslauf start=0 rl=1  
Rechtslauf start=1 rl=1  
Linkslauf: L start=1 rl=0  
Linkslauf: L start=1 rl=0  
Ruhe: start=0 rl=0
Ruhe: start=0 rl=0
Zeile 127: Zeile 112:
|STMmaxTics ||[0...100]||100||Motorstellung - bei Prozentangaben 100, bei Winkelangaben anzupassen
|STMmaxTics ||[0...100]||100||Motorstellung - bei Prozentangaben 100, bei Winkelangaben anzupassen
|-
|-
|STMpollInterval || Float ||0.1||Zeitintervall nach dem FHEM prüft, ob die interne Stoppzeit erreicht wurde. Hier sollte mit einem möglichst  
|STMpollInterval || Float ||0.1||Zeitintervall nach dem FHEM prüft, ob die interne Stoppzeit erreicht wurde. Hier sollte mit einem möglichst kleinen Wert gestartet werden, der vorsichtig erhöht werden kann, falls FHEM zu langsam läuft wegen des Stellmotors. Darf nicht größer STMlastDiffMax sein, sonst beginnt der Motor zu schwingen.
kleinen Wert gestartet werden, der vorsichtig erhöht werden kann, falls FHEM zu langsam läuft wegen des Stellmotors. Darf nicht größer  
STMlastDiffMax sein, sonst beginnt der Motor zu schwingen.
|-
|-
 
| STMresetOtherDeviceAtCalibrate|| String || 0 || FHEM Device das am Ende des Kalibriervorganges zusätzlich resettet wird. (command:  
| STMresetOtherDeviceAtCalibrate|| String || 0 || Fhem Device das am Ende des Kalibriervorganges zusätzlich resettet wird. (command:  
set <STMresetOtherDeviceAtCalibrate> reset" wird abgesetzt), zB für eigenes Logging oder Rotary Encoder
set <STMresetOtherDeviceAtCalibrate> reset" wird abgesetzt), zB für eigenes Logging oder Rotary Encoder
|-  
|-  
Zeile 143: Zeile 125:
| STMcalibrateDirection|| String || L || auf R wird die Ralibrierung nach rechts gefahren, default= L (links)  
| STMcalibrateDirection|| String || L || auf R wird die Ralibrierung nach rechts gefahren, default= L (links)  
|-  
|-  
| STMlastDiffMax|| Zahl || 1|| ist die Stoppzeit weiter als dieser wert vom Soll entfernt, wird sofort ein neuer drive  
| STMlastDiffMax|| Zahl || 1|| ist die Stoppzeit weiter als dieser wert vom Soll entfernt, wird sofort ein neuer drive  
gestartet. Wert muss immer größer als STMpollInterval sein, sonst beginnt der Motor zu schwingen  
gestartet. Wert muss immer größer als STMpollInterval sein, sonst beginnt der Motor zu schwingen  
Zeile 150: Zeile 131:
ignoriert (Parameter wird voraussichtlich in der nächsten Modulversion entfallen)
ignoriert (Parameter wird voraussichtlich in der nächsten Modulversion entfallen)
|-  
|-  
| STMdebugToLog3|| Zahl || 0/1 || Debug Informationen ins Log schreiben. Achtung, kann eine Menge Daten verursachen, falls  
| STMdebugToLog3|| Zahl || 0/1 || Debug Informationen ins Log schreiben. Achtung, kann eine Menge Daten verursachen, falls  
man vergisst, es wieder abzuschalten!
man vergisst, es wieder abzuschalten!
|-  
|-  
 
| disable|| Zahl || 0/1 || Motor einfrieren. Neue Befehle werden in command_queue zwischengespeichert
 
|-
|-
|-
|readingFnAttributes||||||readingFnAttributes
|readingFnAttributes||||||readingFnAttributes
Zeile 167: Zeile 147:
geändert werden.
geändert werden.


Alle Attributes sind auch in fhem durch das kommando get attrHelp <varname> erklärt, für das "schnelle Nachschauen zwischendurch".  
Alle Attributes sind auch in FHEM durch das kommando get attrHelp <varname> erklärt, für das "schnelle Nachschauen zwischendurch".  


{| class="wikitable sortable"  
{| class="wikitable sortable"  
Zeile 177: Zeile 157:
| PiFace / Gpio || STMgpioPortSTART || Zahl || 4 || PiFace Digital Port oder Gpio-Port für START (oder L Relais bei 'einzel')  
| PiFace / Gpio || STMgpioPortSTART || Zahl || 4 || PiFace Digital Port oder Gpio-Port für START (oder L Relais bei 'einzel')  
|-  
|-  
| FhemDev || STMfhemDevRL|| String || RelaisRL || Fhem-Device name für RL (oder R) Aktor (zB.: 'keller portB' oder 'dummyRLrelais')
| FhemDev || STMfhemDevRL|| String || RelaisRL || FHEM-Device name für RL (oder R) Aktor (zB.: 'keller portB' oder 'dummyRLrelais')
|-  
|-  
| FhemDev || STMfhemDevSTART|| String || RelaisSTART || Fhem-Device name für START (oder L) Aktor  (zB.: 'keller portC' oder 'dummySTARTrelais')
| FhemDev || STMfhemDevSTART|| String || RelaisSTART || FHEM-Device name für START (oder L) Aktor  (zB.: 'keller portC' oder 'dummySTARTrelais')
|-  
|-  
| SysCmd || STMsysCmdRL|| String || 0 || freies Command, das für RL an die Shell übergeben wird (zB: '/Usr/local/bin/gpio write 4', STELLMOTOR fügt 0 oder 1 arg. dazu)
| SysCmd || STMsysCmdRL|| String || 0 || freies Command, das für RL an die Shell übergeben wird (zB: '/Usr/local/bin/gpio write 4', STELLMOTOR fügt 0 oder 1 arg. dazu)
Zeile 196: Zeile 176:
! SET !! Wertebereich !! Beschreibung
! SET !! Wertebereich !! Beschreibung
|-
|-
|set <name> N||[1...100]||stellt den Mischer auf N % Öffnung
|set <name> N||[1...100]||stellt den Mischer auf N % Öffnung. Dieser Wert muss ganzzahlig sein
|-
|-
|set <name> stop || - || stoppt die laufende bewegung sofort und berechnet den positionswert neu
|set <name> stop || - || stoppt die laufende Bewegung sofort und berechnet den Positionswert neu
|-
|-
|set <name> calibrate|| - ||stellt den Mischer auf Min. oder Max. (in Fhem 1% oder 100%); default: maximaler Linkslauf bis zur Endschalterpostion. Kann über Attr in Rechtslauf geändert werden.
|set <name> calibrate|| - ||stellt den Mischer auf Min. oder Max. (in FHEM 1% oder 100%); default: maximaler Linkslauf bis zur Endschalterpostion. Kann über Attr in Rechtslauf geändert werden.
|-
|-
|set <name> reset|| - ||Setzt die Position und die Werte im Cache auf Null. Verwendung ist intern (am Ende von calibrate) oder nach mechanischem Neueinbau des Motors (da reicht aber auch ein Calibrate)
|set <name> reset|| - ||Setzt die Position und die Werte im Cache auf Null. Verwendung ist intern (am Ende von calibrate) oder nach mechanischem Neueinbau des Motors (da reicht aber auch ein Calibrate)
Zeile 209: Zeile 189:
== Readings ==
== Readings ==


Alle Readings sind auch in fhem durch das Kommando get readingsHelp <varname> erklärt, für das "schnelle nachschauen zwischendurch".  
Alle Readings sind auch in FHEM durch das Kommando get readingsHelp <varname> erklärt, für das "schnelle nachschauen zwischendurch".  


{| class="wikitable sortable"
{| class="wikitable sortable"
Zeile 233: Zeile 213:
|command_queue||||Position einer anstehenden neuen Motorposition, die angefordert wurde als die letzte Motorbewegung noch ausgeführt oder das Modul disabled war
|command_queue||||Position einer anstehenden neuen Motorposition, die angefordert wurde als die letzte Motorbewegung noch ausgeführt oder das Modul disabled war
|-
|-
|OutType||||Bei der Defintion gewählte Arbeitsart: PiFace,Gpio,FhemDev,SysCmd
|OutType||||Bei der Defintion gewählte Arbeitsart: PiFace, Gpio, FhemDev, SysCmd
|-
|-
|DoResetAtStop||||Zeitstempel des Ende der letzten Kalibrierfahrt
|DoResetAtStop||||Zeitstempel des Ende der letzten Kalibrierfahrt
Zeile 241: Zeile 221:


== Weblinks ==
== Weblinks ==
* [http://forum.fhem.de/index.php/topic,23933.msg174400.html#new Thread im Forum], in dem dieses Modul vorgestellt wurde
* {{Link2Forum|Topic=23933|LinkText=Thread im Forum}}, in dem dieses Modul vorgestellt wurde
* to be continued
* to be continued



Aktuelle Version vom 5. Januar 2019, 11:48 Uhr


STELLMOTOR
Zweck / Funktion
Stellmotor-Steuerung mit Zeitabweichungskorrektur
Allgemein
Typ Inoffiziell
Details
Dokumentation siehe Forum
Support (Forum) Codeschnipsel
Modulname 39_STELLMOTOR.pm
Ersteller epsrw1,cwagner
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Das Modul STELLMOTOR bietet eine einfache Möglichkeit, mit zwei Relais den Rechts-/Linkslauf eines Motors zu steuern und punktgenau anzuhalten.

Features

Diese Wiki-Seite beschreibt die Version 3.0 des STELLMOTOR Moduls.


  • Wiedereintrittsfähig nach einem Neustart
  • Wiederholungsgenauigkeit durch Ausgleich von Rundungs- und Laufzeitabweichungen
  • Vermeiden von Blockade des FHEM während der Laufzeit des Motors

Thread im Forum mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.

Beschreibung

Funktionsweise

Vorrangig ist dieses Modul für zwei Relais an GPIO- oder an PIFace-Pins eines Raspberrys gedacht. Andere Einplatinencomputer werden mit dem Device-Typ SysCmd unterstützt. Es bietet zusätzlich auch die Option, zwei Schaltaktoren per Funk (aus Timinggründen nicht empfohlen) oder 1-Wire anzusteuern.

Aus den Werten MaxTics (Default=100, für Prozentanzeige) und MaxDriveSeconds (Laufzeit des Motors von 0 bis 100%) wird die Zeit berechnet, die der Motor nach rechts oder links laufen muss, um die mit set gewünschte Motorstellung zu erreichen.

FHEM läuft dann weiter ohne einzufrieren, und prüft in einer Schleife nur noch ob, die Stoppzeit im Cache erreicht ist. Da der Stopp nie exakt zur geplanten Zeit ausgeführt wird, liegt im Cache ein weiterer Wert, der die Differenz zwischen geplanter und tatsächlicher Stoppzeit dem nächsten Kommando hinzurechnet. So werden sich addierende kleine Zeitdifferenzen vermieden.

Der Befehl "stop" hält den Motor sofort an und berechnet den aktuellen Stand neu.

Zum Kalibrieren (set calibrate) fährt der Motor einfach volle Zeit nach in eine Richtung (default=links, über attr auch rechts einstellbar). Hier wird der in Getriebemotoren meist eingebaute Endschalter genutzt, um den "Null-Punkt" sicher zu finden. Falls ein angeschlossener Motor solche Endschalter nicht hat, müssen diese für diese Schaltungsweise unbedingt vorgesehen werden. Übliche Montagepunkte sind ein Wellrad an der Ansgangswelle, an Endpunkten des zu bewegenden Objektes oder direkt am Motor gegen eine drehend gefedert gelagerte Motoraufhängung.

Anwendungsszenarien für das Modul sind unter Anderem:

  • 3- oder 4-Wege Heizkreis-Mischer
  • Solarspeicher|Warmwasser-Mischventil für Solarspeicher
  • Eigenbau-Heizungsthermostate
  • Eigenbau-Rolladensteuerung
  • (Dach-)Fensteröffner
  • Beamer-Leinwand
  • Heliostaten
  • ....

Define

define <name> STELLMOTOR <PiFace|Gpio|FhemDev|SysCmd>

Je nach Device Typ sind verschiedene Attribute erforderlich, damit STELLMOTOR weiß, wie die beiden Relais angeschlossen sind.

  • PiFace und Gpio benötigen STMgpioPortRL und STMgpioPortSTART
  • FhemDev benötigt STMfhemDevRL und STMfhemDevSTART
  • SysCmd benötigt STMsysCmdRL und STMsysCmdSTART

Für den Schaltvorgang "baut" STELLMOTOR einen set-Befehl zusammen. Beispielsweise bei FhemDev

 set <**..PortRL> 0     sowie      set <**..PortSTART> 1      zum Einschalten links  
 set <**..PortRL> 1     sowie      set <**..PortSTART> 0      zum Einschalten rechts (bei Type "einzel", sonst 1,1)
 set <**..PortRL> 0     sowie      set <**..PortSTART> 0      zum Ausschalten

  • Die Schaltbefehle 0 und 1 können mit Attributen invertiert und/oder gemapped werden (z.B.: On/Off)

Um die Wirkung auszuprobieren, ohne jedes Mal zum Motor rennen zu müssen, bietet sich an, zwei Dummys zu verwenden:

define Stellmotor2rl dummy

define Stellmotor2start dummy

set <name> 45

stellt den Motor nun auf 45%. Angenommen, er stand bei 10%, wird er nun (45-10)*MaxDriveSeconds/MaxTics Sekunden lang nach rechts laufen und dann von STELLMOTOR gestoppt.

set <name> stop

stellt den Motor während einer laufenden Bewegung sofort ab und berechnet den Stand neu.

Diese beiden Bilder zeigen die elektrische Verdrahtung von zwei Relais, die von je einem Aktor gesteuert werden:

Schaltplan einzel
Schaltplan wechsel

Typische Getriebemotoren haben eingebaute Endschalter, die beim Erreichen der 0%- oder 100%-Position die Stromversorgung unterbrechen. Das Modul Stellmotor nutzt dies aus, um eine Kalibrierung zwischen rechnerischem und tatsächlichen Stand herzustellen.

Attribute

Alle Attribute sind auch in FHEM durch das Kommando get attrHelp <varname> erklärt, für's "schnelle Nachschauen zwischendurch".

Global gültige Attribute

Parameter Wertebereich Default Beschreibung
STMrlType String einzel je nach Schaltplan, Wechsel=start+RL-relais, einzel=R-Relais+L-Relais werden geschaltet

ACHTUNG: falsche Einstellung kann zu Kurzschluss am Motor führen, bitte Einstellung genau überdenken oder mit dummy testen

bei Einzel: Rechtslauf: start=0 rl=1 Linkslauf: start=1 rl=0 Ruhe: start=0 rl=0

bei Wechsel: Rechtslauf start=1 rl=1 Linkslauf: L start=1 rl=0 Ruhe: start=0 rl=0

STMmaxDriveSeconds [0...n] muss angepasst werden gestoppte Zeit in Sekunden, die der Motor für die Fahrt von 0 bis 100 Prozent braucht
STMmaxTics [0...100] 100 Motorstellung - bei Prozentangaben 100, bei Winkelangaben anzupassen
STMpollInterval Float 0.1 Zeitintervall nach dem FHEM prüft, ob die interne Stoppzeit erreicht wurde. Hier sollte mit einem möglichst kleinen Wert gestartet werden, der vorsichtig erhöht werden kann, falls FHEM zu langsam läuft wegen des Stellmotors. Darf nicht größer STMlastDiffMax sein, sonst beginnt der Motor zu schwingen.
STMresetOtherDeviceAtCalibrate String 0 FHEM Device das am Ende des Kalibriervorganges zusätzlich resettet wird. (command:

set <STMresetOtherDeviceAtCalibrate> reset" wird abgesetzt), zB für eigenes Logging oder Rotary Encoder

STMinvertOut Zahl 0 setzen für Devices die 0 für Start und 1 für Stop erwarten
STMmapOffCmd String 0 string der im device-command anstelle '0' verwendet wird für stop
STMmapOnCmd String 0 string der im device-command anstelle '1' verwendet wird für start
STMcalibrateDirection String L auf R wird die Ralibrierung nach rechts gefahren, default= L (links)
STMlastDiffMax Zahl 1 ist die Stoppzeit weiter als dieser wert vom Soll entfernt, wird sofort ein neuer drive

gestartet. Wert muss immer größer als STMpollInterval sein, sonst beginnt der Motor zu schwingen

STMtimeTolerance Float 0.001 Stop-Time Differenzen kleiner als dieser Wert werden bei der Berechnung vollständig

ignoriert (Parameter wird voraussichtlich in der nächsten Modulversion entfallen)

STMdebugToLog3 Zahl 0/1 Debug Informationen ins Log schreiben. Achtung, kann eine Menge Daten verursachen, falls

man vergisst, es wieder abzuschalten!

disable Zahl 0/1 Motor einfrieren. Neue Befehle werden in command_queue zwischengespeichert
readingFnAttributes readingFnAttributes

Device Type abhängige Attribute

Je nach Device Type sind verschiedene Attribute vorgesehen, um STELLMOTOR mitzuteilen, wie die beiden Relais angesprochen werden. Man kann so z. B. während der Aufbauphase der Installation neben den Gpio devices noch 2 dummy devices im Attr vorhalten um zwischendurch zu testen. Hierzu muss dann nur noch die DEF des STELLMOTOR Devices vorübergehend auf FhemDev geändert werden.

Alle Attributes sind auch in FHEM durch das kommando get attrHelp <varname> erklärt, für das "schnelle Nachschauen zwischendurch".

Device Type Parameter Typ Default Beschreibung
PiFace / Gpio STMgpioPortRL Zahl 5 PiFace Digital port oder Gpio-Port für RL oder R Relais
PiFace / Gpio STMgpioPortSTART Zahl 4 PiFace Digital Port oder Gpio-Port für START (oder L Relais bei 'einzel')
FhemDev STMfhemDevRL String RelaisRL FHEM-Device name für RL (oder R) Aktor (zB.: 'keller portB' oder 'dummyRLrelais')
FhemDev STMfhemDevSTART String RelaisSTART FHEM-Device name für START (oder L) Aktor (zB.: 'keller portC' oder 'dummySTARTrelais')
SysCmd STMsysCmdRL String 0 freies Command, das für RL an die Shell übergeben wird (zB: '/Usr/local/bin/gpio write 4', STELLMOTOR fügt 0 oder 1 arg. dazu)
SysCmd STMsysCmdSTART String 0 freies Command, das für START an die Shell übergeben wird (zB: '/Usr/local/bin/gpio write 5', STELLMOTOR fügt 0 oder 1 arg. am Ende dazu)



Settings

SET Wertebereich Beschreibung
set <name> N [1...100] stellt den Mischer auf N % Öffnung. Dieser Wert muss ganzzahlig sein
set <name> stop - stoppt die laufende Bewegung sofort und berechnet den Positionswert neu
set <name> calibrate - stellt den Mischer auf Min. oder Max. (in FHEM 1% oder 100%); default: maximaler Linkslauf bis zur Endschalterpostion. Kann über Attr in Rechtslauf geändert werden.
set <name> reset - Setzt die Position und die Werte im Cache auf Null. Verwendung ist intern (am Ende von calibrate) oder nach mechanischem Neueinbau des Motors (da reicht aber auch ein Calibrate)

Readings

Alle Readings sind auch in FHEM durch das Kommando get readingsHelp <varname> erklärt, für das "schnelle nachschauen zwischendurch".

readings Wertebereich Beschreibung
position [1..100%] der Wert wird gesetzt am Beginn einer Mischerbewegung (anderer Wertebereich, wenn MaxTics nicht 100)
state active,error,position Position wird beim Stopp der Motorbewegung gesetzt
lastStart Float Zeitstempel der letzten Motorbewegung
locked [0 1] Steht auf 1 während der Motor gerade läuft (Calibrate oder gewünsche Position per set).

Neue Kommandos werden während lock nur in eine Warteschleife (reading: command_queue) genommen.

Zeigt im im Frontend, dass der Motor gerade läuft.

queue_lastdiff Letzte Zeitdifferenz beim Stopp: abhängig von der Systemlast oder anderen blockierenden Kommandos wird das Stopp-Kommando nur nahe an der kalkulierten Stoppzeit ausgeführt, potentiell niemals exakt zum berechneten Zeitpunkt. STELLMOTOR merkt sich die Zeitdifferenz zwischen geplantem und tatsächlichem Stopp und addiert bei der nächsten Bewegung des Motors die Differenz, um möglichst präzise die gewünschte Motorstellung zu erreichen.
stopTime Null oder die errechnete Zeit zum Stopp der Motorbewegung
command_queue Position einer anstehenden neuen Motorposition, die angefordert wurde als die letzte Motorbewegung noch ausgeführt oder das Modul disabled war
OutType Bei der Defintion gewählte Arbeitsart: PiFace, Gpio, FhemDev, SysCmd
DoResetAtStop Zeitstempel des Ende der letzten Kalibrierfahrt

Weblinks