39_STELLMOTOR - ventilsteuerung mit R/L-Motor und relais, zB.Heizungsmischer 3.0

Begonnen von epsrw1, 24 Mai 2014, 15:52:17

Vorheriges Thema - Nächstes Thema

epsrw1

Attr <name> STELLMOTORrltype <wechsel|einzel>
wechsel:
R start=1 rl=1
L start=1 rl=0
idle start=0 rl=0

einzel:
R start=0 rl=1
L start=1 rl=0
idle start=0 rl=0


# $Id: 98_STELLMOTOR.pm 5251 2014-05-28 16:27:47Z Florian Duesterwald $
####################################################################################################
#
# 98_STELLMOTOR.pm
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

Zitateinzel:
R start=0 rl=1
L start=1 rl=0
idle start=0 rl=0
define <name> STELLMOTOR <PiFace|Gpio|FhemDev|OtherOutType> <RL-Out-Port> <Start-Out-Port>
attr <name> STELLMOTORrltype <wechsel|einzel>


define cwagnerMischer STELLMOTOR FhemDev PortC PortB
attr cwagnerMischer STELLMOTORrltype einzel
Ich habe keine Ahnung, aber davon wenigstens ganz viel

cwagner

Hi Florian, das funktioniert mit de Dummys ganz im Sinne meiner Konstruktion. Die Richtung stimmt also!


Danke

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

epsrw1

vielleicht hast Du ja lust & zeit das zu dokumentieren ins wiki incl Deinem tollen schaltplan (evtl noch einen zweiten mit dazu für die anschlußart "wechsel" sogar??). ich bin zu sowas unfähig, insbesondere wenn ich etwas selbst geschrieben habe kommt es mir so einfach vor daß mir maximal eine zeile erklärung einfällt.
LG, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

# $Id: 98_STELLMOTOR.pm 5251 2014-05-31 08:02:00Z Florian Duesterwald $



wechsel:
R start=1 rl=1
L start=1 rl=0
idle start=0 rl=0

einzel:
R start=0 rl=1
L start=1 rl=0
idle start=0 rl=0
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

aktuelles update:
# $Id: 98_STELLMOTOR.pm 5251 2014-06-01 13:22:00Z Florian Duesterwald $
####################################################################################################

Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

ZitatHi Florian,

habe mit aktiviertem Modul nun dreimal FHEM neu gestartet und hatte die beschriebenen Probleme überhaupt nicht mehr. Da bist Du offenbar fündig geworden, hoffentlich löst das auch das Stabilitätsproblem bei Dir.

Beim durchchecken meines Beitrages stellte ich fest, dass im Web-Interface von FHEM STELLMOTOR_defaultState nicht auswählbar ist. set <name> STELLMOTOR_defaultState last wird z.B. als Fehler abgewiesen.

Beim mir startet das Modul grundsätzlich mit Position 1 und erst nach dem ersten set-Befehl habe ich dann die korrekte Position im State, in Position etc.

Herzliche Grüße

Christian

kann es nicht reprodizieren, habe aber einfach mal das update des state readings mit in den loop reingenommen. könnte klappen....


# $Id: 98_STELLMOTOR.pm 5251 2014-06-01 18:19:00Z Florian Duesterwald $
####################################################################################################



default_state eintrag ist schrott und kommt raus. da der motor nicht von selbst losfährt ist es gar nicht nötig, muß ein vergessener code-rest gewesen sein.

LG, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

update:
neues attr: resetOtherDeviceAtCalibrate

# $Id: 98_STELLMOTOR.pm 5251 2014-06-02 14:14:00Z Florian Duesterwald $
####################################################################################################

Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

ZitatAktuell teste ich weiterhin gegen die Dummys, weil ich ja bei meinen Devices als ein/auschaltbefehl nur on/off kenne und beim Zieldevice ja die zusammengesetzte Syntax habe: Der Stellbefehl müsste ja statt 1 lauten:

Port B on bzuw. Port B off statt 1 oder 0.

guten morgen,
ich war mir dessen nicht bewußt dass Du deinen aktor nicht anders ansprechen kannst als durch command mit leerzeichen.
habe eben schnell einen workaround eingebaut:

if($OutType eq "FhemDev"){
if(ReadingsVal($name,'rlport', "") eq "attrRLPORT"){
readingsSingleUpdate($hash, "rlport", AttrVal($name,"attrRLPORT","attrRLPORT_missing"), 1); #set port workaround for blankspace FhemDev
}
if(ReadingsVal($name,'startport', "") eq "attrSTARTPORT"){
readingsSingleUpdate($hash, "startport", AttrVal($name,"attrSTARTPORT","attrSTARTPORT_missing"), 1); #set port workaround for blankspace FhemDev
}
}


wenn rlport="attrRLPORT" dann wird wert von zb.:
attr Stellmotor2 attrRLPORT cwagnerAktor port b
eingesetzt. analog auch bei attrSTARTPORT

daß Dein aktor 0|1 statt on|off annimmt setze ich mal voraus (alles andere wäre unlogisch...)

gruß, florian

update:
# $Id: 98_STELLMOTOR.pm 5251 2014-06-04 07:55:00Z Florian Duesterwald $
####################################################################################################
Ich habe keine Ahnung, aber davon wenigstens ganz viel

cwagner

Hi Florian,

es klappt (beinahe) und ich finde, das Attribut ist ein perfekter Weg für alle möglichen Varianten von Aktoren.

Internals:
   CFGFN      ./FHEM/test.cfg
   DEF        FhemDev attrRLPORT attrSTARTPORT
   NAME       Stellmotor2
   NOTIFYDEV  global
   NR         758
   NTFY_ORDER 50-Stellmotor2
   STATE      100
   TYPE       STELLMOTOR
   Readings:
     2014-06-04 20:55:36   DoResetAtStop   1401908136.55134
     2014-06-04 20:07:24   OutType         FhemDev
     2014-06-04 20:55:36   command_queue   0
     2014-06-04 21:03:58   lastStart       1401908638.11821
     2014-06-04 21:03:58   locked          1
     2014-06-04 21:03:57   position        45
     2014-06-04 21:03:57   queue_lastdiff  0
     2014-06-04 20:07:25   rlport          Switch_Heizkeller output B
     2014-06-04 20:07:25   startport       Switch_Heizkeller output C
     2014-06-04 21:00:41   state           100
     2014-06-04 21:03:58   stopTime        1401908690.58599
Attributes:
   MaxDriveSeconds 95
   MaxTics    100
   STELLMOTORrltype einzel
   attrRLPORT Switch_Heizkeller output B
   attrSTARTPORT Switch_Heizkeller output C
   pollInterval 0.5
   room       _House2


Leider kann ich Deine Vermutung nicht bestätigen, dass der Switch auf 0|1 reagiert. Leider "hört" er nur auf on|off bzw. ich finde keinen Weg, ihn von etwas anderem zu überzeugen.

Noch ein Hinweis: set Stellmotor2 0 führt zu einer Fehlermeldung - er akzeptiert dieses Argument nicht (auch nicht 01) ...


Herzliche Grüße

Christian

PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

epsrw1

Das mit 0 und Fehler ist normal, min.wert ist 1 ;)

Das mit on off sollte sich mit einem passenden attr für deinen Aktor einstellen lassen, glaube Mapping.
LG,Florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

cwagner

ok, Wiki angepasst :-)

Das mit dem mapping/eventmapping hatte ich nicht richtig herum ausprobiert: Ja, die Konstruktion funktioniert, aber sie offenbart ein Timng-Problem des Device-Treibers OWX_Switch, wenn zwei Schaltbefehle fast gleichzeitig kommen. Unter OWX-SWITCH bricht FHEM komplett ab, unter OWX gibt es Schaltfehler und entsprechende Eintragungen im Log.

Aber das ist nicht Deine Baustelle :-)


Herzliche Grüße

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

epsrw1

ZitatDas mit dem mapping/eventmapping hatte ich nicht richtig herum ausprobiert: Ja, die Konstruktion funktioniert, aber sie offenbart ein Timng-Problem des Device-Treibers OWX_Switch, wenn zwei Schaltbefehle fast gleichzeitig kommen. Unter OWX-SWITCH bricht FHEM komplett ab, unter OWX gibt es Schaltfehler und entsprechende Eintragungen im Log.
Aber das ist nicht Deine Baustelle :-)
Herzliche Grüße
Christian

ich könnte eine verzögerung zwischen den beiden schaltbefehlen RL und START einbauen, das ist wenig arbeit. bringt das was?
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

Zitatich könnte eine verzögerung zwischen den beiden schaltbefehlen RL und START einbauen, das ist wenig arbeit. bringt das was?
@christian,
nachtrag:
bei mir mit betriebsart "wechsel" wäre es easy einfach einen delay einzubauen, bei Dir mit "einzel" wäre evtl eine andere lösung eher zielführend:
wenn das modul standardmäßig den akt. status liest und daraufhin entscheidet ob befehl getriggert wird oder nicht?
wie aktuell is Dein status reading?
habe das bislang beim mischer vermieden und immer "mit gewalt" set befehle abgesetzt (ohne rücksicht auf den akt.status) da mein gpio manchmal komische werte anzeigte. das ist allerdings kein logisches muss sondern eher zufällig "gewachsen" sozusagen.
was meinst Du? oder sollen wir einfach "ins blaue" ausprobieren was bei Dir klappt?
gruß,florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

cwagner

Zitat von: epsrw1 am 04 Juni 2014, 23:59:15
habe das bislang beim mischer vermieden und immer "mit gewalt" set befehle abgesetzt (ohne rücksicht auf den akt.status) da mein gpio manchmal komische werte anzeigte. das ist allerdings kein logisches muss sondern eher zufällig "gewachsen" sozusagen.
was meinst Du? oder sollen wir einfach "ins blaue" ausprobieren was bei Dir klappt?
gruß,florian
Moin, Florian,
mein Timingproblem tritt ja auch in anderen Zusammenhängen auf - deshalb möchte ich da Dein Modul nicht verkomplizieren mit einem Delay.
Eine Status-Rückkopplung fände ich reizvoll, aber ist sicherlich viel Arbeit, da vom Aktor abhängig.

state A: 0 B: 0 C: 0 D: 1 E: 1 F: 0 G: 0 H: 0
(Es handelt sich um einen 8fach-Aktor)
----------
Nach einem Neustart fange ich auf der Console einmal diese Fehlermeldung auf, wenn zum ersten Mal der Mischer durch das Modul bewegt wird:
# Argument "initialized" isn't numeric in numeric gt (>) at ./FHEM/98_STELLMOTOR.pm line 229.


Herzliche Grüße

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB