Bayernlüfter

Begonnen von Mave, 28 Januar 2018, 22:24:32

Vorheriges Thema - Nächstes Thema

Mave

Hallo zusammen,

ich habe heute meinen Bayernlüfter mit WLAN Modul in Betrieb genommen.

Hat schon jemand so ein Teil an FHEM angebunden?

Grüße Mave

Mave

Ich kann jetzt per HTTPMOD die Daten des Bayernlüfters auslesen und versuche noch, die Steuerung mittels HTTPMOD zu realisieren.

brezel

Hallo Mave,

bist Du mit der Ansteuerung schon weiter gekommen? Ich hätte interesse an deinem Lösungsansatz. Ich hoffe das ich mein Bayernlüfter mit WLAN Modul bald in Betrieb nehmen kann, warte auf die Kernbohrungen durch 25cm Beton Kellerwand.

Grüße Brezel

der-Lolo

#3
Ich habe eine simple ansteuerung bereits realisiert, mithilfe von HTTPMOD ist das kein großes problem.

defmod LueftungBadEG HTTPMOD http://192.168.1.152/ 43
attr LueftungBadEG userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex set01Name set01NoArg:0,1 set01URL set02Hint set02Max set02Min set02Name set02URL set03Name set03NoArg:0,1 set03URL
attr LueftungBadEG enableControlSet 1
attr LueftungBadEG reading01Name AbluftStufe
attr LueftungBadEG reading01Regex >Abluft:(...)<
attr LueftungBadEG reading02Name ZuluftStufe
attr LueftungBadEG reading02Regex >Frischluft:(...)<
attr LueftungBadEG reading03Name AussenLuftTemperatur
attr LueftungBadEG reading03Regex id='frischluft_temp'>(....)
attr LueftungBadEG reading04Name ZuluftTemperatur
attr LueftungBadEG reading04Regex id='zuluft_temp'>(....)
attr LueftungBadEG reading05Name ZuluftFeuchtigkeit
attr LueftungBadEG reading05Regex id='zuluft_feuchte_rel'>(....)
attr LueftungBadEG reading06Name AbluftTemperatur
attr LueftungBadEG reading06Regex id='abluft_temp'>(....)
attr LueftungBadEG reading07Name AbluftFeuchtigkeit
attr LueftungBadEG reading07Regex id='abluft_feuchte_rel'>(....)
attr LueftungBadEG reading08Name WRG
attr LueftungBadEG reading08Regex id='wrg'>(....)
attr LueftungBadEG room 90-Testumgebung,95-Lüftung
attr LueftungBadEG set01Name Power
attr LueftungBadEG set01NoArg 1
attr LueftungBadEG set01URL http://192.168.1.152/?button=power
attr LueftungBadEG set02Hint 1,2,3,4,5,6,7,8,9,10
attr LueftungBadEG set02Max 10
attr LueftungBadEG set02Min 1
attr LueftungBadEG set02Name SpeedSelect
attr LueftungBadEG set02URL http://192.168.1.152/?speed=$val
attr LueftungBadEG set03Name Automatik
attr LueftungBadEG set03NoArg 1
attr LueftungBadEG set03URL http://192.168.1.152/?speed=0
attr LueftungBadEG stateFormat AbluftStufe
attr LueftungBadEG verbose 2
attr LueftungBadEG webCmd Power
attr LueftungBadEG widgetOverride userattr:textField-long

setstate LueftungBadEG  01
setstate LueftungBadEG 2018-02-18 10:02:52 AbluftFeuchtigkeit 46,5
setstate LueftungBadEG 2018-02-18 10:02:52 AbluftStufe  01
setstate LueftungBadEG 2018-02-18 10:02:52 AbluftTemperatur 20,7
setstate LueftungBadEG 2018-02-18 10:02:52 AussenLuftTemperatur 9,3
setstate LueftungBadEG 2018-02-18 10:02:52 WRG 85,2
setstate LueftungBadEG 2018-02-18 10:02:52 ZuluftFeuchtigkeit 22,8
setstate LueftungBadEG 2018-02-18 10:02:52 ZuluftStufe  01
setstate LueftungBadEG 2018-02-18 10:02:52 ZuluftTemperatur 19,0



