Neues Modul - Heating_Control, WeekdayTimer

Begonnen von Dietmar63, 04 Januar 2013, 19:42:26

Vorheriges Thema - Nächstes Thema

Dietmar63

 Ich habe mir mal erlaubt das Modul zu verändern.
 Folgende Änderungen:

 Liste der Schaltzeiten mit Leerzeichen getrennt
 Die Temperatur ist von der Uhrzeit mit Pipe (|) getrennt. Dieses erhöht IMHO mit dem vorherigen Punkt die Lesbarkeit immens

So ähnich hatte ich es auch vor - es funktionierte nur nicht. Die Ursache habe ich zunächst nicht gesucht. Es war mir wichtig das Modul zu Laufen zu bringen. Ich meine mich erinnern zu können, dass das Problem darin bestand, dass ich in der Funktion Heating_Control_Define in der Variablen $def immer nur die erste Schlatzeit bekommen habe. Somit war ich zunächst gezwungen dafür zu sorgen, dass der Parameter switchingtimes als ein Parameter erkannt wurde. Wie Du es gemacht hast, habe ich nicht herausgefunden. Ich hoffe es funktioniert.


 Als STATE Initialzustand wird die aktuelle Temperatur des Thermostates ausgelesen
 Es werden nun auch MAX Thermostate unterstützt
 neues Reading: nextValue, zeigt die nächste zu wechselnde Temperatur an
 an den aktuellen Entwicklungsstand von fhem.pl angepasst, insbesondere ReadingsBulkUpdate
 Codeoptimierung: einige interne Variablen in den {helper} Bereich verlagert
 kleinere Codeoptimierungen

Ich bin mit den Änderungen natürlich einverstanden, kann sie aber im Moment nicht testen. Ich werde das vermutlich morgen machen. Wie oben schon beschrieben, es ist mein erstes Modul, somit kenne ich nocht nicht alle Feinheiten, um korrekte Module zu schreiben.

 Bitte um Tests und Rückmeldungen

 Wenn der Author nicht dagegen hat würde ich auch die Doku schreiben (gibt es da ggf schon etwas??) und nach ausführlichen Tests und Rückmeldungen bei Buggy-free ins FHEM-svn schieben. ggf kann ich auch dem author anbieten ihm bei support unter die arme zu greifen

Wenn Du willst kannst du gern eine Doku schreiben. Es gibt nichts als das Modul und diesen Thread. Ich habe noch keine Sourceforge-id, somit kann ich eh noch nicht einchecken. Im Übrigen: Du warst ja richtig fleißig!
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Damian

Wenn wir schon bei Änderungen sind:

Wie wäre es mit einem Wochenprogramm, also Schaltzeiten abhängig von den Wochentagen, wie es jedes Wandthermostat unterstützt.

Ich denke, dass es ein sehr wichtiges Feature ist, um die Sache praxistauglich zu sein.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Dietmar63

kann man mit dem vorhandenem Modul ja machen:

Einträge in fhem.cfg:


define HC-So  Heating_Control heizung.01     15:00:25_15:30:21_17:30:22.5       { fhem ("set @ desired %")  if($wday == 0) }
define HC-Mo  Heating_Control heizung.01     15:00:25_15:30:21_17:30:22.5       { fhem ("set @ desired %")  if($wday == 1) }
define HC-Di  Heating_Control heizung.01     15:00:25_15:30:21_17:30:22.5       { fhem ("set @ desired %")  if($wday == 2) }
define HC-Mi  Heating_Control heizung.01     15:00:25_15:30:21_17:30:22.5       { fhem ("set @ desired %")  if($wday == 4) }
...


wobei ich nicht glaube, dass man jeden Tag andere Zeiten schalten möchte. Aber wer will kann, und es ist trotzdem übersichtlich!

wer es nicht so detailiert möchte macht es so:


define HC-Sa-So  Heating_Control heizung.01     15:00:25_15:30:21_17:30:22.5       { fhem ("set @ desired %")  if($we) }
define HC-Mo-Sa  Heating_Control heizung.01     15:00:25_15:30:21_17:30:22.5       { fhem ("set @ desired %")  if(!we) }
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Damian

Zitat von: orti-otto schrieb am Di, 15 Januar 2013 19:39kann man mit dem vorhandenem Modul ja machen:

In der Tat:)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tobias

Ich bin ab prüfen, ggf umsetzen, wie man das machen kann. Ich finde es schon userFriendly wenn man pro Thermostat nur eine(!) Definition angeben kann.
define HCW1  Heating_Control heizung.01     15:00|25 12345|15:30|21 24|17:30|22.5
Bedeutung der Schaltzeiten: <Nr der Tage>|<Uhrzeit>|<Temperatur>

Die Schaltzeit 15Uhr gilt jeden Tag da keine Tage angegeben wurden.
Die Schaltzeit 15:30 gilt nur werktags, Mo-Fr
Die Schaltzeit 17:30 gilt nur Die und Do

Mo = 1, ..... So = 7

Die Angabe Condition|Command bleibt wie gehabt
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Damian

Zitat von: Tobias schrieb am Mi, 16 Januar 2013 08:15Ich bin ab prüfen, ggf umsetzen, wie man das machen kann. Ich finde es schon userFriendly wenn man pro Thermostat nur eine(!) Definition angeben kann.
define HCW1  Heating_Control heizung.01     15:00|25 12345|15:30|21 24|17:30|22.5
Bedeutung der Schaltzeiten: <Nr der Tage>|<Uhrzeit>|<Temperatur>

