Daikin Multisplitt Klimaanlage

Begonnen von lohi, 16 Januar 2023, 15:30:20

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo Frank,

MQTT-Broker hab ich, node-red ist installiert und läuft.
Onecta App funktioniert auch.

Muss ich hier etwas tun? Wenn ja, ist mir nicht klar, was. Englisch ist nicht das Problem - die Worte lese ich wohl, aber welche Tasten muss ich in welcher Reihenfolge auf meinem PC drücken, um Erfolg zu haben?
ZitatDaikin cloud and node red dashboard
I used the daikin cloud integration ( https://flows.nodered.org/node/node-red ... ikin-cloud) to communicate with the daikin cloud, and node red dashboard to have a visual interface for the setup (https://flows.nodered.org/node/node-red-dashboard). As those are not included in node red, you will have to install this separately.
In node red, go to "manage palette" and switch to the "install" tab. Search for each node and click on the install button.

Dann geht es weiter:
ZitatGetting the flow to work:
Open up node red, open the menu ad select Import
Paste this flow in the new window and click import: https://pastebin.com/PqW2rpMY (Posted on postebin as it was too long to post here).
Wie mach ich das? Den Inhalt markieren, kopieren und einfügen?
Auf der Seite gibt es drei Buttons: raw download report - muss ich mit denen etwas machen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

FrankL

Ok. Ich stell mal die Schritt für Schritt-Anleitung auf deutsch mit den aktuellen Quellen ein:

Bei mir läuft FHEM und Node-Red auf einem Raspberry. Daher habe ich mich bei der Node-Red-Installation an https://nodered.org/docs/getting-started/raspberrypi orientiert. Folgende Befehle in der Shell vom Raspberry:

1. Sicherheitshalber, falls noch nicht auf dem System vorhanden:

sudo apt install build-essential git curl


2.

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Der einfache Weg über "sudo apt-get install nodered" installiert angeblich "npm" (Node.js-Paketmanager) nicht mit, daher der oben dargestellte Weg.

3. Module holen mit:

npm install node-red-contrib-daikin-cloud
npm install node-red-dashboard


4. Danach Node-Red in Autostart zufügen bzw. starten:

sudo systemctl enable nodered.service
node-red-start


5. Wir sind in der Shell fertig und können im Browser Node-Red aufrufen unter http://<hostname oder ip>:1880

6. Unter Node-Red wählst du das Menü (drei Striche oben rechts) und dort Palette verwalten. Du suchst nach "node-red-contrib-daikin-cloud" und "node-red-dashboard" und installiert sie.

7. Jetzt benötigtst du den eigentlichen "Flow". Den aktuellen Stand kannst du als json-Datei von https://github.com/ksacca/daikincloud-domoticz/blob/master/flow.json (auf den hier gezeigten Link: "Ziel speichern unter ..." wählen) als Datei runterladen. Du gehst bei Node-Red wieder ins Menü (drei Striche oben rechts) und wählst nun Import. Jetzt die gerade heruntergeladene json-Datei wählen und importieren.

8. Im Flow unter "Step 1 Configuration File" ein Verzeichnis eingegeben / festlegen (wo die Konfiguration abgespeichert wird), mit "Fertig" bestätigen und "Übernahme (deploy)" drücken. Anschließend den Button im Flow vor "Start" drücken.

9. Mit Strg+Shift+D den Settings-Dialog für den MQTT-Broker öffnen und die erforderlichen Einstellungen vornehmen. Noch nicht Start-Flow anhaken! Mit dem linken Save Settings bestätigen.

10. Im Flow auf Daikin-Cloud doppelklicken und die Zugangsdaten eintragen. (Hinweis: Es müssen echte Zugangsdaten (Email-Adresse + Passwort) vorhanden sein. Social-Media-Logins werden nicht unterstützt!) "Fertig" und "Übernahme (deploy)" drücken.

11. Zurück im Flow mit Strg+Shift+D den Settings-Dialog aufrufen und diesmal Start-Flow anhaken und mit dem linken Save-Settings bestätigen.

-> Im Flow ist jetzt anhand der kleinen Symbole unter "Daikin Cloud" und "Mqtt" erkennbar, ob eine Verbindung zur Daikin-Cloud und zum Mqtt-Broker erfolgreich hergestellt werden konnte.

-> Optional habe ich bei mir im Node-Red unter Konfiguration "Bei allen Flows" bei Mqtt-Broker eine feste Client-ID definiert. Ansonsten würde bei jedem neuen Start eine neue Client-ID vergeben werden.

Ich hoffe, dass alle Schritte vollständig beschrieben habe. Ansonsten einfach mal Bescheid geben, bei welcher Nummer es hängt, oder ob die Anleitung so vollständig ist und die Messages im FHEM ankommen.

Gisbert

#18
Hallo Frank,

vielen Dank für deine sehr hilfreiche Anleitung.

Bei Punkt 7. (Flow importieren) habe ich den den Inhalt kopiert und im Fenster eingegeben. Ich hoffe, dass das richtig war.

Bei Punkt 8. "Step 1 Configuration File" habe ich das Verzeichnis unter den Text im Fenster reingeschrieben. Kann der vorgegebene Text dort stehen bleiben, oder muss der gelöscht werden, so nur das Verzeichnis alleine dort steht?

Bei Punkt 9. MQTT-Broker hänge ich jetzt: Was gebe ich beim Auto Discovery Prefix* und beim State Set Prefix* ein? Auf der rechten Seite bei "MQTT AutoDiscovery Settings", muss da was angeklickt und gespeichert werden?

Viele Grüße Gisbert

Edit:
ZitatOptional habe ich bei mir im Node-Red unter Konfiguration "Bei allen Flows" bei Mqtt-Broker eine feste Client-ID definiert. Ansonsten würde bei jedem neuen Start eine neue Client-ID vergeben werden.
Kannst du das noch näher erklären, wie es umgesetzt werden soll?
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

FrankL

Bei Punkt 7 kann man entweder den Inhalt händisch kopieren oder wie beschrieben mit der json-Datei importieren. Das Ergebnis ist dasselbe. Wenn du bereits bei Punkt 8 bist und damit den Flow siehst, war Punkt 7 also erfolgreich.

Bei Punkt 8 machst du den Doppelklick auf "Step 1 Configuration File", löschst dort den Text/Erklärung und gibst lediglich das Verzeichnis ein, wohin die Konfiguration gespeichert werden soll, also z.B. "/home/pi/daikin/". Dann auf "Fertig" klicken und "Übernahme (deploy)". Anschließend den Button im Flow vor "Start" drücken. Du kannst auf der Shell dann schauen, ob der Ordner ordnungsgemäß erstellt worden ist.

Bei Punkt 9 kannst du bei "Auto Discovery Prefix" sowas wie "daikinAD" und bei "State Set Prefix" einfach "daikin" eingeben. So beginnen dann die Topics, auf denen die Nachrichten gepublisht werden. Danach links Save Settings klicken. Rechts klickst du alles an und klickst dann auf den rechten Save Settings Button. So bekommst du alle angehakten Infos zu den Geräten.

Zum (optionalen) einstellen einer festen Client-ID klickst du im rechten Bereich von Node-Red auf Konfiguration, öffnest dort den Teil "Bei allen Flows" und doppelklickst das Feld unter "mqtt-broker". Jetzt öffnet sich ein Fenster mit den Eigenschaften von mqtt-broker und gibst dort im Feld Client-ID z.B. "nodered_daikin" ein. Dann "Aktualsieren" drücken und "Übernahme (deploy)" anklicken.

Grüße Frank

Gisbert

Hallo Frank,

es läuft schon mal, d.h. prinzipiell ist eine Verbindung vorhanden.
Wenn ich die Soll-Temperatur in der Onecta-App ändere, bekomme ich zu diesem Attribut ein Reading.

Wenn ich bei den MQTT AutoDiscovery Settings auf der rechten Seite alles anklicke und speichere, dann bekomme ich Readings mit Attributen mit .../config am Ende, die aber alle ohne Werte sind, nur Topics sind enthalten.

Da ich es nicht besser wusste, hab ich bei Auto Discovery Prefix* und State Set Prefix* jeweils beides Mal "daikin" eingetragen.

Es kann sein, da ich mit einem externen MQTT-Broker und nicht dem Fhem-eigenen MQTT2_SERVER oder MQTT2_CLIENT arbeite, dass ich etwas anderes in Fhem bekomme als Du. Mal sehen, wie ich das noch lösen kann.

Meine Definition sieht so aus, mein Gerät hab ich mit DaikinAP09627 bezeichnet:
defmod DaikinCloud MQTT_DEVICE
attr DaikinCloud IODev MyBroker
attr DaikinCloud autoSubscribeReadings daikin/#
attr DaikinCloud subscribeReading_mode daikin/select/mode/DaikinAP09627/state
attr DaikinCloud subscribeReading_power daikin/switch/power/DaikinAP09627/state
attr DaikinCloud subscribeReading_setpoint daikin/climate/setpoint/DaikinAP09627/state


Das einzige Reading, was ich im Moment bekomme, sieht so aus:
setpoint 19.50 2023-02-15 18:51:39
Es kommen keine weiteren Nachrichten rein. Das liegt nicht an Fhem, da ich mit MQTT.fx (Windows) lausche, was ankommt.

Wenn ich erst mal weiter bin, würde mich brennend interessieren, wie ich die Solltemperatur aus Fhem heraus ändern kann, und vor allem, wie ich das Gerät an- und ausschalten kann.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

skycrack

Zitat von: FrankL am 12 Februar 2023, 18:17:31
Ich hab in Node-Red in der Konfiguration im Flow (mit Strg+Shift+D) ein State Set Prefix: "daikin" vorgegeben. Ferner habe ich in Node-Red unter den Standardeinstellungen für MQTT eine feste Client-ID (nodered_daikin) eingestellt.

Das Device MQTT2_FHEM_Server hatte ich bei mir schon vorher eingerichtet. Es geht aber auch ein externer MQTT-Broker. Da es bei mir das MQTT-Device vom Client Node-Red in FHEM per Autocreate erstellt hat, habe ich nur ein paar Einstellungen noch vorgenommen, da ich z.B. für jedes Innengerät ein separates Device haben wollte. Daher in den automatisch erstellten MQTT-Device das Attribut "bridgeRegexp" definiert. Sieht dann in der Summe so aus:
...


Hallo Frank,
besten Dank für die Beispiele, welche ich gut gebrauchen konnte. Sehr Chic.
Habe nun meine 5 Geräte im Fhem. Senden ging ebenso, ich habe einfach das aktuelle aus dem Git gezogen und einen Neuen Flow unter Node Red  erstellt.
Jetzt kann ich in Ruhe die Fenster-Offen-Erkennung daran binden.
Sicher wäre ein eigenständiges Fhemmodul wünschenswert, aber ich bin überaus Glücklich hiermit eine Steuerungsmöglichkeit zu haben.
LG
Rene

FrankL

#22
Hallo Gisbert. Grundsätzlich würde ich für das "Auto Discovery Prefix*" und das "State Set Prefix*" mit unterschiedlichen Prefixen arbeiten. Alles andere fände ich unglücklich, wenn man bestimmte Topics auswerten will. Aber ich denke, dass ist nicht der Fehler.

Die Funktionsweise des Flows in Node-Red gibt vor, dass immer nur geänderte Werte gepublisht werden. Das heißt, es kann sein, dass alle Messages gesendet worden sind, bevor du dein Device in FHEM angelegt hast. Da die Messages standardmäßig ohne Retain-Flag gesendet werden, sind sie auch im Broker im Nachgang nicht mehr sichtbar. Du könntest das mal testen, indem du jetzt z.B. in der Onecta-App den Modus vom Innengerät mal wechselst (z.B. von heating auf auto), oder das Gerät über die Onecta-App mal aus- oder anschaltest. Dann ein kleines bißchen Geduld ... (weil der Status vom Flow nur alle 30 Sekunden abgerufen wird) Dann müsste durch die Statusänderung eine neue Nachricht von Node-Red an deinen Broker gehen bzw. bei FHEM ausgewertet werden können. Im Zweifel kannst du auch Node-Red neu starten, dann müssten (glaube ich) alle Nachrichten beim ersten Mal gepublished werden.

Falls du die Nachrichten im Broker als "retain" haben möchtest, kannst du in Node-Red im Flow einen Doppelklick auf das mqtt-Element  (also das mqtt-out Element ganz rechts im Flow) machen und dort in den Eigenschaften bei Retain "wahr" auswählen. Dann bleiben dir zukünftig die Nachrichten im Broker erhalten bzw. ist auch im Broker der "aktuelle" Zustand der einzelnen Eigenschaften sichtbar.

Für das Senden von Befehlen musst du in deinem MQTT_Device mit dem Attribut "publishSet" oder "publishSet_<reading>" arbeiten. Da ich bei mir MQTT2_Device benutze, ist die Syntax zu den von mir geposteten Beispiel anders.

Die Topics fürs Senden wären bei dir folgende (vorausgesetzt du lässt dein"State Set Prefix*" in Node-Red auf "daikin" eingestellt):

daikin/switch/power/DaikinAP09627/set
daikin/climate/setpoint/DaikinAP09627/targetTempCmd
daikin/select/mode/DaikinAP09627/set
daikin/select/fandirection/DaikinAP09627/set
daikin/select/fanspeed/DaikinAP09627/set

Grüße Frank

Gisbert

Hallo Frank,

da war ich wohl zu ungeduldig.
Publishen, d.h. die Steuerung und das Auslesen funktionieren jetzt.
Damit kann ich das Gerät in Fhem steuern und bin nicht mehr auf das unflexible Timer-Programm in der Onecta-App angewiesen.
Ich bin echt begeistert, was du und andere an Wissen geschaffen und zusammengetragen getragen haben, um bei den Daikin-Klimageräten noch eine gute Lösung zu finden.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

Hallo Frank,

das, was ich brauche funktioniert 1A. Ich kann die Temperatur ändern und das Gerät an- und auschalten. Das funktioniert ohne merkbare Verzögerung. Alles andere ist eine bessere Schätzung (Innen- und Außentemperatur) und/oder die Topics kommen nur sehr sporadisch rein, selbst, wenn sich was geändert hat. Die verbrauchte Energie (kWh) ist auch nur eine grobe Schätzung. Meiner Messung mit einem PZEM-004T und ESP8266 vertraue ich auf jeden Fall viel mehr als der Angabe des Gerätes.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

FrankL

Hallo Gisbert,

die Werte sind halt so, wie sie das Gerät mißt bzw. in der Cloud (oder Onecta App) enthalten sind. Die gemessene Innentemperatur wird halt in unmittlbarer Nähe zum "Wärmeerzeuger" gemessen und wird dadurch im Winter immer höher liegen, als die tatsächliche Raumtemperatur. Die verbrauchte Energie wird glaube ich nur in stündlichen Intervallen gemessen oder aktualisiert. Insoweit ist eine anderweitige Verbrauchsmessung auf jeden Fall genauer. Aber für den relativen Tages- oder Wochenvergleich bekommt man ganz brauchbare Werte.

Grüße Frank

skycrack

#26
Hallo Frank,
Ich habe an der Zuleitung meiner Daikin einen Zähler mit Tuyaanbindung und auch noch einen seperaten zum "analogen" ablesen und kann bestätigen, dass die App immer etwas weniger anzeigt.
Störend in der App ist jedoch, dass die Verbrauchswerte immer nur pro Innengerät abrufbar sind und nicht kumuliert. Unverständlich warum die das nicht einfach mit anzeigen können.
Hier wurde der Flow ja erweitert um die Berechnung der Tageswerte https://www.domoticz.com/forum/viewtopic.php?p=297472#p297472
Dieser gibt aber die Werte nicht an das MqTT Device weiter. Sicher nicht das Problem wenn man sich damit auskennt. Es wäre schön diese als Readings ebenso im Fhem anzeigen zu können. Ein Userreading mit der Tagessumme ist dann auch kein Problem mehr.
Hat das eventuell schon einer von euch implementiert?

PS:
Ich analysiere seit Einbau der Geräte ziemlich viel mit den Verbrauchswerten, Schaltet man eine in den ECONO Modus ist die max Stromaufnahme auf 70% beschränkt.
Wenn man nun noch die Bedarfsteuerung aktiviert ( z.b) 50% dann Moduliert das Aussengerät auch noch weiter runter im Verbrauch ( natürlich auch in der Leistung ) Allerdings bei mehreren Geräten und der Nutzung der Bedarfsteuerung zählt immer das Gerät mit der höheren prozentualen Einstellungsstufe.

Verbrauch aller Geräte heute in der APP: 12,1kwh
Verbrauch auf dem digitalen Zähler: 13,72

Euch allen einen schönen Abend.

FrankL

Nachdem die Node-Red-Lösung zwischendurch bei mir immer mal "Kommunikationsprobleme" hatte, ohne dass ich es direkt mitbekommen habe, hatte mich dann doch der Ehrgeiz gepackt, ein Modul für FHEM zu schreiben. Ich wollte vorher noch nichts groß ankündigen, bevor ich nicht sicher war, dass es am Ende auch gut funktioniert. Und nun ist es soweit. Das Modul 58_DaikinCloud.pm habe ich hier:

https://forum.fhem.de/index.php?topic=133044.0

vorgestellt. Damit erübrigt sich der Weg über irgendwelche externe Programme. Mein Produktivsystem läuft bereits seit mehreren Wochen mit dem 58_DaikinCloud-Modul stabil und ich bin äußerst zufrieden.

MfG Frank