Internals:
   BUSY       0
   DEF        http://192.168.1.152/ 43
   Interval   43
   LASTSEND   1518944829.34848
   MainURL    http://192.168.1.152/
   ModuleVersion 3.4.1 - 18.1.2018
   NAME       LueftungBadEG
   NR         118
   STATE       01
   TRIGGERTIME 1518944872.34802
   TRIGGERTIME_FMT 2018-02-18 10:07:52
   TYPE       HTTPMOD
   addr       http://192.168.1.152:80
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.1.152/
   header     
   host       192.168.1.152
   httpheader HTTP/1.1 200 OK
Content-Type: text/html
   httpversion 1.0
   hu_blocking 0
   hu_filecount 82
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.1.152/
   value      0
   QUEUE:
   READINGS:
     2018-02-18 10:07:10   AbluftFeuchtigkeit 46,5
     2018-02-18 10:07:10   AbluftStufe      01
     2018-02-18 10:07:10   AbluftTemperatur 20,7
     2018-02-18 10:07:10   AussenLuftTemperatur 9,0
     2018-02-18 10:07:10   WRG             84,1
     2018-02-18 10:07:10   ZuluftFeuchtigkeit 21,8
     2018-02-18 10:07:10   ZuluftStufe      01
     2018-02-18 10:07:10   ZuluftTemperatur 18,8
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.1.152/
     value      0
   defptr:
     readingBase:
       AbluftFeuchtigkeit reading
       AbluftStufe reading
       AbluftTemperatur reading
       AussenLuftTemperatur reading
       WRG        reading
       ZuluftFeuchtigkeit reading
       ZuluftStufe reading
       ZuluftTemperatur reading
     readingNum:
       AbluftFeuchtigkeit 07
       AbluftStufe 01
       AbluftTemperatur 06
       AussenLuftTemperatur 03
       WRG        08
       ZuluftFeuchtigkeit 05
       ZuluftStufe 02
       ZuluftTemperatur 04
     readingOutdated:
     requestReadings:
       update:
         AbluftFeuchtigkeit reading 07
         AbluftStufe reading 01
         AbluftTemperatur reading 06
         AussenLuftTemperatur reading 03
         WRG        reading 08
         ZuluftFeuchtigkeit reading 05
         ZuluftStufe reading 02
         ZuluftTemperatur reading 04
   helper:
     bm:
       HTTPMOD_Get:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        18.02. 10:03:00
         max        5.60283660888672e-05
         tot        0.000108957290649414
         mAr:
           HASH(0x42cc720)
           LueftungBadEG
           ?
       HTTPMOD_Set:
         cnt        317
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        17.02. 13:16:11
         max        0.00157308578491211
         tot        0.137276411056519
         mAr:
           HASH(0x42cc720)
           LueftungBadEG
           SpeedSelect
           3
   sslargs:
Attributes:
   enableControlSet 1
   reading01Name AbluftStufe
   reading01Regex >Abluft:(...)<
   reading02Name ZuluftStufe
   reading02Regex >Frischluft:(...)<
   reading03Name AussenLuftTemperatur
   reading03Regex id='frischluft_temp'>(....)
   reading04Name ZuluftTemperatur
   reading04Regex id='zuluft_temp'>(....)
   reading05Name ZuluftFeuchtigkeit
   reading05Regex id='zuluft_feuchte_rel'>(....)
   reading06Name AbluftTemperatur
   reading06Regex id='abluft_temp'>(....)
   reading07Name AbluftFeuchtigkeit
   reading07Regex id='abluft_feuchte_rel'>(....)
   reading08Name WRG
   reading08Regex id='wrg'>(....)
   room       90-Testumgebung,95-Lüftung
   set01Name  Power
   set01NoArg 1
   set01URL   http://192.168.1.152/?button=power
   set02Hint  1,2,3,4,5,6,7,8,9,10
   set02Max   10
   set02Min   1
   set02Name  SpeedSelect
   set02URL   http://192.168.1.152/?speed=$val
   set03Name  Automatik
   set03NoArg 1
   set03URL   http://192.168.1.152/?speed=0
   stateFormat AbluftStufe
   userattr   reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex set01Name set01NoArg:0,1 set01URL set02Hint set02Max set02Min set02Name set02URL set03Name set03NoArg:0,1 set03URL
   verbose    2
   webCmd     Power
   widgetOverride userattr:textField-long