Die Schaltzeit 15Uhr gilt jeden Tag da keine Tage angegeben wurden.
Die Schaltzeit 15:30 gilt nur werktags, Mo-Fr
Die Schaltzeit 17:30 gilt nur Die und Do

Mo = 1, ..... So = 7

Die Angabe Condition|Command bleibt wie gehabt

Könntest du bitte diese Version zum Testen bereitstellen.

Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Hallo miteinander,

falls es jemanden interessiert, ich habe das PID-Modul für Fußbodenheizung modifiziert.

Ich kann jetzt mit dem Modul 1-Wire Temperatursensoren auslesen und beliebige ON/OFF-Aktoren schalten, die dann wiederum konventionelle 230V Stellantriebe schalten. Lässt sich nun wunderbar mit dem Heating_Control-Modul kombinieren.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Dietmar63


define HCW1  Heating_Control heizung.01     15:00|25 12345|15:30|21 24|17:30|22.5


ich finde nicht dass die Erweiterungen mit den Wochentagen wirklich übersichtlicher ist.

besser wäre:

define HCW1  Heating_Control heizung.01     15:00|25 Mo-Fr|15:30|21 Mo,Di,Sa|24|17:30|22.5


Bei komplizierten Verteilungen der Heizzeiten, ist das aus meiner Sicht nicht gut zu pflegen .
die gesamten Heizzeiten in einer Zeile unterzubringen halte ich für nicht möglich.

ich müßte folgende Zeilen zusammen erfassen.


define HeizungKueche_wt       Heating_Control HeizungKueche 05:35:25_06:30:22_07:00:18___12:00:25_12:30:22_14:00:19_15:30:20_17:45:22_18:30:18  (!$we &&      !isVerreist())
define HeizungKueche_we       Heating_Control HeizungKueche 06:45:25_07:30:22_09:00:19___12:00:22__________14:00:20___________________18:30:20  ( $we &&      !isVerreist())
#
define HeizungWohnen_wt       Heating_Control HeizungWohnen 15:00:25_15:30:21_17:30:22.5_20:00:22_22:00:18                                      (!$we &&      !isVerreist())
define HeizungWohnen_we       Heating_Control HeizungWohnen 12:00:25_12:30:22_14:00:21____________22:00:18                                      ( $we &&      !isVerreist())
 


Bei mir gibt es zurZeit nur die Unterscheidung zwischen Werktags und Wochenende.
ich habe mal Percode gesucht wie man mehre Tage in Perl abfragen kann:


if( $wday ~~ [ 1, 2, 3 ] )   ; Mo, Di, Mi


Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

wenn ich deine Version des Moduls lade bekomme ich einen Fehler:


2013.01.16 20:43:59 3: BefehlHC return value: Global symbol "$readingFnAttributes" requires explicit package name at ./FHEM/98_Heating_Control.pm line 42.

2013.01.16 20:43:59 3: reload 98_Heating_Control : Global symbol "$readingFnAttributes" requires explicit package name at ./FHEM/98_Heating_Control.pm line 42.

 Global symbol "$readingFnAttributes" requires explicit package name at ./FHEM/98_Heating_Control.pm line 42.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

jetzt funzt es auch bei mir - ich habe nicht die neueste Version von fhem ...
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Stefan 69

Hallo,

ist sicher ne blöde Frage, aber wie komme ich an das modifizierte PID-Modul von Damian?

Danke, Gruß Stefan

Damian

Zitat von: Stefan 69 schrieb am Do, 17 Januar 2013 16:17Hallo,

ist sicher ne blöde Frage, aber wie komme ich an das modifizierte PID-Modul von Damian?

Danke, Gruß Stefan

Es ist keine blöde Frage, denn die Anpassungen habe ich bisher nur auf meinem Rechner gemacht und nicht veröffentlicht. Die Lösung ist nicht allgemein gültig, da ich das PID-Modul für mich so umgebaut habe, dass es nicht mehr zum alten PID kompatibel ist.

Da es nur ein einfaches Thermostat nachbildet ohne PID-Regelung, hat es mit dem ursprünglichen PID-Modul nicht mehr viel zu tun.

Wenn natürlich Interesse besteht würde ich mein Modul entsprechend anders benennen und hier zum Download bereitstellen, da ich bisher, wie die anderen Autoren hier, kein offizieller Entwickler von FHEM-Modulen bin.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Stefan 69

DANKE!

Lasse mir das mal durch den Kopf gehen.

Gruß Stefan

teggi

Hi Damian,

Zitatfalls es jemanden interessiert, ich habe das PID-Modul für fußbodenheizung modifiziert.

ja, das interessiert mich in der Tat brennend.

Kannst Du dein angepasstes Modul mal hier posten?

Teggi

Damian

Zitat von: teggi schrieb am Fr, 18 Januar 2013 09:51Hi Damian,

Zitatfalls es jemanden interessiert, ich habe das PID-Modul für fußbodenheizung modifiziert.

ja, das interessiert mich in der Tat brennend.

Kannst Du dein angepasstes Modul mal hier posten?

Teggi

siehe hier:

Link

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF