Daikin Klimageräte cloudfrei in FHEM einbinden mit Faikin Wlan Modulen

Begonnen von JoergBo, 26 Dezember 2024, 17:02:44

Vorheriges Thema - Nächstes Thema

JoergBo

Hi,
nachdem Daikin die Cloud verpflichtend für ihre Geräte gemacht hat und dort die Möglichkeiten zur Steuerung der Geräte immer weiter beschnitten hat, ich habe mich mal etwas mit einer Alternative zur aktuellen Einbindung von Daikin Klimageräten beschäftigt.

Es gibt ein WLan-Modul, das sich an viele Daikin Klimageräte anschliessen läßt. Das Modul wird von einen englischen Autor auf Github einwickelt, kann selbst gebaut und programmiert werden, oder auch fertig über Amazon.uk und neuerdings Amazon.de bestellt werden (Suche "FAIKIN" ~40€). Es gibt auch eine komplette LIB zum bestellen von bestückten Platinen in China auf Github (~16€/Stk. bei 5 je nach Menge weniger).

Das Modul hat eine Web-Oberfläche und spricht MQTT2, also ganz gute Voraussetzungen.

Vorteile:
- Steuerung im lokalen WLan
- Steuerbefehle werden sofort und zuverlässig umgesetzt
- keine Beschränkung auf 200 Kommandos pro Tag UND Nutzer, wie bei der Daikin Cloud
- Zugriff auf die Bedarfssteuerung, eigene Temperaturgesteuerte Bedarfssteuerung realisierbar
- Ventilator Ist-Drehzahl ist verfügbar
- Temperatur Wärmetauscher ist wieder verfügbar
- die Daikin WLan Module können parallel weiterlaufen, aber auch ganz abgeklemmt werden spart 1W pro Innengerät

Nachteile:
- keine Leistungsmessung (wurde über die Daikin-Cloud errechnet)
- keine Daikin-Automatik für Bedarfssteuerung, aber das war auch nur über die Daikin Cloud realisiert und wurde "intransparent" aus den Verbrauchsdaten des Vortages hergeleitet.

Einfache Web Bedienung in FHEM:

Du darfst diesen Dateianhang nicht ansehen.

Als Startpunkt kann ich die Anbindung an FHEM beitragen. Das ist KEIN Template, sondern eine Vorlage für Copy/Paste:
defmod FaikinKueche MQTT2_DEVICE Faikin_FaikinKueche_F14711
attr FaikinKueche devStateIcon {my $text = sprintf(" T:%.1f HT:%.1f Fan:%.0f - Swing H %s V %s", ReadingsVal($name,"home","-1"), ReadingsVal($name,"liquid","-1"),\
ReadingsVal($name,"fanrpm","-1"), ReadingsVal($name,"swingh","-1"), ReadingsVal($name,"swingv","-1"));;;; \
my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot";;;; \
my $light = ReadingsVal($name,"power","off") eq "on"?"black_Steckdose.on":"black_Steckdose.off";;;;\
"<div><a href=\"http://".$name." \"target=\"_blank\">".FW_makeImage($onl)." </a>$text<b></b>"}
attr FaikinKueche devicetopic Faikin_FaikinKueche_F14711
attr FaikinKueche event-on-change-reading mode,fan,temp,target,swing.*,power,powerful,online,demand,fanrpm,fan,home,
attr FaikinKueche eventMap true:on false:off false:off H:Heat F:Fan A:Auto C:Cool D:Dry Q:Night
attr FaikinKueche group 1_Klima
attr FaikinKueche readingList $DEVICETOPIC:info/FaikinKueche/upgrade:.* { json2nameValue($EVENT,'UPGRADE_',$JSONMAP) }\
$DEVICETOPIC:Faikin/FaikinKueche:.*  { json2nameValue($EVENT,'',$JSONMAP,'','.*_.*') }\
$DEVICETOPIC:state/FaikinKueche:.* {}\
$DEVICETOPIC:state/FaikinKueche/status:.* { json2nameValue($EVENT,'',$JSONMAP) }\
$DEVICETOPIC:error/FaikinKueche/failed-set:.* { json2nameValue($EVENT,'Failed_',$JSONMAP) }\
$DEVICETOPIC:error/FaikinKueche/control:.* { json2nameValue($EVENT,'Error_',$JSONMAP) }
attr FaikinKueche room 0.Heizung,MQTT2_DEVICE
attr FaikinKueche setList temp:selectnumbers,10,0.5,31,1,lin command/$NAME/control {"temp":$EVTPART1} \
demand:selectnumbers,40,5,100,0,lin command/$NAME/control {"demand":$EVTPART1} \
power:select,on,off command/$NAME/control {"power":$EVTPART1}\
mode:select,Heat,Cool,Auto,Dry,Fan command/$NAME/control {"mode":"$EVTPART1"}\
fan:select,Auto,Night,1,2,3,4,5 command/$NAME/control {"fan":"$EVTPART1"}\
swingv:select,on,off command/$NAME/control {"swingv":$EVTPART1}\
swingh:select,on,off command/$NAME/control {"swingh":$EVTPART1}\