funktioniert soweit - es gibt allerdings des öfteren Time Outs im Log, es wurde angekündigt das die schnittstelle in das JSON Format verändert wird, bis das geschehen ist gebe ich mich mit der ergebnis zufrieden...

brezel

Hallo Lolo,

vielen Dank für dein Device es funktioniert Prima, mit dem HTTPMOD habe ich mich noch nicht beschäftigt, toll das ich dabei auch noch was dabei lernen kann. Heute war es so weit und ich konnte endlich auch mein Bayernlüfter in Betrieb nehmen. ;-) 

Mave

Lolo,

super, vielen Dank.

Die Steuerung habe ich jetzt von Dir übernommen und bin total zufrieden.

Hast Du eine Idee, wie ich die Steuerung in Abhängigkeit von einem Fensterkontakt realisieren kann?
Ich würde gerne über z.B. ein notify den Lüfter abschalten, wenn das Fenster geöffnet wurde und erst wieder einschalten, wenn das Fenster geschlossen wurde.

Gerade im Sommer, wenn das Fenster den ganzen Tag offen ist, muss der Lüfter nicht laufen.

Vielen Dank.

Grüße Mave

der-Lolo

So etwas habe ich noch nicht realisiert - die "Power" funktion des Bayernlüfters scheint mir hierzu zu unzuverlässig zu sein. Ich habe ein DOIF welches je nach Feuchtigkeit eine Lüfterstufe wählt.
Im Winter hatte ich nun in diesem DOIF ein Doelseif wenn die feuchtigkeit geringer als 40% ist abschalten der Lüftung. Meistens hat der Lüfter aber dann in seinen eigenen Automatik Modus gewechselt, es war mir jedenfalls zu unzuverlässig. Ich hätte dann ja auch noch einen "Schnüffelmodus" gebraucht um zu schauen ob es mittlerweile wieder feuchter geworden ist.

Deswegen habe ich das wieder rausprogrammiert...
Ich warte auf die JSON-Schnittstelle bevor ich mich mehr mit dem gerät beschäftige.

Mit DOIF sollte aber der Fensterkontakt recht einfach integrierbar sein.
aus dem Bauch geschossen :

([Fenster] ne "open" and [Feuchte] > 40) (set Luefter SpeeSelect 1)
DOELSE (set Luefter Power)

sollte dazu führen das der DOELSE Pfad ausgeführt wird wenn das Fenster offen ist.

Wie gesagt "power" funktionierte in meinen Tests nicht zuverlässig.



Mave

Okay. Vielen Dank.

Leider kann man aktuell nicht Ein oder Aus schalten. Mit Power kann man nur toggeln. Man muss also immer prüfen, welchen Status der Lüfter gerade hat.


der-Lolo

genau, das meinte ich...

Mave

Ich hab es mal versucht, scheitere aber noch an der Definition des DOIF. Der Lüfter geht aus, sobald ich die Türe öffne, danach passiert aber nichts mehr.

Es wäre super, wenn mir jemand sagen könnte, wie die richtige DOIF Definition aussehen müsste.

Vielen Dank.

define doif_kf_Luefterautomat DOIF ([kf_Tuere] eq "open" and [kf_Bayernluft:abluft_motorstufe] ne "00") (set kf_Bayernluft Power) DOELSEIF ([kf_Tuere] eq "closed" and [kf_Bayernluft:abluft_motorstufe] eq "00") (set kf_Bayernluft Power)

der-Lolo

Guten Morgen Mave,
ich würde das anders aufbauen - noch dazu frage ich mich wie Du in die einzelnen Lüfterstufen schaltest...
Zum wiedereinschalten in den Bayernlüfter Automatik modus soll glaube ich ein "Speedselect 0" benutzt werden.
Ich selbst schalte je nach Feuchtigkeit selbst die einzelnen Lüfterstufen.

defmod VEmodeSwitchEG DOIF ([LueftungBadEG:AbluftFeuchtigkeit:d] > 65) (set LueftungBadEG SpeedSelect 10)\
DOELSEIF ([LueftungBadEG:AbluftFeuchtigkeit:d] > 59) (set LueftungBadEG SpeedSelect 8)\
DOELSEIF ([LueftungBadEG:AbluftFeuchtigkeit:d] > 54) (set LueftungBadEG SpeedSelect 6)\
DOELSEIF ([LueftungBadEG:AbluftFeuchtigkeit:d] > 52) (set LueftungBadEG SpeedSelect 5)\
DOELSEIF ([LueftungBadEG:AbluftFeuchtigkeit:d] > 50) (set LueftungBadEG SpeedSelect 3)\
DOELSEIF ([LueftungBadEG:AbluftFeuchtigkeit:d] > 45) (set LueftungBadEG SpeedSelect 1)\

