FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: JoergBo am 26 Dezember 2024, 17:02:44

Titel: Daikin Klimageräte cloudfrei in FHEM einbinden mit Faikin Wlan Modulen
Beitrag von: JoergBo am 26 Dezember 2024, 17:02:44
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:

Screenshot 2024-12-26 16.44.11.png

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


Titel: Aw: Daikin Klimageräte cloudfrei in FHEM einbinden mit Faikin Wlan Modulen
Beitrag von: JoergBo am 28 Januar 2025, 12:01:01
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:

Screenshot 2025-01-28 11.57.30.png
Titel: Aw: Daikin Klimageräte cloudfrei in FHEM einbinden mit Faikin Wlan Modulen
Beitrag von: Manfi am 09 Februar 2025, 17:42:51
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";;;;\
Titel: Aw: Daikin Klimageräte cloudfrei in FHEM einbinden mit Faikin Wlan Modulen
Beitrag von: JoergBo am 21 April 2025, 11:51:09
Hups, das tut nix! Das kann weg.  8)
Das ist ein Rest vom copy/paste von einen anderen Device hier.