attr FaikinKueche webCmd demand:mode:fan:temp:power
attr FaikinKueche webCmdLabel Bedarf<br>:Modus<br>:Fan<br>:Temperatur<br>:Power<br>



Im Faikin Modul sollten folgende Einstellungen angepasst werden:
Hauptseite -> Faikin umbennenen in z.B. FaikinKueche
Basic -> "MQTT hostname" "MQTT username" "MQTT password" u.s.w. eintragen
Basic -> "Timzone" "CET-1CEST,M3.5.0,M10.5.0/3" für Deutschland
Faikin -> "Home Assistance" auf AUS
Library -> Topics so lassen...

Ein kleines DOIF zur Hilfe, weil Faikin keine direkte Offline Überwachung hat:

defmod Online_Offline_DOIF DOIF ([+00:01]) (IF (ReadingsAge("FaikinKueche","online", "0")>300) (setreading FaikinKueche online false)) \

attr Online_Offline_DOIF do always

Da sind bestimmt Verbesserungspotenziale ohne Ende drin, aber es funktioniert schon gut!

Die Projektseite auf Github: https://github.com/revk/ESP32-Faikin


RasPI4, S5-95U, Hue, Volkszaehler, 1wireTemp, HMLan, sduino, Wlan-IR-Gateway, TelegramBot, Alexa, ...

JoergBo

Hi,
als Ergänzung eine gut funktionierende Witterungssteuerung für Daikin Klimageräte mit FAIKIN Wlan Modul.
Die "Kurve" muss natürlich auf die individuelle Situation angepasst werden. Takten der Geräte hat hier damit komplett aufgehört.
Benötigt wird ein Aussen-Fühler, der aber in vielen FHEM Installationen sowieso vorhanden ist. "Aussen_Temp".

Der Code steuert hier 4 Innengeräte, allerdings kann die Leistung (demand) nur 1x pro Außengerät gesetzt werden. Hängen mehrere Innengeräte an einem Außengerät, also Multisplit, kann die Kompressorleistung logischerweise nur für alle Innengeräte gemeinsam eingestellt werden.
Hier gibt es immer ein führendes Innengerät, dass die Leistung bestimmt. Einfach immer alle gemeinsamen Innengeräte auf den gleichen Wert setzten, dann ist egal, welches führt.

defmod Bedarf_Klima DOIF ([Aussen_Temp]>10.0) (set FaikinWG demand 40) (set FaikinWZ demand 40) (set FaikinBad demand 40) (set FaikinKueche demand 40)\
DOELSEIF ([Aussen_Temp]> 7.5 and [Aussen_Temp]<10.0) (set FaikinWG demand 50) (set FaikinWZ demand 50) (set FaikinBad demand 50) (set FaikinKueche demand 50)\
DOELSEIF ([Aussen_Temp]> 5.0 and [Aussen_Temp]< 7.5) (set FaikinWG demand 60) (set FaikinWZ demand 60) (set FaikinBad demand 60) (set FaikinKueche demand 60)\
DOELSEIF ([Aussen_Temp]> 2.0 and [Aussen_Temp]< 5.0) (set FaikinWG demand 70) (set FaikinWZ demand 70) (set FaikinBad demand 70) (set FaikinKueche demand 70)\
DOELSEIF ([Aussen_Temp]>-2.0 and [Aussen_Temp]< 2.0) (set FaikinWG demand 80) (set FaikinWZ demand 80) (set FaikinBad demand 80) (set FaikinKueche demand 80)\
DOELSEIF ([Aussen_Temp]>-6.0 and [Aussen_Temp]<-2.0) (set FaikinWG demand 90) (set FaikinWZ demand 90) (set FaikinBad demand 90) (set FaikinKueche demand 90)\
DOELSEIF ([Aussen_Temp]>-9.0 and [Aussen_Temp]<-6.0) (set FaikinWG demand 95) (set FaikinWZ demand 95) (set FaikinBad demand 95) (set FaikinKueche demand 95)\
DOELSEIF ([Aussen_Temp]<-9.0)                        (set FaikinWG demand 100) (set FaikinWZ demand 100) (set FaikinBad demand 100) (set FaikinKueche demand 100)\

attr Bedarf_Klima checkall event
attr Bedarf_Klima cmdState >10° | 7.5°-10° | 5°-8° | 2-5° | -2-2° | -6--2° | -9--6° | -9°-...
attr Bedarf_Klima do always


Hier ein Tag mit Außen-, Raumtemperatur und Leistungsaufnahme für zwei Räume:

Du darfst diesen Dateianhang nicht ansehen.
RasPI4, S5-95U, Hue, Volkszaehler, 1wireTemp, HMLan, sduino, Wlan-IR-Gateway, TelegramBot, Alexa, ...

Manfi

Hi,
gefällt mir gut! Schon implementiert.

Was hat's mit dieser Zeile auf sich?:

Zitat von: JoergBo am 26 Dezember 2024, 17:02:44my $light = ReadingsVal($name,"power","off") eq "on"?"black_Steckdose.on":"black_Steckdose.off";;;;\
Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10