attr VEmodeSwitchEG cmdState 10|8|6|5|3|1|off
attr VEmodeSwitchEG devStateIcon off:general_aus
attr VEmodeSwitchEG room 08-BadUnten,95-Lüftung



Deine Version würde ich zumindest noch mit ? versehen - im moment triggert es nur wenn beide Events gleichzeitig kommen...

etwa so:

define doif_kf_Luefterautomat DOIF ([kf_Tuere] eq "open" and [?kf_Bayernluft:abluft_motorstufe] ne "00") (set kf_Bayernluft Power) DOELSEIF ([kf_Tuere] eq "closed" and [?kf_Bayernluft:abluft_motorstufe] eq "00") (set kf_Bayernluft Power)

Das ? bewirkt das das reading nur ausgewertet wird, wenn also ein trigger vom kf_Tuere kommt und das Reading "abluft" den abgefragten wert hat...

Weiteres hat dann glaube ich eher mit DOIF zu tun als mit dem Luefter - vielleicht solltest Du im DOIF Bereich einen neuen Thread öffnen, da wird dir mit sicherheit geholfen.


Mave

Moin Lolo,

vielen Dank, das war der entscheidende Hinweis mit dem Fragezeichen. Wieder etwas dazugelernt.

Ich schalte tagsüber eine höhere Stufe als nachts, ansonsten aber nicht abhängig von den Bedingungen.

Ich muss jetzt nur noch das DOIF dahingehend erweitern, dass die Statusänderung der Motorstufe sofort bei Auslösung in das Reading geschrieben wird. Ansonsten wird die Motorstufe erst mit dem Intervall von 5 min aktualisiert.

Hättest Du mir für die Reading Aktualisierung noch einen Tipp? Oder kann ich eventuell nach Auslösung des DOIF das httpmod triggern, damit alle Readings aktualisiert werden?

Vielen Dank.

der-Lolo

Ich frage das httpmod alle 45sek. ab, verursacht ja nur internen traffic - im DOIF kannst Du wiederum mit wait arbeiten, siehe commandref (er wartet die wait Zeit ab bevor er einen befehl ausführt)

Wenn Du den Befehl an den Lüfter gibst heist das ja noch nicht das der auch umgesetzt ist. Das Reading welches dann erst beim nächstem durchlauf kommt ist quasi Deine rückmeldung. Zum Befehlszeitpunkt kann der Lüfter ja noch nicht laufen.

In der Comandref gibt es glaube ich auch ein Beispiel dazu:
vom prinzip her - Lüfterstufe schalten, kurz warten, httpmod mithilfe von reread aktualisieren.

Mave


synaps-o-dan

Hallo Mave,
gerade habe ich Dein HTTPMOD mit einem Bayernlüfter in Betrieb genommen, hat sofort tadellos funktioniert, große Klasse! Danke fürs Bereitstellen!!
Eine Anmerkung habe ich noch: in meinem fhem-System werden die Readings (Temperaturen und Luftfeuchtigkeiten) mit Komma als Dezimaltrennung angezeigt, das ist für weitergehende Rechungen oder plots ungeeignet. Durch ein einfaches Attribut a la:
attr LueftungBadEG readingOExpr $val =~ s/,/\./; $val;
kann man die Dezimalkommata durch Dezimalpunkte ersetzen, dann funzt es auch mit Plots und Co.
Viele liebe Grüße nochmals,
Daniel
fhem auf Raspberry Pi 3
5 x Set aus jew. 1x FHT80B + 1xFHT8V + 1x FHT80TF-2
HM: 1 x HM-ES-PMSw1-Pl, 2 x HM-LC-Sw1-FM, 2 x HM-LC-Sw1PBU-FM, 3 x HM-Sec-SD, 2 x HM-PB-2-WM55, 2 x HM-Sec-MDIR-2
3 x EM-1000 EM
Onewire: insgesamt 11 Onewire-Sensoren an einem LinkUSB Adapter