Lüftersteuerung in der Abstellkammer

Begonnen von Hirvi, 11 Juni 2013, 20:49:43

Vorheriges Thema - Nächstes Thema

Hirvi

Hallo,

der letzte geteste Code.

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 74 && (Value("KAMM_Lueftung") eq "off")) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 74 && (Value("KAMM_Lueftung") eq "on")) { fhem ("set KAMM_Lueftung off")}}


Keine Fehlermeldungen aber auch bei überschreiten oder unterschreiten der Schwellwerte wird keine Aktion ausgelösst.

Folgendes soll passieren:

Luftfeuchtigkeit über 74 -> Lüfter soll anlaufen
Luftfeuchtigkeit unter 74 -> Lüfter soll wieder aus gehen
Bei genau 74 würde jetzt nicht passieren. (Die Schwellwerte würde ich wenn es läuft auch  noch weiter auseinander setzen.

Hiemir Funktionier das auch genau so wie es soll.

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 74) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 74) { fhem ("set KAMM_Lueftung off")}}


FHEM ist hiermit halt nur Geschwätzig wie ein Waschweib.

Beispiel aus dem LOG.

2013-06-12_15:50:47 KAMM_Lueftung An
2013-06-12_15:53:44 KAMM_Lueftung An
2013-06-12_15:53:44 KAMM_Lueftung An
2013-06-12_15:53:44 KAMM_Lueftung An
2013-06-12_15:59:38 KAMM_Lueftung An
2013-06-12_15:59:38 KAMM_Lueftung An
2013-06-12_15:59:38 KAMM_Lueftung An
2013-06-12_16:02:35 KAMM_Lueftung An
2013-06-12_16:02:35 KAMM_Lueftung An
2013-06-12_16:02:35 KAMM_Lueftung An
2013-06-12_16:05:32 KAMM_Lueftung An
2013-06-12_16:05:32 KAMM_Lueftung An
2013-06-12_16:05:32 KAMM_Lueftung An
2013-06-12_16:08:29 KAMM_Lueftung An
2013-06-12_16:08:29 KAMM_Lueftung An
2013-06-12_16:08:29 KAMM_Lueftung An
2013-06-12_16:11:26 KAMM_Lueftung An
2013-06-12_16:11:26 KAMM_Lueftung An
2013-06-12_16:11:26 KAMM_Lueftung An
2013-06-12_16:14:23 KAMM_Lueftung An
2013-06-12_16:14:23 KAMM_Lueftung An
2013-06-12_16:14:23 KAMM_Lueftung An


Das geht ja doch auch auf die Funklast. Zumal ich ähnliches auch noch für den Lüfter im Keller und im Badezimmer Plane.

Udo
Raspberry PI Modell B, CUL, FHT, CUL_WS, HMLAN, INSTAR Cam's

justme1968

wenn im log 'A'n steht und nicht 'on' hast du es vermutlich umgemappt. dann musst du in deinem if natürlich auch mit 'An' und nicht mit 'on' vergleichen.

ansonsten gibt mal {Value("KAMM_Lueftung")} per telnet oder in fhem web ein und schau was wirklich zurueck kommt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

fürs Badezimmer habe ich es, sicher etwas umständlich, so gelöst:

define Vent_Bad_Auto notify OG_Badezimmer:humidity.* {
  my $hum=(ReadingsVal("OG_Badezimmer","humidity",99));
  my $hum_alt=(Value("OG_Bad_hum"));
  my $hum_last=(Value("OG_Bad_hum_last"));
  if (($hum-$hum_last) > 0) {
    if (($hum-$hum_alt) > 4) {
      fhem("set OG_Badezimmer_Ventilator on-for-timer 1920");
      fhem("define OG_Zimmer_Vent_on at +00:00:15 set OG_Zimmer_Ventilator on-for-timer 1920");
      fhem("set OG_Bad_hum ".$hum);
    }
  }
  if (($hum-$hum_last) < 0) {
    fhem("set OG_Bad_hum ".$hum);
  }
  fhem("set OG_Bad_hum_last ".$hum);
}


