Funkreduzierung für Schaltänderungen

Begonnen von Snorre, 02 März 2013, 15:21:29

Vorheriges Thema - Nächstes Thema

Snorre

Hallo,

ich stehe irgendwie sowas auf den Schlauch, wie ich aus meiner Frostschaltung (Widerstand schalten in Reihe des Aussenfühlers der Heizung) eine Änderung reinsetzen kann, so dass die ständigen Schaltbefehle reduziert werden. Alle 3 min schickt der Fhem einen Ein oder Ausschaltbefehl. Geht zwar, finde ich aber persönlich zu hoch. Gibt es einen Befehl der nur aktiv wird, wenn eine Änderung ansteht?

Die Temperatur kommt vom Aussentemperaturfühler und aktiviert einen FS20 Schalter über den Fhem.


#Frostschutz Aus Schaltung
define tempNotify notify Outdoor:T:.* {\
 my $temp_Outdoor = ReadingsVal("Outdoor","temperature","20");;\
 my $hm = sprintf("%%02d:%%02d", $hour, $min);;\
 if (($temp_Outdoor <= 4) && ($hm gt "22:00") or ($hm lt "06:00")) {fhem "set HzFrost on";;}\
 elsif (($hm gt "06:01") && ($hm lt "21:59")) {fhem "set HzFrost off";;}\
 else {fhem "set HzFrost off";;}\
}


Danke!

Zrrronggg!


Ich verstehe auch noch nicht, wieso dein Konstrukt so... komplex ist, aber eventuell kapiere ich nicht, wie das Thermoemeter geht, das du verwendest.
Da ich deinen Code auf die schnelle nicht verstehe: Kannst du mir sagen, was du machen willst?

Wenn es zwischen 22 und 6 Uhr ist und kälter als 4 Grad, dann soll HzFrost on, sonst aus? Ist es das?

Wenn ja: Reicht es dir, die Intervalle zu verlängern oder willst du den Sendebefehl nur dann haben, wenn er anders ist als der aktuelle Zustand?
(beides machbar)

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

ollir

Hi,

wie wäre es, wenn du nur schaltest, wenn sich die Temperatur ändert?
z.B.:
Outdoor Sensor mittels event-on-change-reading temperature das notify nur bei Änderung der Temp ausführen lässt

VG
Olaaf

Zrrronggg!

ZitatOutdoor Sensor mittels event-on-change-reading temperature das notify nur bei Änderung der Temp ausführen lässt

Oder in etwa ein halbes Dutzend andere Lösungen....

Wenn ich genau überlege, würde mich an deiner Lösung aber stören, dass wenn  wenn die Temperatur im Laufe der Nacht langsam von sagen wir mal 4 Grad auf -6 Grad sink, es mal mindestens 10 Auslösungen gibt, die aber alle immer das selbe Kommando senden. Das kann man schöner machen.

Ich würde das define gar nicht durch die Temperatur triggern, sondern einfach alle 10 Minuten testen, ob
- es unter 4 Grad ist
- innerhalb der fraglichen Uhrzeit
- und HzFrost OFF ist
nur wenn all das zutrifft sende ich ein set HzFrost on

Das gibt dann nur 1 Event: 1x an wenn die Bedingungen das erste mal zutreffen.

Grob so:

Zitatdefine Frostschutz_an at  +*00:10:00  { if (($temp_Outdoor < 5)  && Value("HzFrost ") eq "off"  &&  !isday())  { fhem ("set HzFrost  on ") } }

