Daikin Klimanalage über http (WLAN) steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • jensmh
    Smart Home'r
    • 25.08.2015
    • 96

    Daikin Klimanalage über http (WLAN) steuern

    Hallo liebe Foristen,

    verstreut über viele Threads finde ich einige Informationen zum Steuern von DAIKIN Klimaanlagen.

    Daikin hat einen eigenen WiFi Controller (bei mir BRP069B41) der über ein eApp gesteuert werden kann.

    Hier aus dem Forum hab ich den Github Link mit der Dokumentation der Befehle gefischt: https://github.com/ael-code/daikin-control

    Schnell eine virutellen Ausgang definiert .. und läuft.

    ABER: Das Kilmagerät erwartet immer eine vollständige Konfiguration aus

    - Modus (Kühlen, Heizen,...)
    - Temperatur SOLL
    - Ventilatorgeschwindigigkeit
    - Modus für die Luftschaufeln (also schwenken des Luftstroms oder konstant / automatisch)

    Damit die Menge der gültigen Kombinationen sehr groß, der Virtuelle Ausgang verdaut nur einern Parameter.

    Nach einigem Überlegen habe ich mir ein PicoC Script geschrieben, das den Befehl zusammenbaut und per httpget auch sendet.

    Das funktioniert sehr gut, hat aber eine Downside:

    - Wenn ich die Klimasteuerung in die Raumseiten einbeiden will (ich hab 4 Innen-Geräte) müsste ich das Script für jeden Raum laufen lassen, damit auf einen Wechsel von z.B. der Temperatur in Raum 1 reagiert werden kann. Ich kann nicht ausschliessen, das wer in Raum 2 den "Ventilator" hochdrehen will.

    - KEINE Zuordnung zu den Räumen in der UX, sondern nur die Kategorie "Klima / Zentral" und dort über einen Radio-Button den Raum vorwählen und dann einen "Vorwählen / Senden" Prozess.


    Hat wer eine bessere Idee?

    Zuletzt geändert von jensmh; 30.09.2019, 12:57.
  • jensmh
    Smart Home'r
    • 25.08.2015
    • 96

    #2
    Hier noch das Script:

    /*
    Create the URL to control DAIKIN AC
    Using HTTP over WiFi Controller

    Input
    AI1: On/Off
    AI2: FanSpeed (FanRate)
    AI3: Swing Mode
    AI4: Temperature
    TI1: IP for AC WiFi Adapter

    Output: Result String (OK or ERROR)

    Created by Jens M Hoevelmann 2019,
    Version 1.0

    */

    // EXAMPLE OF RESULT: http://192.168.1.201/aircon/set_cont...rate=A&f_dir=0
    /* Parameters

    FanSpeed
    A = Auto
    B = Silent
    3-7 = Manual Levels

    SwingMode
    0 all wings stopped
    1 vertical wings motion
    2 horizontal wings motion
    3 vertical and horizontal wings motion

    Operating Modes (here fixed to 3)
    value desc
    2 DEHUMDIFICATOR
    3 COLD
    4 HOT
    6 FAN
    0-1-7 AUTO

    Temperature in Centigrades
    */

    #define SLEEPTIME 1000 //Sleep in ms -> only one change per second is processed
    #define LOGGING 2 // Log all here (0-1 = Log nothing)


    // Globals
    char cACCommand[128]; //Command String
    char cTargetIP[18]; //IP Adress for AC

    int nEvents; // Event: Input Value Changes as Bit-Field from SPS

    float fPowState; // Power State
    float fTemp; // Target Temperature
    float fFanSpeed; // Speed for Fan
    float fSwingMode; // Moving Wings

    char cFanSpeed[2]; // Char Versions of above
    char cPowState[2]; // used for command string
    char cTemp[2];
    char cSwingMode[2];

    int iCheckLen; // Length-Check



    while(1==1){ // Main loop
    sleep(SLEEPTIME); // Limit CPU Load and sleed for

    nEvents = getinputevent(); // Read Input Values from SPS

    if (nEvents & 0xF8){ //Input Values Bit Mask --> React to all changes
    // Initialise the Input Values
    // --> SPS delivers always float for standard building blocks
    fPowState = getinput(0);
    fFanSpeed = getinput(1);
    fSwingMode = getinput(2);
    fTemp = getinput(3);

    // Read Text Input --> IP Adress (Use Status Block to get configurable text)
    cTargetIP = getinputtext(0);

    // Check if length is correct, no other IP syntax check
    iCheckLen = strlen(cTargetIP);

    // If IP has wrong length (1.1.1.1 -> Min 7
    // 123.123.123.123 > 15 + /0 -> Max 16)
    // Do nothing but log
    if ((iCheckLen<=6) || (iCheckLen>16))
    {
    setoutputtext(0,"IP Format Error"); // to UI
    if (LOGGING>=2)
    {
    printf("Check IP Format %s",cTargetIP); // LogFile
    }
    }
    else
    {
    // Check if input values are allowed and set result string
    // If any value is invalid, default setting is chosen

    switch (fFanSpeed) {
    case 10: cFanSpeed = "A"; break;
    case 11: cFanSpeed = "B";break;
    case 3: cFanSpeed = "3";break;
    case 4: cFanSpeed = "4";break;
    case 5: cFanSpeed = "5";break;
    case 6: cFanSpeed = "6";break;
    case 7: cFanSpeed = "7";break;
    default: cFanSpeed = "A";break;
    }

    switch (fPowState) {
    case 0: cPowState = "0"; break;
    case 1: cPowState = "1";break;
    default: cPowState = "0";break;
    }

    switch (fSwingMode) {
    case 0: cSwingMode = "0"; break;
    case 1: cSwingMode = "1";break;
    case 2: cSwingMode = "2";break;
    case 3: cSwingMode = "3";break;
    default: cSwingMode = "0";break;
    }

    // Limit temperature to 18 to 31 C
    if (fTemp < 18)
    {
    fTemp=18;
    }

    if (fTemp >31)
    {
    fTemp=31;
    }

    //Create Command-String
    sprintf(cACCommand,"/aircon/set_control_info?pow=%s&mode=3&stemp=%f&shum=0&f_r ate=%s&f_dir=%s",cPowState,fTemp,cFanSpeed, cSwingMode );

    // Send Command to AC
    char* cRequestResult = httpget(cTargetIP,cACCommand);

    //Send Result to Output
    if (strlen(cRequestResult)>= 6) // Expected result:
    // ret=OK,adv=
    { // Check for OK in response string
    if (strlen(strstr(cRequestResult,"OK"))>0)
    {
    setoutputtext(0,"AC Command OK");

    }
    else // No OK --> Error
    {
    setoutputtext(0,"AC Command ERROR");

    }

    }
    else // No Response (wrong IP, connectivity
    {
    setoutputtext(0,"AC No Response");

    }

    //Send to logfile of SPS
    if (LOGGING>=2)
    {
    printf(cTargetIP); // Used IP
    printf(cACCommand); // Command as sent
    printf(cRequestResult); // Response from AC

    }

    free(cRequestResult); // Free Memory for Result-String
    }
    }
    // End Main Loop
    }

    Kommentar

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11217

      #3
      Im Grunde lässt sich das auch über einen Statusbaustein machen. Vier Eingänge mit den unterschiedlichen Werten.
      Am Textausgang lassen sich die vier Werte zu einem einzelnen String kombinieren, der mit v im virtuellen Http-Ausgang übernommen wird.
      Jede Änderung eines Eingangs liefert einen neuen String am Ausgang.
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • jensmh
        Smart Home'r
        • 25.08.2015
        • 96

        #4
        Gute Idee Christian!

        Wenn das klappt kann ich das Script wegwerfen. Eigene Programmierung mit Zeigern und ohne echten Debugger ist immer ein Risiko für Memory-Leaks!

        Danke,

        Jens
        Zuletzt geändert von jensmh; 07.10.2019, 14:25. Grund: Typo

        Kommentar

        • ledchab
          LoxBus Spammer
          • 10.02.2016
          • 423

          #5
          Zitat von Christian Fenzl
          Im Grunde lässt sich das auch über einen Statusbaustein machen. Vier Eingänge mit den unterschiedlichen Werten.
          Am Textausgang lassen sich die vier Werte zu einem einzelnen String kombinieren, der mit v im virtuellen Http-Ausgang übernommen wird.
          Jede Änderung eines Eingangs liefert einen neuen String am Ausgang.
          Hallo Christian,
          habe da schon eine Weile rumprobiert

          gibt es eine Möglichkeit eine Auswahl aus:

          FanSpeed
          A = Auto
          B = Silent
          3-7 = Manual Levels

          dem Statusbaustein am Eingang zur Verfügung zu stellen?

          Kommentar


          • Christian Fenzl
            Christian Fenzl kommentierte
            Kommentar bearbeiten
            Mit den Radiotasten zum Beispiel.
        • ledchab
          LoxBus Spammer
          • 10.02.2016
          • 423

          #6
          Danke für den Hinweis

          Habe es mal für einen Raum umgesetzt - Radiobutton und Statusbaustein für Lüfterstufe (A,S,3-7)

          und dann auf einen Statusbaustein für den String


          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Bildschirmfoto 2019-10-10 um 16.34.53.png Ansichten: 0 Größe: 65,9 KB ID: 215873
          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Bildschirmfoto 2019-10-10 um 16.36.54.png Ansichten: 0 Größe: 496,3 KB ID: 215874


          Edit: wobei das Problem mit dem HTTP "Befehl bei EIN" beim Neustart, seitens Loxone noch nicht geklärt ist
          Zuletzt geändert von ledchab; 10.10.2019, 16:44.

          Kommentar


          • ledchab
            ledchab kommentierte
            Kommentar bearbeiten
            ja erstmal fest verdrahtet könnte man aber m.e. auch über einen weiteren Statusbaustein lösen - brauche ich aber momentan nicht

          • seeli
            seeli kommentierte
            Kommentar bearbeiten
            Hallo, könntest du mir mal die Einträge vom Statusbaustein schicken ??
            Gruß Jochen

          • ledchab
            ledchab kommentierte
            Kommentar bearbeiten
            da ist ja nicht viel drinnen da wird "nur" der Befehl aus den 4 Eingängen zusammengesetzt
            /aircon/set_control_info?pow=<v1>&mode=3&shum=0&f_rate=<v2 >&f_dir=<v3>&stemp=<v4.1>
        • croxxi
          Extension Master
          • 30.01.2018
          • 168

          #7
          Hi,

          ich habe auch meine Daikin mittles HTTP angebunden. Jetzt wollte ich das Spasshalber auch mal mit Temperatur über Statusbaustein probieren, aber irgendwie will der virtuelle HTTP Ausgang nichts schicken. Ich übergebe nach dem Statusbaustein den String an den virtuellen HTTP Ausgang. Statt der URL hab ich dort jetzt die Variable "<v>" eingefügt. Das sollte doch passen oder? Ich schalte bereits die Klima ein und aus mittels HTTP Ausgang. Aber da verwende ich halt die fixe URL!

          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: 20-10-_2019_02-30-36.png Ansichten: 0 Größe: 12,9 KB ID: 216845Klicke auf die Grafik für eine vergrößerte Ansicht  Name: 20-10-_2019_02-30-16.png Ansichten: 0 Größe: 9,6 KB ID: 216846Klicke auf die Grafik für eine vergrößerte Ansicht  Name: 20-10-_2019_02-29-40.png Ansichten: 0 Größe: 7,8 KB ID: 216847
          Zuletzt geändert von croxxi; 20.10.2019, 02:43.

          Kommentar

          • ledchab
            LoxBus Spammer
            • 10.02.2016
            • 423

            #8

            Ausgangsbefehl ist kein Digitalausgang ???

            Edit: bei mir kein Digitalausgang
            Zuletzt geändert von ledchab; 20.10.2019, 10:57.

            Kommentar


            • croxxi
              croxxi kommentierte
              Kommentar bearbeiten
              Ahh Danke, muss ich checken ich glaube es steht tatsächlich auf Digital

              EDIT: Yes Sir das wars Funktioniert jetzt pipi fein, danke nochmal für den Hinweis!
              Zuletzt geändert von croxxi; 20.10.2019, 19:57.
          • Triple-M
            LoxBus Spammer
            • 17.12.2018
            • 284

            #9
            Hi, ich würde das ganze auch gerne bei mir programmieren aber ich bin da leider nicht ganz so bewandert drin. Gibt es evtl. ein HowTo oder eine andere Anleitung wie man Stück für Stück vorgeht? Gerade Hilfe mit den HTTP-Befehlen wäre super.

            Kommentar

            • jensmh
              Smart Home'r
              • 25.08.2015
              • 96

              #10
              Mein Script oben zeigt das Prinzip recht gut. Die größte Herausforderung ist die ganzen Parameter sinnvoll unterzubringen, weil es entweder nur mit dem Script geht (und pico-c frisst Ressourcen) oder mit einigen festen Parametern mit dem Status-Block.

              Ich hab jetzt auf den Status Block umgebaut um meinen Server zu schonen, ein Script pro Raum wäre doch was viel.

              Probier es am besten mal im Browser aus 'http://192.168.1.202/aircon/set_control_info?pow=1&mode=3&stemp=18.0&shum=0&F_ rate=3&F_dire=6' mit der IP Deiner Klimaanlage vorne sollte sie einschalten

              Wenn Du das verstanden hast, wie du die richtigen Parameter manuell überträgst, dann wird es Zeit für den zweiten Schritt - den Status Block zu verstehen um den Teil ab /aircon zu erzeugen.

              Wenn Du den richtig zusammengebaut hast (z.B. erst mal in einen Merke, den Du anzeigen lässt in der Visualisierung) kannst Du Dich mit dem dritten Schritt Virtueller http Ausgang und https Befehl auseinadernsetzen (siehe oben das Beispiel)

              Kommentar

              • croxxi
                Extension Master
                • 30.01.2018
                • 168

                #11
                Kennt jemand den http Parameter für dieses "Intelligent Eye"?

                Kommentar

                • Triple-M
                  LoxBus Spammer
                  • 17.12.2018
                  • 284

                  #12
                  Kann man den internen Temperatursensor der Klimaanlage überschreiben mit der Temperatur des Touch Pure?

                  Kommentar


                  • Faxe88
                    Faxe88 kommentierte
                    Kommentar bearbeiten
                    Nein
                • jensmh
                  Smart Home'r
                  • 25.08.2015
                  • 96

                  #13
                  Zitat von Triple-M
                  Kann man den internen Temperatursensor der Klimaanlage überschreiben mit der Temperatur des Touch Pure?
                  Warum willst Du das tun?

                  Ich steuere die Klimaanlage manuell an. Gebe ihr zwar eine Ziel-Temperatur vor, aber ob die erreicht ist, errechne ich aus dem Mittelwert von meinen externen Sensoren und dem internen Sensor. Wenn die Ziel-Temperatur erreicht ist, dann wird die Klimaanlage mit einer Verzögerung von 5 Minuten ausgeschaltet (um sehr kurze Laufzeiten zu vermeiden).

                  Inzwischen nutze ich dafür die intelligente Raumregelung - das klappt super als Klimaautomatik fürs Haus.

                  Das einzige was ich noch gerne hätte wäre einen "Kühlkurve" undabhängig von der Heizkurve. Wenn ich im Winter auf 21°C fahren will, ist das im Sommer bei 34°C (wie gestern) doch deutlich zu kalt. Da sind dann eher 24°C angemessen.


                  Kommentar


                  • Triple-M
                    Triple-M kommentierte
                    Kommentar bearbeiten
                    Ich wollte damit auch das Takten der Klimaanlage vermeiden weil die beiden Temperaturen doch gut auseinander liegen. Wie hast du das gemacht mit dem Mittelwert? Hast du evtl. einen Screenshot?
                    Ich hatte das im Sommer auch über die intelligente Raumregelung installiert aber dann später doch auf manuell umprogrammiert weil die Klimaanlage gerade nachts sehr oft an und aus ging.

                  • Triple-M
                    Triple-M kommentierte
                    Kommentar bearbeiten
                    Wie ist denn der Befehl für den internen Temperatur-Sensor?
                • HIS-Loxone
                  MS Profi
                  • 26.08.2015
                  • 545

                  #14
                  jensmh könnten wir einen auszug deiner Config bekommen?

                  Kommentar


                  • jensmh
                    jensmh kommentierte
                    Kommentar bearbeiten
                    Klar... ich bin gerade am basteln mit dem neuen Intelligente Raumregelung.. ich melde mich direkt bei Dir!

                  • Triple-M
                    Triple-M kommentierte
                    Kommentar bearbeiten
                    Hi. Ich hätte auch Interesse. Wäre super wenn das klappen würde.
                • HIS-Loxone
                  MS Profi
                  • 26.08.2015
                  • 545

                  #15
                  bin gerade am Versuchen denn IRR die Werte auf die Daikin über WLan zu übertragen.
                  was möchte ich machen

                  die werte HC, QM, AQT sollten ja reichen um der Daikin gewisse Einstellungen zu schicken.
                  im Browser kann ich ja ihr schon werte schicken nur über loxone schaff ich es noch nicht.

                  habs eine Idee?

                  Kommentar

                  Lädt...