Ich habe im selben Abluftrohr dahinter noch einen Ventilator den ich nach 15 Sekunden dazu schalte in der Hoffnung den Durchsatz damit etwas erhöhen zu können - da kann ich mich aber auch täuschen.
Ich benutze dazu 2 Dummys und einen S300TH.
Warum 2 Dummys?
Der Ventilator soll nur einschalten wenn die Feuchte gegenüber der zuletzt gespeicherten Feuchte um 4% höher liegt.
Das Problem war aber das ab und zu mal die Feuchte auch steigt ohne das jemand duscht - Hände waschen oder Putzaktionen meiner Frau.
Mit
if (($hum-$hum_last) > 0) {
prüfe ich ob der Unterschied positiv ist und danach mit
if (($hum-$hum_alt) > 4) {
ob der Unterschied grösser 4% ist - daher die 2 Dummys.
Mit
if (($hum-$hum_last) < 0) {
    fhem("set OG_Bad_hum ".$hum);

wird bei negativer Luffeuchte (also jetzt weniger als vorher) der "Alt-Wert" auf den aktuellen gesetzt und mit
fhem("set OG_Bad_hum_last ".$hum);
wird der letzte Wert auf den aktuellen gesetzt.

Soviel erstmal zu meiner Abluftsteuerung im Bad.

Nun zu dir :-)

Das
define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 74 && (Value("KAMM_Lueftung") eq "off")) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 74 && (Value("KAMM_Lueftung") eq "on")) { fhem ("set KAMM_Lueftung off")}}

macht genau das was es soll - oder besser gesagt macht genau das wie es programmiert wurde.
Es prüft auf on und off - du sendest aber An und Aus ;-)

Poste doch bitte mal den STATE des Lüfters.
Achtung! Nicht state sondern STATE da Value STATE abfragt.

Grüße

Edith: Nun war andre schneller ;-)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

hat aber nicht ein so schön liebevoll erklärtes beispiel :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Hirvi

Ja ich habe umgemappt, ja ich habe nicht daran gedacht,  und wenn ich jetzt mit An und Aus vergleiche läuft alles so wie es soll.

Hier nocheinmal der Funktionierende Code.

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 75 && (Value("KAMM_Lueftung") eq "Aus")) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 70 && (Value("KAMM_Lueftung") eq "An")) { fhem ("set KAMM_Lueftung off")}}


Vielen Dank an Puschel74 und justme1968 für so viel tolle und schnelle Hilfe (und fürs Tomaten von den Augen nehmen)

Grüße Udo.
Raspberry PI Modell B, CUL, FHT, CUL_WS, HMLAN, INSTAR Cam's

Puschel74

Hallo,

schön wenn es jetzt klappt.

Zitat(und fürs Tomaten von den Augen nehmen)

Was denkst du wieviel Tomaten ich vor Augen hatte als ich mit FHEM angefangen habe (und immer noch habe ;-) )^^

Danke an Zrrronggg! und Rudi nochmal (und alle anderen) für ihre Geduld mit mir ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Damian

sowas geht auch einfacher:

define Lueftung_Kammer THRESHOLD S300TH_Kammer:humidity:5:75 KAMM_Lueftung|set @ on|set @ off|1

Gruß

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

Puschel74

Hallo,

nun nur noch @ gegen $EVENT tauschen und es passt wieder ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Damian

Zitat von: Puschel74 schrieb am Mi, 12 Juni 2013 22:42Hallo,

nun nur noch @ gegen $EVENT tauschen und es passt wieder ;-)

Grüße

$EVENT gilt für notifys, für THRESHOLD gilt immer noch @ - $EVENT würde nicht funktionieren

Gruß

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

Carsten

Einwurf vom Beckenrand: Ich weiß nicht, was für einen Schalter du verwendest, aber ich würde empfehlen negativ zu prüfen.

Soll heißen "schalte an, wenn nicht an", statt "schalte an, wenn aus".

Wenn dein Schalter aus irgendeinem Grund mal weder an noch aus ist, hast du sonst happy hold, so wie ich eine kalte Bude hatte, nachdem meine Therme irgendwann mal auf "Missing Ack" stand. :)

Tuppertasse

Zitat von: Hirvi schrieb am Mi, 12 Juni 2013 20:14Hallo,

der letzte geteste Code.

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 74 && (Value("KAMM_Lueftung") eq "off")) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 74 && (Value("KAMM_Lueftung") eq "on")) { fhem ("set KAMM_Lueftung off")}}


Hallo auch,
ich lese schon lange Zeit mit und habe mich nun auch angemeldet um nun auch eine Frage zu stellen - Konstellation lautet
Ein herkömmlicher Lüfter für die Garage gekoppelt mit einem CUL_HM und einem Taster; funktioniert auch super soweit. Hinzu kommen noch zwei Feuchte-Temp.-Messer des Typs HM-WDS10-TH-O.
Frage, kann ich nun obigen Code verwenden bzw. genauso verwenden ?
Lueftung_Kammer, S300TH_Kammer, hum_kammer, KAMM_Lueftung müsste oder sollte ich snnvollerweise auf Garagenaktion anpassen oder?

Tuppertasse

So hallo nochmal :o)

ich komme nochmal auf meine Frage zurück und poste mal meinen Code; ich hab eine paar dummy Variablen eingeführt um zu sehen was passiert; allerdings passiert gar nichts, d.h. die variablen werden gar nicht aktualisiert und somit gehe ich davon aus, daß irgendwo ein fehler liegt; vielleicht hat ja jemand eine idee ???

define Log_Hum_Garage dummy
define Log_Hum_Aussen dummy
define Log_Delta_Hum dummy
define Log_Autoswitch_On dummy
define Log_Autoswitch_Off dummy
define Log_Switch_ManualControl dummy
define Log_Switch_AutoControl dummy

define Lueftung_Garage notify Temp_Feuchte_Garage:humidity.* {\
my $hum_Garage=(ReadingsVal("Temp_Feuchte_Garage","humidity",99));;\
my $hum_Aussen = (ReadingsVal("Temp_Feuchte_Aussen","humidity",99));;\
my $debug3 = (ReadingsVal("Switch_ManualControl","state",""));;\
my $debug4 = (ReadingsVal("Switch_AutoControl","state",""));;\
my $deltaH = $hum_Aussen - $hum_Garage;;\
  {fhem ("set Log_Hum_Garage $hum_Garage")}\  
  {fhem ("set Log_Hum_Aussen $hum_Aussen")}\  
  {fhem ("set Log_Delta_Hum $deltaH")}\
  if(ReadingsVal("Switch_ManualControl","state","") eq "off" && ReadingsVal("Switch_AutoControl","state","") eq "on"){\
    if (ReadingsVal("Ventilator_Switch","state","") eq "off")){\
      if($deltaH < 5 && $hum_Garage > 60){\
        {fhem ("set Log_Autoswitch_On eingeschaltet")}\
        {fhem ("set Ventilator_Switch on")}\
      }\
    }\
    if (ReadingsVal("Ventilator_Switch","state","") eq "on")){\
      if($deltaH > 5 || $hum_Garage < 100){\
        {fhem ("set Log_Autoswitch_Off ausgeschaltet")}\
        {fhem ("set Ventilator_Switch off")}\
      }\
    }\
  }\
}

ChrisW

kurze frage hab das ganze für Temperatur umgebaut
Aber wozu das 40 da oben ?
define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 75 && (Value("KAMM_Lueftung") eq "Aus")) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 70 && (Value("KAMM_Lueftung") eq "An")) { fhem ("set KAMM_Lueftung off")}}


Unten wir doch 75 AN unter 70 Aus aber wozu das 40 hinter humidity ??
Raspberry PI3 mit allem möglichen.

nils_

und wieder so ein alter Thread der aus der Versenkung geholt wird......

ein blick in die commandref: ( https://fhem.de/commandref_DE.html#perl )
ZitatReadingsVal(<devicename>,<reading>,<defaultvalue>)
Gibt den Inhalt der "readings" zurück (den Inhalt der in dem "Readings"-Abschnitt von "list device" angezeigt wird)
viele Wege in FHEM es gibt!

ChrisW

Danke aber das war das "kürzeste" script was ich gefunden habe. Vergleichbares ist mind. 10 Zeilen lang. Was it den daran so schlimm auch wenn es älter ist? Soll ich was neues extra für meien frage aufmachen?
Raspberry PI3 mit allem möglichen.