Pool Controller

Begonnen von bugster_de, 01 Mai 2014, 22:34:49

Vorheriges Thema - Nächstes Thema

bugster_de

EDIT: ich habe mein Bastelmodul hier mal gelöscht, da es seit langer Zeit ein viel besseres Modul gibt und wir sonst etwaige Newcomer verwirren. Im weitere Verlauf dieses Threads findet sich die jeweils aktuellste Version. Einfach mal von hinten nach vorne lesen.


Hallo Leute,

ich habe für meinen Pool den Pool Controller von Frank im Einsatz:
http://rz-home.de/~fkiesow/
und hier:
http://rz-home.de/~fkiesow/Solarsteuerung/solarsteuerung.htm

Dieser regelt Chlor, pH etc. automatisch. Damit ich die Werte aber in FHEM sehen kann, habe ich mir ein kleines Modul geschrieben. Der Kreis der potentiellen Nutzer ist sicherlich sehr klein (FHEM + Pool + Franks System = potentieller Nutzer). Ich stelle es aber trotzdem mal hier rein.

Anlegen mit:
define mypool POOLCONTROL <IP>



Jumbo

Hi

ich kriege ne Fehlermeldung wenn ich das Modul laden will :

ERROR:

Cannot load module POOLCONTROL

JoWiemann

#2
Hallo,

irgendwie fehlt da etwas im Modul. Es wird eine Routine:


GU_Set_Info( info, "Pool Controller", "pH ist wieder in Ordnung ($phstr)" );


mehrfach aufgerufen, die ich im Modul nicht finde. Auch entspricht der Parameter info keiner Perl-Syntax.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

bugster_de

stimt, da hast Du Recht. Diese Routine ist bei mir in der 99_myUtils.pm untergebracht und steuert das Versenden der Nachrichten auf den verschiedenen Kanälen (Log-File, Webinterface, Push-Over etc.). Einfach die Zeile rausschmeissen.

schka17

Hallo Bugster,

der Nutzerkreis ist vielleicht gar nicht so klein, ich habe die Zeile auch entfernt, aber das scheint nicht alles zu sein, ich bekomme danach diese Fehlermedungen:

2015.09.19 20:20:50 1: reload: Error:Modul 98_POOLCONTROL deactivated:
syntax error at ./FHEM/98_POOLCONTROL.pm line 255, near ""nicht arbeiten. Einmal mit Profis arbeiten..." )"
syntax error at ./FHEM/98_POOLCONTROL.pm line 323, near ""pH bitte kontrollieren ($phstr)" )"

2015.09.19 20:20:50 0: syntax error at ./FHEM/98_POOLCONTROL.pm line 255, near ""nicht arbeiten. Einmal mit Profis arbeiten..." )"
syntax error at ./FHEM/98_POOLCONTROL.pm line 323, near ""pH bitte kontrollieren ($phstr)" )"
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

dadoc

Auch ich habe den Poolcontroller im Einsatz. Ihr wisst, dass es ein (mittlerweile) funktionierendes Modul gibt?
http://forum.fhem.de/index.php/topic,37599.msg299030.html#msg299030
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

charlie71

Hallo Leute,

ich hab das PoolController Modul ein wenig aufgeräumt und verbessert.

Neues Feature:  "Non-Blocking".
Fixes: 

  • internal timer resourcen werden nun richtig freigegeben
  • BulkUpdate werden nun richtig gemacht
  • Sonderzeichen in Namen werden nun richtig dargestellt

Bitte um Feedback falls es noch wünsche / Probleme gibt

lG
Charlie71

dadoc

Sehr schön, vielen Dank Charlie71! Läuft bei mir auf Anhieb rund.
Ich werde nun mal beobachten, ob die Perfmon-freeze-Meldungen weniger werden bzw. nur noch anderen Prozessen zuzordnen sind.
Was Wünsche angeht: Direkt zum Modul fällt mir da momentan nichts ein, außer dass es natürlich schick wäre, wenn man die Werte direkt und live aus dem Poolcontroller bekäme und nicht aus dessen Logfile. Nur so könnte man kritische Events (bei mir z.B. der Fall, dass die Elektrolysezelle läuft und der Durchfluss ausfällt) auch über fhem abfangen (direkt im Controller geht das ja sowieso schon).
Die Performance der TabletUI-Charts zu den Pool-Werten ist, je näher man sich 24.00 Uhr nähert, lausig, d.h. speziell auf dem iPad (4) dauert es lange, bis sich die Grafiken aufbauen. Ich werde erst mal schauen, ob man das durch Verschlanken der Logfile auf nur die Werte, die man tatsächlich auswertet, beschleunigen kann.
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

sucht

super auch vom mir besten Dank an dich. Bin gerade am testen und werde berichten

sucht

Die ersten Test verliefen super. Danke nochmal

Als Wünsche hätte ich noch folgendes

man kann die Relais mit folgenden Befehlen schalten wenn man so was noch einbauen könnte das wäre super
wichtig aber ist Der Request muss aber immer die Authentifizierung (also Username/Passwort) mit enthalten
Username und Passwort werden ja übergeben mit den Variablen in den Zeilen 40 und 41.

http://controller_ip/SetState.pl?R1=1&RT1=0
schaltet z.B. Relais 1 permanent ein.

http://controller_ip/SetState.pl?R1=1&RT1=5000
schaltet Relais1 für 5000ms ein, dann wieder automatisch aus.

http://controller_ip/SetState.pl?R1=1&RT1=0&R2=1&RT2=0&R3=1&RT3=0
schaltet Relais 1-3 permanent EIN.


charlie71

Hallo

vielen Dank für eurer Feedback.
@Dadoc: Untersuch mal dein System mit apptime (http://www.fhemwiki.de/wiki/Apptime), damit kannst du module mit langen Responsezeiten  lokalisieren.

Das Problem mit den Plots liegt daran, dass sich bis zum Abend sehr viele Datenpunkte akkumulieren. Das Darstellen dieser Datenpunkte dauert dann eben.
Lösungsvorschlag:
event-on-change-reading (http://www.fhemwiki.de/wiki/Event-on-change-reading) in Verbindung mit event-min-interval
Beispiel:
1)Die CPU Temperatur soll nur einen Event senden, wenn sich die Temperatur mehr als 0.5°C geändert hat.
2)Der Zustand der Filterpumpe soll nur einen Event senden, werden wenn sie sich ändert (von 0 -> 1 oder von 1 -> 0)
3)Die Temperatur im Technikraum soll nur einen Event senden, wenn sich die Temperatur mehr als 0.5°C geändert hat.
4)Es soll jedoch mindestens alle 20min ein Event gesendet werden

attr poolController event-on-change-reading CPU_Temp:0.5,Absorber:0.5,Absorberpumpe:1,Technikraum:0.5
attr poolController event-min-interval CPU_Temp:1200,Absorber:1200,Absorberpumpe:1200,Technikraum:1200


@sucht
Guter Vorschlag, werde ihn in die nächste Release übernehmen.

lg
Charlie71


dadoc

Hi Charlie71,
ich habe das Abfrageintervall nun mal auf 10 min gesetzt - und habe alle 10 Minuten einen freeze im Log.
2016.01.25 09:12:53 1: Perfmon: possible freeze starting at 09:12:51, delay is 2.533
2016.01.25 09:22:53 1: Perfmon: possible freeze starting at 09:22:51, delay is 2.546
2016.01.25 09:32:55 1: Perfmon: possible freeze starting at 09:32:51, delay is 4.128
2016.01.25 09:42:53 1: Perfmon: possible freeze starting at 09:42:51, delay is 2.531
2016.01.25 09:52:53 1: Perfmon: possible freeze starting at 09:52:51, delay is 2.686
2016.01.25 10:02:53 1: Perfmon: possible freeze starting at 10:02:51, delay is 2.531

apptime-Check habe ich zur Sicherheit auch noch gemacht: Es ist das myPoolController-Modul (GetUpdate):
                        name             function    max  count    total  average maxDly
      tmr-myPoolcontroller_GetUpdate       HASH(0xde5f58)   4893      2     7839  3919.50     98 HASH(Pool)

Vielleicht durchschaue ich das ja nicht so ganz, aber müssten bei einem non-blocking request die freezes nicht verschwinden, da der Prozess außerhalb von fhem läuft?


Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

charlie71

Hallo dadoc,

Apptime zeigt dass der Auftruf der Funktion tmr-myPoolcontroller_GetUpdate maximal 4893ms gedauert hat.
Das ist eigenartig: ich habe bei mir testhalber eine falsche IP eingegeben aber apptime zeigt mir für tmr-myPoolcontroller_GetUpdate maxmial 19ms an.

Bitte prüfe ob beim update und beim anschließenden FHEM Neustart etwas schiefgegangen ist.
lG
Charlie71


dadoc

Bei der Ferndiagnose bemerke ich gerade, dass es vor Ort heute früh um kurz nach 7 Uhr einen Stromausfall gegeben hat. Als der Strom zurückkam, hat die Homematic CCU nicht - wie es normal wäre - das Wired-Relais, an dem der Poolcontroller hängt, wieder eingeschaltet. Das kommt manchmal vor, dann hilft auch nur ein Neustart, den ich soeben gemacht habe.
Was mich wundert ist dass es im fhem-Log keine Fehlermeldungen gab aus der Zeit gab, in der der Poolcontroller stromlos war. Ich habe eben mal zuerst mit falscher IP (192.168.17...) und dann mit unerreichbarer IP getestet, was beides Logeinträge erzeugt:
Error: Can't get  -- 500 Can't connect to 192.168.17.155:8056 (timeout)
bzw.
Error: Can't get  -- 500 Can't connect to 192.168.0.155:8056 (No route to host)
Anscheinend hat die Fritzbox am anderen Ende fhem vorgegaukelt, dass es da etwas zu holen gäbe...
Nun ja, jetzt liegt Apptime auch bei knapp 30 ms für den Prozess - werde weiter beobachten.
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

sucht

Bei mir fi de ich keine freie Einträge im log nur zur info