(ich hab mal das ganze Uhrzeitgenudel durch "isday" ersetzt, das sich ja nach dem Sonnenstand richtet und sich damit auch automatisch den langen Winternächten anpasst. Ich verstehe aber auch nicht, warum überhaupt gegen die Uhrzeit getestet werden soll. Wenn's Tag ist darf die Heizung ruhig einfrieren?)

Zum Auschalten arbeitet man jetzt entweder mit einem angehängeten else if Value("HzFrost ") eq "on"    { fhem ("set HzFrost  off ") }
oder bastelt sich ein define Frostschutz_aus at  +*00:10:00 , das dann die Bedingungen ähnlich aber negativ testet und auschaltet:

Zitatdefine Frostschutz_aus at  +*00:10:00  { if (($temp_Outdoor > 4)  && Value("HzFrost ") eq "on"  &&  isday())  { fhem ("set HzFrost  off ") } }

Aber ich weiss eben nicht genau was Snorre machen will bzw. wie und warum die Bedingungen verwendet werden sollen.
Das sind alles so Detailfragen und daher meinte ich: erstmal sollten wir wissen, was er genau haben will.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Snorre

Moin,

ich wollte mich eigentlich am WE mich absolut diesem Thema widmen, allerdings hat mich meine Familie anderer Themen bedacht!

Aber vielen Dank für die Antworten auf das angeschnittene Thema!

Ich hatte mal mein o.g. Script aus einem alten aus dem alten Google "Forum" zusammengebastelt. Funktionierte bisher auch so.

Allerdings wenn es einfacher geht, warum auch nicht. Bin für alles offen.

Zum Hintergrund:
Ich habe ein Viessmann 1000 Heizung, und die kann man nicht sperren, wenn es kälter 4°C ist und kein Warmwasser und Heizungbedarf zw. 22.00 und 6.00 angefordert wird. Die Heizung stellt sich ohne Speerung dann so ein, dass obwohl kein Heizbedarf ist, die Umwälzpumpe und den internen Heizkrauslauf am Leben hält. Es könnte ja sein, das in einem Haus mit innen liegende Rohren direkt an der Hauswand OHNE Dämmung aussen diese dann einfrieren könnten, wenn man den Lauf nicht aufheizt. Aber ich habe eine Dämmung und ich bin der Meinung, wenn man 4 Wochen bei -10°C ALLE Fenster und Türen aufreisst, dann könnte man in die Nähe kommen, dass die Rohre einfrieren. Macht man das??? NEIN!
Also wird ein Widerstand in Reihe zum Heizungsfühler zugeschaltet, der jetzt der Heizung der Steuerung eine höhere Temperatur (grösser 4°C) vorgaukelt und somit nicht in die interne Heizgeschichte reinläuft. Die Heizung bleibt dann für die vorgebene Periode aus.

Eigentlich sollte der Code nicht HzFrost heissen, sondern Hz_Frost_Nein, da ich die Viessmann vorgebene unterbinden möchte. Werde ich noch ändern.

"Wenn es zwischen 22 und 6 Uhr ist und kälter als 4 Grad, dann soll HzFrost on, sonst aus? Ist es das?" JA

So sieht meine Log aus:
2013.03.01 21:20:44 3: FS20 set HzFrost off
2013.03.01 21:23:40 3: FS20 set HzFrost off
2013.03.01 21:47:13 3: FS20 set HzFrost off
2013.03.01 22:13:41 3: FS20 set HzFrost on
2013.03.01 22:16:38 3: FS20 set HzFrost on
2013.03.01 22:28:24 3: FS20 set HzFrost on
2013.03.01 22:31:20 3: FS20 set HzFrost on
2013.03.01 22:37:13 3: FS20 set HzFrost on
2013.03.01 22:51:56 3: FS20 set HzFrost on
2013.03.01 22:54:52 3: FS20 set HzFrost on

Also viel los im Funkverkehr.

Ich werde mal auf die von euch geschickten Info mir mal weitere Gedanken machen.

Sonst schönen und geruhsamen Sonntag an alle!

Zrrronggg!

Die alte Googel Group ist der Vorläufer von diesem hier, alle Beiträge daraus findest du auch hier.

Die ganze Mimik die du da kopiert hast ist zu komplex für das was du machen willst.

Dieser ganzen Kram:

Zitatmy $hm = sprintf("%%02d:%%02d", $hour, $min);;\
 if (($temp_Outdoor <= 4) && ($hm gt "22:00") or ($hm lt "06:00"))

Ist nötig, wenn man Uhrzeiten minutengenau auflösen will, wenn man eh mit Stunden zufrieden ist, dann kann man es einfacher so machen wie ich es oben dargestellt habe.

So oder so ist der Ansatz die Tempmeldung als Trigger zu nehmen meiner Auffassung nach ein suboptimaler Weg. Lieber in Intervallen prüfen ob die Bedingungen gegeben sind dann schalten oder nicht.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL