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

cwagner

Moin, Florian, leider muss ich meine vorangegangene Aussage korrigieren. Ja, die Fehlermeldungen reduzierten sich, nachdem ich nur noch ganze Zahlen übergeben habe, aber ich habe sie weiterhin jeden Tag wenn der Regler gegen Null läuft. Dabei habe ich die Werte, die übergeben werden sowieso auf 1...99 begrenzt:
2014.11.08 09:51:16 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  1>
2014.11.08 09:53:47 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  3>
2014.11.08 09:55:48 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  5>
2014.11.08 09:56:19 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  3>
2014.11.08 09:57:20 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  5>
2014.11.08 10:00:51 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  7>
2014.11.08 10:02:22 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  9>
2014.11.08 10:03:23 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  5>
2014.11.08 10:03:54 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  1>
2014.11.08 10:18:56 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  3>
2014.11.08 10:20:27 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  5>
2014.11.08 10:22:28 3: PID20 PID_Mischer_FBH: Calc.691 <set Stellmotor2  1>
2014.11.08 10:22:35 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:35 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:35 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:35 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:37 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:37 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:37 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:37 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:39 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414
2014.11.08 10:22:39 3: STELLMOTOR Stellmotor2 Stop Problem: lastGuiState:-1 please report this error L.414


Diese Meldung kommt nun solange im Sekundentakt, bis ich einen Stellbefehl größer/gleich 1 aktiv sende.
Kann es sein, dass sich im Programm Rundungsdifferenzen aufbauen im Laufe eines Tages sodass Stellmotor-Intern werte kleiner 1 entstehena?

STMmaxDriveSeconds   ist bei mir 95; STMmaxTics ist 99.

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

janwilli

Hallo
Erstmal danke für das modul, ich bin gerade noch am testen, aber ich werde es nutzen können für meine rollläden.
Mir ist folgendes aufgefallen, wenn ich max interval auf 10 secunden setzte sonst nicht am default ändre passiert folgendes:
ich fahre zu erst nach 50 dann 99 dann wieder 50, jetzt kommt der bug das modul fährt weiter auf -3 oder auch mal -6 und hängt dann da...
im log steht:
2015.09.12 10:52:26 3: STELLMOTOR gpiorollo active, type=FhemDev
2015.09.12 11:02:17 3: STELLMOTOR gpiorollo Stop Problem: lastGuiState:-3 please report this error L.414
die letzte zeile wiederholt sich in einer endlosschleife...

workaround war für mich das max interval hochsetzen...

dann noch einen unverschämten feature request, während der rolladen läuft, dauert ja unterumständen lange, könntes sich der state doch auch schon änderen oder?


mfg Jan, vielen vielen dank für das Modul

TSB

Der Ansatz die i2c Relais direkt über den Gpio Port zu steuern klappt nicht:
2015.09.26 19:35:21 1: PERL WARNING: Can't exec "/usr/local/bin/gpio": Datei oder Verzeichnis nicht gefunden at ./FHEM/39_STELLMOTOR.pm line 119.
2015.09.26 19:35:21 1:

Die finden sich in meiner Raspberry Distro unter:
/sys/class/gpio/
Bzw. sind verlinkt auf:
gpio17 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio17


Da der Ansatz mit Gpio nicht funktionierte, habe ich auf FehmDev umgestellt und anschließend die unnötigen Attribute löschen wollen:

2015.09.26 19:25:04 5: Cmd: >deleteattr VorlaufMischer STMgpioPortRL<
2015.09.26 19:25:04 1: PERL WARNING: Deep recursion on subroutine "main::CallFn" at fhem.pl line 1872.
2015.09.26 19:25:04 1: PERL WARNING: Deep recursion on subroutine "main::CommandDeleteAttr" at ./FHEM/39_STELLMOTOR.pm line 519.
2015.09.26 19:25:04 1: PERL WARNING: Deep recursion on subroutine "main::STELLMOTOR_Attr" at fhem.pl line 3058.
Out of memory!


Die Lösung über FhemDev klappt allerdings auch nicht. Wie muss das Device benannt und eingerichtet sein?
STMfhemDevRL RelaisRL
STMfhemDevSTART RelaisSTART

Ich hätte erwartet, dass ich einfach ein passendes Device anlege:
define RelaisRL RPI_GPIO 15
define RelaisSTART RPI_GPIO 17

Die Schalter selbst funktionieren, werden aber vom STELLMOTOR nicht angesteuert.

Internals:
   DEF        FhemDev
   NAME       VorlaufMischer
   NOTIFYDEV  global
   NR         47
   NTFY_ORDER 50-VorlaufMischer
   STATE      33
   TYPE       STELLMOTOR
   CHANGETIME:
   Helper:
     Dblog:
       Outtype:
         Logdb:
           TIME       1443289721.66766
           VALUE      FhemDev
       Laststart:
         Logdb:
           TIME       1443288921.67253
           VALUE      1443288921.66537
       Locked:
         Logdb:
           TIME       1443288976.46828
           VALUE      0
       Position:
         Logdb:
           TIME       1443288976.42042
           VALUE      33
       Queue_lastdiff:
         Logdb:
           TIME       1443288976.44562
           VALUE      -0.136840840180715
       State:
         Logdb:
           TIME       1443289721.72085
           VALUE      33
       Stoptime:
         Logdb:
           TIME       1443288976.49071
           VALUE      0
   Readings:
     2015-09-26 18:42:01   DoResetAtStop   1443285721.87339
     2015-09-26 19:48:41   OutType         FhemDev
     2015-09-26 18:42:01   command_queue   0
     2015-09-26 19:35:21   lastStart       1443288921.66537
     2015-09-26 19:36:16   locked          0
     2015-09-26 19:36:16   position        33
     2015-09-26 19:36:16   queue_lastdiff  -0.136840840180715
     2015-09-26 19:48:41   state           33
     2015-09-26 19:36:16   stopTime        0
Attributes:
   STMcalibrateDirection R
   STMdebugToLog3 1
   STMfhemDevRL RelaisRL
   STMfhemDevSTART RelaisSTART
   STMgpioPortRL 15
   STMgpioPortSTART 17
   STMinvertOut 0
   STMlastDiffMax 1
   STMmapOffCmd 0
   STMmapOnCmd 0
   STMmaxDriveSeconds 240
   STMmaxTics 100
   STMpollInterval 0.1
   STMresetOtherDeviceAtCalibrate 0
   STMrlType  einzel
   STMtimeTolerance 0.01
   room       Brenner



Internals:
   CFGFN
   DEF        15
   NAME       RelaisRL
   NR         79
   RPI_pin    15
   STATE      off
   TYPE       RPI_GPIO
   CHANGETIME:
   Helper:
     Dblog:
       State:
         Logdb:
           TIME       1443289504.96513
           VALUE      off
   Readings:
     2015-09-26 19:44:01   Pinlevel        low
     2015-09-26 19:45:04   state           off
   Fhem:
     interfaces switch
Attributes:
   direction  output
   room       Brenner

TSB

Die Lösung meines Problems liegt darin, mittels eventMap on:1 off:0 die Schaltung auch bei 1 und 0 schalten zu lassen.

Unter dem Stellmotor Device VorlaufMischer sind die FhemDev Attribute wie folgt:
STMfhemDevRL MischerR
STMfhemDevSTART MischerL

Internals:
   CFGFN
   DEF        17
   NAME       MischerL
   NR         74
   RPI_pin    17
   STATE      0
   TYPE       RPI_GPIO
   CHANGETIME:
   Helper:
     Dblog:
       State:
         Logdb:
           TIME       1443363030.00132
           VALUE      0
   Readings:
     2015-09-27 16:18:10   Pinlevel        low
     2015-09-27 16:10:29   state           off
   Fhem:
     interfaces switch
Attributes:
   direction  output
   eventMap   on:1 off:0
   room       Brenner



Folgender Fehler ist mir noch aufgefallen, ich hatte als STMcalibrateDirection R angegeben. Das hat er bei der Kalibrierung auch brav gemacht. Allerdings wollte er beim setzen von Wert 88 nach rechts drehen - ich schätze das Programm ging davon aus, dass nach Kalibrierung nach rechts die Stellung ganz links ist (so als ob die Kalibrierung nach links erfolgt wäre).

Praktisch wäre in diesem Zusammenhang auch eine Auto Stellung, so dass ab einem Schwellwert nach Links oder Rechts kalibriert wird (also bei 70% Rechtsstellung kann er nach rechts kalibrieren und sonst nach links ...).

Warum fährt der Stellmotor nach der Kalibrierung nicht wieder auf die alte Position zurück?

Hauswart

Habt ihr vielleicht Tipps für die Bauteile (Relais)? :) Und wie ich diese am Raspberry Pi anschliessen muss?

Aus dem Schaltplan werde ich an sich schlau, nur der genaue Anschluss des Relais (Pin's usw) ist mir unklar.  8)


Edit: http://www.conrad.de/ce/de/Search.html?search=relais&filterKontaktart=1+Wechsler&filterNennspannung+Spule=5+V%2FDC würden alle diese Relais gehen? 5V Steuerspannung und 230V Schaltspannung (+ Wechsler)?
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

tets

an TSB: Heureka!!! Es funktioniert, Dein Tipp
"Die Lösung meines Problems liegt darin, mittels eventMap on:1 off:0 die Schaltung auch bei 1 und 0 schalten zu lassen."
war klasse, danke!!! war schon fast dabei alles hinzuschmeißen, da wäre ich allein nicht draufgekommen...

habe 1wire tempsensoren und 16 Relais an die IO-Ports angeschlossen
wen's interessiert hier mal mein programm, ist noch nicht perfekt - also die regelung an sich geht noch nicht, aber mischen geht nun ersteinmal.
bei gpio_1 ist die schlüsselstelle...

have fun!
----

attr global userattr cmdIcon devStateIcon devStateStyle icon room_map sortby structexclude webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global backupcmd /usr/local/bin/myBackupScript.sh
attr global holiday2we Bayern
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\

attr global sendStatistics onUpdate
attr global statefile ./log/fhem.save
attr global uniqueID ./FHEM/FhemUtils/uniqueID
attr global updateInBackground 1
attr global verbose 1
#attr global motd Error messages while initializing FHEM:\configfile: 0


define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }

define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB
# define Logfile FileLog ./log/fhem-%Y-%m.log Arduino:.*|OWX_28_24C94A030000:.*|OWX_28_4D27BF030000:.*|fbh_mischer:.*|fussbodenhzg_kalt:.*|fussbodenhzg_pumpe:.*|fussbodenhzg_warm:.*|heizung_kalt:.*|heizung_pumpe:.*|heizung_warm:.*|hzg_mischer:.*|puffer1_oben:.*|ventil_1:.*|ww_oben:.*|ww_pumpe:.*|ww_pumpe:value:.*

define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log

define bavaria holiday

define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
attr initialUsbCheck forwardReturnValue 1
# definiere FRM als IO-Device -
#   Baudrate 57600 ist default in der Standardfirmata
define arduino FRM /dev/ttyUSB0@57600
attr arduino room relais
attr arduino sampling-interval 20000
attr arduino verbose 1
define owx3 OWX 3
attr owx3 IODev arduino
attr owx3 interval 60

#-- Heizungs steuerung test----------------------------

# define n_FBH_Vorlauf1 at +*00:01:00 trigger n_FBH_Vorlauf

#define TempAussen at +*00:00:30 get temp_aussen temp

#schon definiert!? wahrscheinlich kann man die Variable direkt unten einbaun
#define FBH_tempVorlauf_Soll at +*00:00:30 get FBH_temp skaliert

#define FBH_Vorlauf dummy


#---------------- geht irgendwie nimmer seit die GPIOs über Dummy definiert werden, kommentiers mal aus
#define warmwassepumpe_zu_wohnzimmerofen_zuschalten THRESHOLD puffer1_oben gpio_7_ww_pumpe
#attr warmwassepumpe_zu_wohnzimmerofen_zuschalten number_format %.1f
#attr warmwassepumpe_zu_wohnzimmerofen_zuschalten state_cmd1_gt off
#attr warmwassepumpe_zu_wohnzimmerofen_zuschalten state_cmd2_lt on
#attr warmwassepumpe_zu_wohnzimmerofen_zuschalten state_format _m _dv _sc


#----------------
#des funktionierte früher an der Eingabezeile: {\system("gpio write 0 1 ")}
#jetzt funktioniert das:
#define 0_test RPI_GPIO 17
#attr 0_test direction output

#----------------
# GPIO's


define gpio_0_fbh_pumpe RPI_GPIO 17
attr gpio_0_fbh_pumpe direction output
attr gpio_0_fbh_pumpe room relais

#die beiden Lampen um 7:00 für 10 Minuten einzuschalten:
#define onAt at 07:00 set Lamp1,Lamp2 on-for-timer 600
#define onAt at 06:00 set gpio_0_fbh_pumpe on-for-timer 3600 #gehtirgendwie nicht

define a1_fbh at *05:59:00 set gpio_0_fbh_pumpe on
attr a1_fbh room relais
define a2_fbh at *07:00:00 set gpio_0_fbh_pumpe off
attr a2_fbh room relais
define a3_fbh at *10:59:00 set gpio_0_fbh_pumpe on
attr a3_fbh room relais
define a4_fbh at *20:00:00 set gpio_0_fbh_pumpe off
attr a4_fbh room relais

#Sommerbetrieb, im winter einfach mit raute auskommentieren
#define a_sommer_fbh at +*00:01:00 set gpio_0_fbh_pumpe off
#attr a_sommer_fbh room relais
define a_sommer_hzg at +*00:01:00 set gpio_4_hzg_pumpe off
attr a_sommer_hzg room relais

#WW zu kalt, Heizung abschalten
define a5_fbh at +*01:00 IF ([OWX_28_FA5EBF030000:temperature] <43) (set gpio_0_fbh_pumpe off)
attr a5_fbh room relais
define a6_hzg at +*01:00 IF ([OWX_28_FA5EBF030000:temperature] <43) (set gpio_4_hzg_pumpe off)
attr a6_hzg room relais

#WW zuschalten wenn Küchenofen waermer als WW geheizt wird
define a_ww at +*00:05:00 IF ([OWX_28_4D27BF030000:temperature] > [OWX_28_FA5EBF030000:temperature]+3) (set gpio_7_ww_pumpe on-for-timer 120)
attr a_ww room relais


#Sicherheit1 wenn Küchenofen zu heiss wird
define a_safety_kuechenofen1 at +*00:00:10 IF ([OWX_28_4D27BF030000:temperature] >73) (set gpio_4_hzg_pumpe on-for-timer 600)
attr a_safety_kuechenofen1 room relais
#Sicherheit2 wenn Küchenofen zu heiss wird
define a_safety_kuechenofen2 at +*00:00:10 IF ([OWX_28_4D27BF030000:temperature] >75) (set gpio_7_ww_pumpe on-for-timer 600)
attr a_safety_kuechenofen2 room relais


define gpio_1_fbh_mischer RPI_GPIO 18
attr gpio_1_fbh_mischer direction output
attr gpio_1_fbh_mischer eventMap on:1 off:0
attr gpio_1_fbh_mischer room relais


define gpio_2_fbh_mischer_warm RPI_GPIO 27
attr gpio_2_fbh_mischer_warm direction output
attr gpio_2_fbh_mischer_warm eventMap on:1 off:0
attr gpio_2_fbh_mischer_warm room relais



define gpio_3_ventil1 RPI_GPIO 22
attr gpio_3_ventil1 direction output
attr gpio_3_ventil1 room relais


define gpio_4_hzg_pumpe RPI_GPIO 23
attr gpio_4_hzg_pumpe direction output
attr gpio_4_hzg_pumpe room relais


define gpio_5_hzg_mischer RPI_GPIO 24
attr gpio_5_hzg_mischer direction output
attr gpio_5_hzg_mischer room relais


define gpio_6_hzg_mischer_kalt RPI_GPIO 25
attr gpio_6_hzg_mischer_kalt direction output
attr gpio_6_hzg_mischer_kalt room relais


define gpio_7_ww_pumpe RPI_GPIO 4
attr gpio_7_ww_pumpe direction output
attr gpio_7_ww_pumpe room relais

define gpio_8_Oel_u_Kaminkehrer RPI_GPIO 2
attr gpio_8_Oel_u_Kaminkehrer direction output
attr gpio_8_Oel_u_Kaminkehrer room relais

define gpio_9_ventil2 RPI_GPIO 3
attr gpio_9_ventil2 direction output
attr gpio_9_ventil2 room relais

define gpio_A_WW_Zirkulationspumpe RPI_GPIO 8
attr gpio_A_WW_Zirkulationspumpe direction output
attr gpio_A_WW_Zirkulationspumpe room relais

define gpio_B_WW_Ventil RPI_GPIO 7
attr gpio_B_WW_Ventil direction output
attr gpio_B_WW_Ventil room relais

#define gpio_12 RPI_GPIO 13
#attr gpio_12 direction output
#attr gpio_12 room relais

#define gpio_13 RPI_GPIO 19
#attr gpio_13 direction output
#attr gpio_13 room relais

#define gpio_14 RPI_GPIO 26
#attr gpio_14 direction output
#attr gpio_14 room relais

#define gpio_15 RPI_GPIO 14
#attr gpio_15 direction output
#attr gpio_15 room relais

#----------------
# OneWire Sensoren

define OWX_28_24C94A030000 OWTHERM DS18B20 24C94A030000
attr OWX_28_24C94A030000 IODev owx3
attr OWX_28_24C94A030000 alias keller_raumtemp_hzg
attr OWX_28_24C94A030000 model DS1822
attr OWX_28_24C94A030000 room Temperaturen
attr OWX_28_24C94A030000 tempHigh 75
attr OWX_28_24C94A030000 tempLow 70

define OWX_28_4D27BF030000 OWTHERM DS18B20 4D27BF030000
attr OWX_28_4D27BF030000 IODev owx3
attr OWX_28_4D27BF030000 alias kuechenofen
attr OWX_28_4D27BF030000 model DS1822
attr OWX_28_4D27BF030000 room Temperaturen
attr OWX_28_4D27BF030000 tempHigh 75
attr OWX_28_4D27BF030000 tempLow 70

define OWX_28_9974BF030000 OWTHERM DS18B20 9974BF030000
attr OWX_28_9974BF030000 IODev owx3
attr OWX_28_9974BF030000 alias FBH_Vorlauf
attr OWX_28_9974BF030000 model DS1822
attr OWX_28_9974BF030000 room Temperaturen
attr OWX_28_9974BF030000 tempHigh 75
attr OWX_28_9974BF030000 tempLow 70

define OWX_28_FA5EBF030000 OWTHERM DS18B20 FA5EBF030000
attr OWX_28_FA5EBF030000 IODev owx3
attr OWX_28_FA5EBF030000 alias WW_oben
attr OWX_28_FA5EBF030000 model DS1822
attr OWX_28_FA5EBF030000 room Temperaturen
attr OWX_28_FA5EBF030000 tempHigh 75
attr OWX_28_FA5EBF030000 tempLow 70

define OWX_28_7572BF030000 OWTHERM DS18B20 7572BF030000
attr OWX_28_7572BF030000 IODev owx3
attr OWX_28_7572BF030000 alias HZG_Puffer1_oben
attr OWX_28_7572BF030000 model DS1822
attr OWX_28_7572BF030000 room Temperaturen
attr OWX_28_7572BF030000 tempHigh 75
attr OWX_28_7572BF030000 tempLow 70

define OWX_28_54EF96060000 OWTHERM DS18B20 54EF96060000
attr OWX_28_54EF96060000 IODev owx3
attr OWX_28_54EF96060000 alias HZG_WHZ_Ofen_Vorlauf
attr OWX_28_54EF96060000 model DS1822
attr OWX_28_54EF96060000 room Temperaturen
attr OWX_28_54EF96060000 tempHigh 75
attr OWX_28_54EF96060000 tempLow 70
#-----------Logs und graphen
#
#------Temp_HZG_Kuechenofen
define Temp_HZG_Kuechenofen dummy
attr Temp_HZG_Kuechenofen event-on-change-reading state
attr Temp_HZG_Kuechenofen room xTemperaturen
#Dieser soll alle 5 Sekunden mit der aktuellen Temperstur aktualisiert werden:
define Temp_HZG_KuechenofenDummy at +*00:00:20 { my $d= ReadingsVal("OWX_28_4D27BF030000","temperature",0);; fhem("set Temp_HZG_Kuechenofen $d");;}
#
#------Temp_HZG_raumtemp
define Temp_HZG_raumtemp dummy
attr Temp_HZG_raumtemp event-on-change-reading state
attr Temp_HZG_raumtemp room xTemperaturen
#Dieser soll alle 5 Sekunden mit der aktuellen Temperstur aktualisiert werden:
define Temp_HZG_raumtempDummy at +*00:00:20 { my $d= ReadingsVal("OWX_28_24C94A030000","temperature",0);; fhem("set Temp_HZG_raumtemp $d");;}
#
#------Temp_HZG_WW_oben
define Temp_HZG_WW_oben dummy
attr Temp_HZG_WW_oben event-on-change-reading state
attr Temp_HZG_WW_oben room xTemperaturen
#Dieser soll alle 5 Sekunden mit der aktuellen Temperstur aktualisiert werden:
define Temp_HZG_WW_obenDummy at +*00:00:20 { my $d= ReadingsVal("OWX_28_FA5EBF030000","temperature",0);; fhem("set Temp_HZG_WW_oben $d");;}
#
#------Temp_HZG_FBH
define Temp_HZG_FBH dummy
attr Temp_HZG_FBH event-on-change-reading state
attr Temp_HZG_FBH room xTemperaturen
#Dieser soll alle 5 Sekunden mit der aktuellen Temperstur aktualisiert werden:
define Temp_HZG_FBHDummy at +*00:00:20 { my $d= ReadingsVal("OWX_28_9974BF030000","temperature",0);; fhem("set Temp_HZG_FBH $d");;}
#
#------Temp_HZG_Puffer1_oben
define Temp_HZG_Puffer1_oben dummy
attr Temp_HZG_Puffer1_oben event-on-change-reading state
attr Temp_HZG_Puffer1_oben room xTemperaturen
#Dieser soll alle 5 Sekunden mit der aktuellen Temperstur aktualisiert werden:
define Temp_HZG_Puffer1_obenDummy at +*00:00:20 { my $d= ReadingsVal("OWX_28_7572BF030000","temperature",0);; fhem("set Temp_HZG_Puffer1_oben $d");;}
#
#------Temp_HZG_WHZ_Ofen_Vorlauf
define Temp_HZG_WHZ_Ofen_Vorlauf dummy
attr Temp_HZG_WHZ_Ofen_Vorlauf event-on-change-reading state
attr Temp_HZG_WHZ_Ofen_Vorlauf room xTemperaturen
#Dieser soll alle 5 Sekunden mit der aktuellen Temperstur aktualisiert werden:
define Temp_HZG_WHZ_Ofen_VorlaufDummy at +*00:00:20 { my $d= ReadingsVal("OWX_28_54EF96060000","temperature",0);; fhem("set Temp_HZG_WHZ_Ofen_Vorlauf $d");;}
#
#
#-------------------
#------Temperaturlog---geloggt wird nur wenn sich ein Messwert aendert!!!
define FileLog_Temperatur FileLog ./log/Temperatur-%Y-%m.log Temp_HZG_Kuechenofen|Temp_HZG_raumtemp|Temp_HZG_WW_oben|Temp_HZG_FBH|Temp_HZG_Puffer1_oben|Temp_HZG_WHZ_Ofen_Vorlauf
attr FileLog_Temperatur logtype text
define SVG_FileLog_Temperatur_1 SVG FileLog_Temperatur:SVG_FileLog_Temperatur_1:CURRENT
attr SVG_FileLog_Temperatur_1 plotsize 800,600
attr SVG_FileLog_Temperatur_1 room Temperaturen
#
#-------------------
#------Relaislog---geloggt wird nur wenn sich ein Messwert aendert!!!
define FileLog_Relais FileLog ./log/Relais-%Y-%m.log gpio_0_fbh_pumpe|gpio_1_fbh_mischer|gpio_2_fbh_mischer_warm|gpio_3_ventil1|gpio_4_hzg_pumpe|gpio_5_hzg_mischer|gpio_6_hzg_mischer_kalt|gpio_7_ww_pumpe
attr FileLog_Relais logtype text
define SVG_FileLog_Relais_1 SVG FileLog_Relais:SVG_FileLog_Relais_1:CURRENT
attr SVG_FileLog_Relais_1 plotsize 800,600
attr SVG_FileLog_Relais_1 room Relais
#
#
define fbh_steller STELLMOTOR FhemDev
attr fbh_steller STMcalibrateDirection R
attr fbh_steller STMdebugToLog3 0
attr fbh_steller STMfhemDevRL gpio_2_fbh_mischer_warm
attr fbh_steller STMfhemDevSTART gpio_1_fbh_mischer
attr fbh_steller STMinvertOut 0
attr fbh_steller STMlastDiffMax 1
attr fbh_steller STMmapOffCmd 0
attr fbh_steller STMmapOnCmd 0
attr fbh_steller STMmaxDriveSeconds 226
attr fbh_steller STMmaxTics 100
attr fbh_steller STMpollInterval 0.3
attr fbh_steller STMresetOtherDeviceAtCalibrate 0
attr fbh_steller STMrlType wechsel
attr fbh_steller STMtimeTolerance 0.01
#attr fbh_steller STMgpioPortRL 27
#attr fbh_steller STMgpioPortSTART 18
#
#
define fbh_regler PID20 OWX_28_9974BF030000:temperature fbh_steller:STMmaxTics
define PID.FUBO.File FileLog ./log/PID.FUBO-%Y.log PID\.FUBO
attr PID.FUBO.File logtype text
define Stellmotor2start dummy

TSB

Hatte jetzt schon einige (wenige) Male das Problem, dass Stellmotor Amok läuft. Im Event-Monitor wirft das Modul ca. 50 Meldungen pro Sekunde aus und legt damit dann die Heizungssteuerung lahm.

Ein Neustart über die Konsole und auch ein Neustart durch Netzstecker ziehen löst das Problem nicht.
Erst ein Reset unter Stellmotor behebt den Fehler und das Modul läuft wieder Wochen/Monate ohne Beanstandung.

Hat wer ein solches Verhalten gehabt und kennt die Ursache?

defmod VorlaufMischer STELLMOTOR FhemDev
attr VorlaufMischer DbLogExclude DoResetAtStop,OutType,command_queue,lastStart,locked,queue_lastdiff,state,stopTime
attr VorlaufMischer STMcalibrateDirection L
attr VorlaufMischer STMdebugToLog3 0
attr VorlaufMischer STMfhemDevRL MischerR
attr VorlaufMischer STMfhemDevSTART MischerL
attr VorlaufMischer STMgpioPortRL 15
attr VorlaufMischer STMgpioPortSTART 17
attr VorlaufMischer STMinvertOut 0
attr VorlaufMischer STMlastDiffMax 1
attr VorlaufMischer STMmapOffCmd 0
attr VorlaufMischer STMmapOnCmd 0
attr VorlaufMischer STMmaxDriveSeconds 240
attr VorlaufMischer STMmaxTics 100
attr VorlaufMischer STMpollInterval 0.1
attr VorlaufMischer STMresetOtherDeviceAtCalibrate 0
attr VorlaufMischer STMrlType einzel
attr VorlaufMischer STMtimeTolerance 0.01
attr VorlaufMischer event-on-change-reading .*
attr VorlaufMischer room Brenner

setstate VorlaufMischer 0
setstate VorlaufMischer 2017-12-10 19:50:54 DoResetAtStop 1512931854.13447
setstate VorlaufMischer 2017-12-12 11:08:19 OutType FhemDev
setstate VorlaufMischer 2017-12-10 19:50:54 command_queue 0
setstate VorlaufMischer 2017-12-12 01:58:48 lastStart 1513040328.18491
setstate VorlaufMischer 2017-12-12 01:58:54 locked 0
setstate VorlaufMischer 2017-12-12 11:10:31 position 31
setstate VorlaufMischer 2017-12-12 11:10:31 queue_lastdiff -1.005386531353
setstate VorlaufMischer 2017-12-12 11:08:19 state 0
setstate VorlaufMischer 2017-12-12 01:58:54 stopTime 0


Event-Monitorausgabe (endlos die selben Angaben):

2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: -1.005386531353
2017-12-12 10:57:17 STELLMOTOR VorlaufMischer queue_lastdiff: 0
2017-12-12 10:57


Morgennebel

Hi,


ich habe ähnliche Probleme (gehabt). Ein Wechsel auf eine bessere WiFi-Verbindung und schnelleren Server reduzierte die Probleme.

Nach meiner Einschätzung ist FHEM irgendwo anders beschäftigt (Blocking Internetabfragen o.ä.) und kann die zeitkritische Steuerung des STELLMOTORS nicht umsetzen. Wenn es dann z.B. einen DNS-Fehler oder timeout gibt, läuft der Motor lustig 30+ Sekunden in eine Richtung.

Zur Zeit habe ich zwei DOIFs definiert, die in solchem Fall den STELLMOTOR resetten und calibrieren (eines für mehr als 100% und eines für weniger als 0%) und mich mit einer pushmessage informiert. Das funktioniert ganz gut.

Langfristig sollte helfen, das STELLMOTOR-Glied auf einen eigenen Pi oder eigene FHEM-Instanz auszulagern - d.h. Internet-Abfragen und andere blocking-Implementationen von STELLMOTOR zu trennen.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

TSB

Bei mir hängt der Pi am LAN Kabel. Passiert leider mittlerweile häufiger. Letztes Jahr kein einziges Problem, dieses Jahr vermutlich schon 6-8x passiert. Danke für den Tipp das mit einer Prüfroutine zu resetten, werde das mal in meine Heizungssteuerungsroutine implementieren.

Morgennebel

Zitat von: TSB am 15 Dezember 2017, 20:06:44
Bei mir hängt der Pi am LAN Kabel. Passiert leider mittlerweile häufiger. Letztes Jahr kein einziges Problem, dieses Jahr vermutlich schon 6-8x passiert. Danke für den Tipp das mit einer Prüfroutine zu resetten, werde das mal in meine Heizungssteuerungsroutine implementieren.

Versuch zusätzlich mal

attr global dnsServer <IP>

Bei mir zeigt es auf meinen lokalen pihole. Danach waren meine Probleme eigentlich minimal.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

TSB

Auch der Reset reichte nicht, musste noch ein shutdown restart ausführen, da Fhem selbst nicht mehr funktionierte, bzw. vermutlich keine Events mehr auslöste.

Ich weiß auch noch nicht welchen Wert ich vom Modul überwachen muss um den Reset und Neustart auszulösen. Welche DOIF Anweisung hast Du verankert?

Ist ein schwerwiegender Fehler im Modul oder Fhem selbst, dass das System dann nicht korrekt funktioniert und in meinem Fall dann die Heizung und Vorlauftemperatureinstellung nicht mehr läuft und es kalt wird ;)

Morgennebel

Hi,

schau mal hier:

DOIF-1 für STELLMOTOR größer als 100:


Internals:
   CFGFN     
   DEF        ([EG.HWR.Fussbodenmischer:position] > 100)
(set DI_MischerCommands disable)         ## CMD 1.1
(set EG.HWR.Fussbodenmischer calibrate)  ## CMD 1.2
(set EG.HWR.Fussbodenmischer reset)      ## CMD 1.3
(set EG.HWR.Fussbodenmischer 35)         ## CMD 1.4
(set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - Position groesser 100') ## CMD1.5
(set DI_MischerCommands initialize)      ## CMD 1.6
DOELSE
    ## CMD2
   NAME       DI_FBMischerGTHundred
   NR         464
   NTFY_ORDER 50-DI_FBMischerGTHundred
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2017-12-17 12:50:00   Device          EG.HWR.Fussbodenmischer
     2017-11-18 09:20:00   cmd             2
     2017-11-18 09:20:00   cmd_event       EG.HWR.Fussbodenmischer
     2017-11-18 09:20:00   cmd_nr          2
     2017-12-17 12:50:00   e_EG.HWR.Fussbodenmischer_position 38
     2017-11-18 09:20:00   state           cmd_2
     2017-12-10 15:43:08   wait_timer      no timer
   Regex:
   condition:
     0          ReadingValDoIf($hash,'EG.HWR.Fussbodenmischer','position') > 100
   devices:
     0           EG.HWR.Fussbodenmischer
     all         EG.HWR.Fussbodenmischer
   do:
     0:
       0          set DI_MischerCommands disable
       1          set EG.HWR.Fussbodenmischer calibrate
       2          set EG.HWR.Fussbodenmischer reset
       3          set EG.HWR.Fussbodenmischer 35
       4          set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - Position groesser 100'
       5          set DI_MischerCommands initialize
     1:
       0         
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      position: 38   << addLog
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   EG.HWR.Fussbodenmischer
     timerevent position: 38   << addLog
     triggerDev EG.HWR.Fussbodenmischer
     timerevents:
       position: 38   << addLog
     timereventsState:
       position: 38   << addLog
     triggerEvents:
       position: 38   << addLog
     triggerEventsState:
       position: 38   << addLog
   internals:
   itimer:
   readings:
     0           EG.HWR.Fussbodenmischer:position
     all         EG.HWR.Fussbodenmischer:position
   trigger:
   uiState:
   uiTable:
Attributes:
   room       EG.HWR,SYS_Events
   wait       0,180,10,10,10,10:0


DOIF-2 für Werte unter 0:


Internals:
   CFGFN     
   DEF        ([EG.HWR.Fussbodenmischer:position] < 0)
(set DI_MischerCommands disable)         ## CMD 1.1
(set EG.HWR.Fussbodenmischer calibrate)  ## CMD 1.2
(set EG.HWR.Fussbodenmischer reset)      ## CMD 1.3
(set EG.HWR.Fussbodenmischer 35)         ## CMD 1.4
(set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - negative Position') ## CMD 1.5
(set DI_MischerCommands initialize)      ## CMD 1.6
DOELSE
    ## CMD 2
   NAME       DI_FBMischerLTZero
   NR         465
   NTFY_ORDER 50-DI_FBMischerLTZero
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2017-12-17 12:55:00   Device          EG.HWR.Fussbodenmischer
     2017-11-18 09:20:00   cmd             2
     2017-11-18 09:20:00   cmd_event       EG.HWR.Fussbodenmischer
     2017-11-18 09:20:00   cmd_nr          2
     2017-12-17 12:55:00   e_EG.HWR.Fussbodenmischer_position 38
     2017-11-18 09:20:00   state           cmd_2
     2017-12-10 15:43:08   wait_timer      no timer
   Regex:
   condition:
     0          ReadingValDoIf($hash,'EG.HWR.Fussbodenmischer','position') < 0
   devices:
     0           EG.HWR.Fussbodenmischer
     all         EG.HWR.Fussbodenmischer
   do:
     0:
       0          set DI_MischerCommands disable
       1          set EG.HWR.Fussbodenmischer calibrate
       2          set EG.HWR.Fussbodenmischer reset
       3          set EG.HWR.Fussbodenmischer 35
       4          set PBNotification message 'Intelligentes Wohnen' | 'ALARM: Problem mit FB-Mischer - negative Position'
       5          set DI_MischerCommands initialize
     1:
       0         
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      position: 38   << addLog
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   EG.HWR.Fussbodenmischer
     timerevent position: 38   << addLog
     triggerDev EG.HWR.Fussbodenmischer
     timerevents:
       position: 38   << addLog
     timereventsState:
       position: 38   << addLog
     triggerEvents:
       position: 38   << addLog
     triggerEventsState:
       position: 38   << addLog
   internals:
   itimer:
   readings:
     0           EG.HWR.Fussbodenmischer:position
     all         EG.HWR.Fussbodenmischer:position
   trigger:
   uiState:
   uiTable:
Attributes:
   room       EG.HWR,SYS_Events
   wait       0,180,10,10,10,10:0


Dabei ist DI_MischerCommands meine STELLMOTOR-Steuerung und PBNotification eine Pushbullet-Alarmierung.

Die wait-Werte sind wichtig und mußt Du für Deinen Mischer anpassen.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

epsrw1

Hallo zusammen,

Der einfachste Weg ist ein AT .... ich lasse STELLMOTOR einmal täglich mit calibrate auf null laufen.
So werden timing-Differenzen durch langsame Reaktion von FHEM jeweils ausgemerzt.

Negative Werte oder zu große Werte würde ich eher auf der input-Seite suchen, das Modul setzt sich normalerweise nicht selbst auf unmögliche Positionen......

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

Morgennebel

Zitat von: epsrw1 am 27 Dezember 2017, 08:20:43
Der einfachste Weg ist ein AT .... ich lasse STELLMOTOR einmal täglich mit calibrate auf null laufen.
So werden timing-Differenzen durch langsame Reaktion von FHEM jeweils ausgemerzt.
Negative Werte oder zu große Werte würde ich eher auf der input-Seite suchen, das Modul setzt sich normalerweise nicht selbst auf unmögliche Positionen......

Nach meinen Erfahrungen ist das Problem nicht auf der INPUT-Seite. Hier ist mein DOIF zur Mischersteuerung:


   DEF        ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 22 and [RP_EG.HWR.FBPumpe_Sw] eq "on")
   (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})      ## Cmd 1: Schnell oeffnen
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 26 and [RP_EG.HWR.FBPumpe_Sw] eq "on")
   (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})      ## Cmd 2: Ganz langsam oeffnen
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 30 and [RP_EG.HWR.FBPumpe_Sw] eq "on")
   (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})      ## Cmd 3: Noch ein bisschen
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] < 32 and [RP_EG.HWR.FBPumpe_Sw] eq "on")
   (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]+1)})      ## Cmd 4: Noch ein bisschen
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] > 39)
   (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-1)})      ## Cmd 5: Viel zu heiss, schnell zu
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] > 38)
   (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-1)})      ## Cmd 6: Viel zu heiss, schnell zu
DOELSEIF ([EG.Heizung.Mischer.Vorlauf:temperature.avg] > 37)
   (set EG.HWR.Fussbodenmischer {([EG.HWR.Fussbodenmischer:position]-1)})      ## Cmd 7: Zu heiss, schnell zu
DOELSEIF ([03:50])
   (set EG.HWR.Fussbodenmischer calibrate, set EG.HWR.Fussbodenmischer reset)  ## Cmd 8: Calibrieren fuer Tagprogramm
DOELSEIF ([04:00])
   (set EG.HWR.Fussbodenmischer 40)                                            ## Cmd 9: Headstart, Ende der Nachtabsenkung
   NAME       DI_MischerCommands
   NR         204
   NTFY_ORDER 50-DI_MischerCommands
   STATE      cmd_7
   TYPE       DOIF
   READINGS:
     2017-12-27 11:22:39   Device          EG.Heizung.Mischer.Vorlauf
     2017-12-27 10:31:23   cmd             7
     2017-12-27 10:31:23   cmd_event       EG.Heizung.Mischer.Vorlauf
     2017-12-27 10:31:23   cmd_nr          7
     2017-12-27 11:22:39   e_EG.Heizung.Mischer.Vorlauf_temperature.avg 35.279
     2017-12-27 11:20:00   e_RP_EG.HWR.FBPumpe_Sw_STATE on
     2017-12-27 10:31:23   state           cmd_7
     2017-12-27 03:50:00   timer_01_c08    28.12.2017 03:50:00
     2017-12-27 04:00:00   timer_02_c09    28.12.2017 04:00:00
     2017-12-27 10:31:23   wait_timer      no timer
   Regex:
[...]
Attributes:
   cmdpause   60:120:360:480:60:180:300:0:0
   do         always
   room       EG.HWR,SYS_Events
   verbose    5
   wait       180:240:360:600:90:180:420:0:0


Der Mischer wird jeden Tag calibriert und geresettet. Jeder Steuerbefehl ändert die Position um +-1 maximal. Trotzdem habe ich manchmal Stellungen mit -1270 und +255. Das würde bedeuten, daß ein DOIF-Kommando über 1300mal ausgeführt wurde - trotz mehrminütiger Verzögerung.

Ich tippe weiterhin auf STELLMOTOR, das durch einen Blocking-Aufruf eines anderen Moduls nicht rechtzeitig stoppt und weiterfährt.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

tpoetschan

Hallo zusammen :-)

Ich habe ähnliche effekte ... wenn auch nicht so krass wie manch anderer.

Mein Conf:


Raspi2
Eltako FSR14SSR (per FAM14 + FGW14-USB angebunden)

Der Raspi ist mit PWM usw schon ziemlich "belastet".
Apptime sagt mir:

name                                     function                               max    count      total  average   maxDly   avgDly TS Max call     param Max call
tmr-PWM_Calculate                        HASH(0x2e845c8)                       3852       36  115431.00  3206.42  2733.85  1221.36 01.01. 17:24:36 HASH(PWM.FussbodenHeizung)
tmr-OWDevice_UpdateValues                HASH(0x27fab60)                       2355       36   46524.24  1292.34  2880.54   170.45 01.01. 17:29:57 HASH(FBH.VorlaufTemp)
tmr-OWDevice_UpdateValues                HASH(0x317dd28)                       2244       36   48210.44  1339.18  1847.73   189.47 01.01. 17:37:50 HASH(LWP.Vorlauf)
tmr-STELLMOTOR_GetUpdate                 HASH(0x2e845f8)                       2207    15105   19344.58     1.28  5639.38   227.91 01.01. 17:20:37 HASH(FBH.Mischer)

Der Mischer "verfährt" sich oft.
Er zeigt Position 1 an, steht jedoch auf 50 (wenn man davorsteht).
Ich muss eigentlich mehrmals täglich kalibrieren.

Hat jemand eine Idee?
Ich habe nach Wiki erst mal den Pollinterval auf 0.5 hoch. (War bis dato 0.1 - apptime sah so aus:

name                                     function                               max    count      total  average   maxDly   avgDly TS Max call     param Max call
tmr-PWM_Calculate                        HASH(0x2e845c8)                       3782        3   10212.97  3404.32  2211.28  1276.92 01.01. 17:02:11 HASH(PWM.FussbodenHeizung)
tmr-STELLMOTOR_GetUpdate                 HASH(0x2e845f8)                       2283     3528    5207.67     1.48  7641.73    86.07 01.01. 17:02:13 HASH(FBH.Mischer))



Viele Grüße und vielen Dank!