[GELÖST] Daikin Klimaanlage

Begonnen von gamauf, 26 November 2015, 17:07:15

Vorheriges Thema - Nächstes Thema

gamauf

Hallo!
Für jemanden, der bereits einmal ein FHEM-Modul zur Ansteuerung eines Gerätes via REST API geschrieben hat ist es wahrscheinlich eine Kleinigkeit auf Basis dieser Infos https://github.com/ael-code/daikin-control ein Modul für Daikin Klimaanlagen zu schreiben.
Ich müsste mich da erst ein mal ein paar Tage einarbeiten! (und dafür fehlt mir derzeit die Zeit)
Hat jemand Lust dazu?
Ich kann das Modul dann testen. :-)
Grüße
Rainer

Alex76

Man könnte für die Ansteuerung auch den Quellcode von Openhab portieren :

Daikin Klimaanlagen: https://github.com/openhab/openhab/wiki/Daikin-Binding
Samsung Klimaanlagen: https://github.com/openhab/openhab/wiki/Samsung-AC-binding
Domestic Klimaanlagen: http://domoticforall.blogspot.co.at/2015/06/control-air-conditioner-with-openhab.html?m=1

Da ich keine der Systeme mit Netzwerkeinbindung besitze und mir sowieso chronisch die Zeit fehlt kann ich da leider sonst nicht weiter helfen.

Bin auch erst beim verstehen wie fhem überhaupt funktioniert und hab immer nur ein paar Stunden pro Woche Zeit wenn die Freundin nicht da ist. :(

Lg

Alex


mmattern

#2
Hallo zusammen,

ich habe das bei mir wie folgt gelöst:
1) Informationen aus der Klimaanlage nach FHEM schreiben:
a) Ein Python-Skript fragt (per CRON-Job) regelmäßig den Status des Innengeräts per HTTP-REST-API ab
b) Eine Perl-Hilfsunktion, die per at-Kommando regelmäßig den Status nach FHEM schreibt
(Zweistufiger Ansatz, um Auswirkungen auf FHEM bei möglichen Timeouts im DAIKIN-Web-Interface zu vermeiden)

2) Klimaanlage per FHEM steuern:
Perl-Hilfsfunktion, die den gewünschten Status per HTTP-REST-API in das Innengerät schreibt.

Python-Skript:

import requests
import json
import re

def getAC_State( ip ):
   url_get = 'http://'+ip+'/aircon/get_control_info' # Set destination URL here
   url_get_sensor = 'http://'+ip+'/aircon/get_sensor_info' # Set destination URL here

   r = requests.get(url_get)

   d1 = dict()

   s = r.text
   i = 0
   k = ''
   building_key = True
   while (i <= len(s)-1):
      if s[i] == '=':
          building_key = False
          v = ''
      elif s[i] == ',':
          d1[k] = v
          k = ''
          building_key = True
      else:
          if (building_key):
             k += s[i]      
          else:
            v += s[i]
      i += 1
   d1[k] = v

   r = requests.get(url_get_sensor)

   s = r.text
   i = 0
   k = ''
   building_key = True
   while (i <= len(s)-1):
      if s[i] == '=':
          building_key = False
          v = ''
      elif s[i] == ',':
          d1[k] = v
          k = ''
          building_key = True
      else:
          if (building_key):
             k += s[i]      
          else:
            v += s[i]
      i += 1
   d1[k] = v

   f_rate = {"A": "Auto", "B": "Silence", "3":"Level_1", "4":"Level_2", "5":"Level_3", "6":"Level_4", "7":"Level_5"}

   mode = {"0":"AUTO", "1": "AUTO", "2":"DEHUMIDIFICATOR","3":"COLD","4":"HOT","5":"5?","6":"FAN","7":"AUTO"}

   f_dir = {"0":"stopped", "1":"vertical", "2": "horizontal", "3":"3D"}

   pow = {"0": "OFF", "1": "ON"}

   ac_state = dict()

   ac_state['otemp'] = d1['otemp']
   ac_state['htemp'] = d1['htemp']
   ac_state['stemp'] = d1['stemp']
   ac_state['mode'] = mode[d1['mode']]
   ac_state['raw_operating_mode'] = d1['mode']
   ac_state['f_rate'] = f_rate[d1['f_rate']]
   ac_state['f_dir'] = f_dir[d1['f_dir']]
   ac_state['power'] = pow[d1['pow']]
   ac_state['ip'] = ip
   
   return ac_state

all_ac = dict()
all_ac["AC_1"] = getAC_State("[i]<ip>[/i]")
all_ac["AC_2"] = getAC_State("[i]<ip>[/i]")

fileName = "/opt/fhem/ac_state.txt"

with open(fileName, "w") as f:
   print >>f, json.dumps(all_ac)


Ich habe das unter /opt/fhem/readDaikin.py abgelegt und lasse es mittels cron alle 15 Sekunden aufrufen.
Dazu habe ich folgende Einträge in /etc/crontab ergänzt:

* *     * * *   root    python /opt/fhem/readDaikin.py
* *     * * *   root    sleep 15; python /opt/fhem/readDaikin.py
* *     * * *   root    sleep 30; python /opt/fhem/readDaikin.py
* *     * * *   root    sleep 45; python /opt/fhem/readDaikin.py


Es wird dann regelmäßig ein file "/opt/fhem/ac_state.txt" erstellt, das den Status aller abgefragten Innengeräte als JSON enthält, z.B.:
{"AC_1": {"otemp": "22.0", "power": "OFF", "f_rate": "Silence", "ip": "192.168.178.44", "stemp": "22.0", "mode": "COLD", "f_dir": "3D", "raw_operating_mode": "3", "htemp": "22.0"}, "AC_2": {"otemp": "22.0", "power": "OFF", "f_rate": "Silence", "ip": "192.168.178.37", "stemp": "23.0", "mode": "COLD", "f_dir": "horizontal", "raw_operating_mode": "3", "htemp": "23.0"}}

Funktionen für 99_MyUtils.pm:
sub getACState
{
   my $isopen = open(ACSTATE, "/opt/fhem/ac_state.txt");
   while (!($isopen))
   {
      sleep(7);
      $isopen = open(ACSTATE, "/opt/fhem/ac_state.txt")
   }
   
   my $json;
   while (<ACSTATE>) {
chomp;
    $json .= $_;
   }
   close(ACSTATE);
     
   my %all_ac = %{decode_json($json)};
   
   fhem("attr nfAC_1 disable 1");
   fhem("setreading AC_1 otemp " . $all_ac{"AC_1"}{"otemp"});   
    fhem("setreading  AC_1 htemp " . $all_ac{"AC_1"}{"htemp"});   
   fhem("setreading  AC_1 desired-temp " . $all_ac{"AC_1"}{"stemp"});   
   fhem("setreading  AC_1 operation_mode " . $all_ac{"AC_1"}{"mode"});   
   fhem("setreading  AC_1 f_dir " . $all_ac{"AC_1"}{"f_dir"});   
   fhem("setreading  AC_1 f_rate " . $all_ac{"AC_1"}{"f_rate"});   
   fhem("setreading  AC_1 power " . $all_ac{"AC_1"}{"power"});   
   fhem("setreading  AC_1 ip " . $all_ac{"AC_1"}{"ip"});   
   fhem("attr nfAC_1 disable 0");
   
   fhem("attr nfAC_2 disable 1");
   fhem("setreading  AC_2 otemp " . $all_ac{"AC_2"}{"otemp"});   
   fhem("setreading  AC_2 htemp " . $all_ac{"AC_2"}{"htemp"});   
   fhem("setreading  AC_2 desired-temp " . $all_ac{"AC_2"}{"stemp"});   
   fhem("setreading  AC_2 operation_mode " . $all_ac{"AC_2"}{"mode"});   
   fhem("setreading  AC_2 f_dir " . $all_ac{"AC_2"}{"f_dir"});   
   fhem("setreading  AC_2 f_rate " . $all_ac{"AC_2"}{"f_rate"});   
   fhem("setreading  AC_2 power " . $all_ac{"AC_2"}{"power"});   
   fhem("setreading  AC_2 ip " . $all_ac{"AC_2"}{"ip"});   
   fhem("attr nfAC_2 disable 0");
   fhem("set 20ThermoDummy " . $all_ac{"AC_2"}{"otemp"}); 
}


nfAC_1 und nfAC_2 sind notify's, die dafür sorgen, dass die gelesenen Werte korrekt in die Readings der für jedes Innengerät angelegten Dummys geschrieben werden:

define nfAC_1 notify AC_1:(power|desired-temp|f_dir|f_rate|operation_mode).* {\
   my @list = $EVENT =~ /(\S+)(:?\s)(\S+)/g;;\
   if (($list[0] eq "desired-temp") or ($list[0] eq "power") or ($list[0] eq "f_dir") or ($list[0] eq "f_rate") or ($list[0] eq "operation_mode")) {\
  Log(3, "nfAC_1: " . $list[0] . " " . $list[2]);;\
  fhem("setreading AC_1 " . $list[0] . " " . $list[2]);;\
  setACState("AC_1");;\
   }\
}

define nfAC_2 notify AC_2:(power|desired-temp|f_dir|f_rate|operation_mode).* {\
   my @list = $EVENT =~ /(\S+)(:?\s)(\S+)/g;;\
   if (($list[0] eq "desired-temp") or ($list[0] eq "power") or ($list[0] eq "f_dir") or ($list[0] eq "f_rate") or ($list[0] eq "operation_mode")) {\
  Log(3, "nfAC_2: " . $list[0] . " " . $list[2]);;\
  fhem("setreading AC_2 " . $list[0] . " " . $list[2]);;\
  setACState("AC_2");;\
   }\
}


Die Dummy-Definitionen in fhem.cfg sehen wie folgt aus:

define AC_1 dummy
attr AC_1 setList power:ON,OFF f_rate:Auto,Silence,Level_1,Level_2,Level_3,Level_4,Level_5 f_dir:stopped,vertical,horizonal,3D operation_mode:AUTO,COLD,HOT,DEHUMIDIFICATOR,FAN desired-temp:slider,18,1,25 otemp htemp
attr AC_1 stateFormat power
attr AC_1 webCmd power:f_rate:f_dir:operation_mode:desired-temp


Zuletzt noch die Perl-Hilfsfunktion für 99_MyUtils.pm, die Statusänderungen aus FHEM an das Innengerät überträgt:

sub setACState($)
{
  my $AC = $_[0];
 
  my $ip = ReadingsVal("$AC", "ip", "n/a");
 
  my $url = "http://" . $ip . "/aircon/set_control_info";
 
  my $pow = ReadingsVal("$AC", "power", "N");
  my $f_rate = ReadingsVal("$AC", "f_rate", "0");
  my $f_dir = ReadingsVal("$AC", "f_dir", "0");
  my $s_temp = ReadingsVal("$AC", "desired-temp", "0");
  my $mode = ReadingsVal("$AC", "operation_mode", "0");
 
  my $ua = LWP::UserAgent->new;
   
  my %lk_f_rate = (
    "Auto" => "A",
    "Silence" => "B",
    "Level_1" => "3",
    "Level_2" => "4",
    "Level_3" => "5",
    "Level_4" => "6",
    "Level_5" => "7"
  );
 
  my %lk_f_dir = (
    "stopped" => "0",
    "horizontal" => "2",
    "vertical" => "1",
    "3D" => "3"
  );

  my %lk_mode = (
     "AUTO" => "0",
     "DEHUMIDIFICATOR" => "2",
     "COLD" => "3",
     "HOT" => "4",
     "FAN" => "5"
   );

  my %lk_pow = ("OFF" => "0", "ON" => "1");
   
  # add POST data to HTTP request body
  my $post_data ="pow=" . $lk_pow{$pow};
   $post_data .= "&mode=" . $lk_mode{$mode};
   $post_data .= "&stemp=" . $s_temp;
   $post_data .= "&shum=0";
   $post_data .= "&f_rate=" . $lk_f_rate{$f_rate};
   $post_data .= "&f_dir=" . $lk_f_dir{$f_dir};
   
   my $req = HTTP::Request->new(POST => $url);
   
   $req->content($post_data);
 
   Log(3, "setACState: post_data = '" . $post_data . "'");

   my $resp = $ua->request($req);
  if ($resp->is_success) {
      my $message = $resp->decoded_content;
      Log(3, "setACState: Received reply: $message");
  }
  else
  {
    Log(3, "setACState: HTTP POST error code: " . $resp->code);
    Log(3, "setACState: HTTP POST error message: " . $resp->message);
  }
}


Funktioniert bei mir einwandfrei...

Beste Grüße
Michael
2x Raspberry Pi, 2x HM-CFG-LAN, 2x HM-CFG-USB, 2x HM-ES-PMSw1-Pl, 3x HM-LC-BL1-FM, 10x HM-LC-Bl1PBU-FM, 6x HM-LC-Sw1PBU-FM-CustomFW, 2x HM-PB-2-WM55-2, 4x HM-PB-6-WM55, 2x HM-SEC-MDIR-2, 6x HM-SEC-RHS, 2x HM-SEC-WIN, 2x HM-Sys-sRP-Pl

pejonp

Hallo,

hier wurde auch schon die Daikin-Klimaanlage eingebunden (https://forum.fhem.de/index.php/topic,27029.msg346345.html#msg346345 oder https://forum.fhem.de/index.php/topic,27029.msg347450.html#msg347450) und die Daten dann per HTTPMOD verarbeiten.

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

gamauf

#4
Hallo Michael!
Danke für Deinen Beitrag! Er hat mich animiert mich nochmal mit dem Thema zu beschäftigen. Ich wollte zum Abfragen und Steuern der Klimaanlage aber ausschließlich FHEM-Mittel einsetzen. Bei meinen Recherchen habe ich das HTTPMOD Modul entdeckt.

Ich habe zwei HTTPMOD Devices verwendet. Eines zum Abfragen der Sensorwerte und das zweite zum Abfragen uns Setzten der Betriebsparameter.
(siehe Dateianhang)

Für die Steuerung hab ich mich erstmal auf das Notwendigste beschränkt: Ein/Aus schalten (Kilick auf die Schneeflocke/devStateIcon) & Soll-temperatur setzen (Slider).

Hier die config für die Sensor-abfrage:
define AC_s_WZ HTTPMOD http://192.168.0.321/aircon/get_sensor_info 60
attr AC_s_WZ userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex
attr AC_s_WZ enableControlSet 1
attr AC_s_WZ group AC
attr AC_s_WZ icon frost
attr AC_s_WZ reading01Name ret
attr AC_s_WZ reading01Regex ret=([^,]*)
attr AC_s_WZ reading02Name htemp
attr AC_s_WZ reading02Regex htemp=([^,]*)
attr AC_s_WZ reading03Name hhum
attr AC_s_WZ reading03Regex hhum=([^,]*)
attr AC_s_WZ reading04Name otemp
attr AC_s_WZ reading04Regex otemp=([^,]*)
attr AC_s_WZ reading05Name err
attr AC_s_WZ reading05Regex err=([^,]*)
attr AC_s_WZ reading06Name cmpfreq
attr AC_s_WZ reading06Regex cmpfreq=([^,]*)
attr AC_s_WZ room Wohnzimmer
attr AC_s_WZ stateFormat Innen: htemp °C Außen: otemp °C

define FileLog_AC_s_WZ FileLog ./log/AC_s_WZ-%Y.log AC_s_WZ
attr FileLog_AC_s_WZ logtype temp4hum6:Temp/Hum,text
attr FileLog_AC_s_WZ room Wohnzimmer
define SVG_AC_s_WZ SVG FileLog_AC_s_WZ:SVG_AC_s_WZ:CURRENT
attr SVG_AC_s_WZ label "Daikin WZ Min $data{min1}, Max $data{max1}, Last $data{currval1} , Daikin Dach Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr SVG_AC_s_WZ room Plots,Wetter


und hier die config für die Betriebsparameter:
define AC_c_WZ HTTPMOD http://192.168.0.321/aircon/get_control_info 60
attr AC_c_WZ userattr reading10Name reading10Regex reading11Name reading11OMap reading11Regex reading12Name reading12OMap reading12Regex reading13Name reading13Regex reading14Name reading14Regex reading15Name reading15Regex reading16Name reading16Regex reading17Name reading17Regex reading18Name reading18Regex reading19Name reading19Regex reading20Name reading20Regex reading21Name reading21Regex reading22Name reading22Regex reading23Name reading23Regex reading24Name reading24Regex reading25Name reading25Regex reading26Name reading26Regex reading27Name reading27Regex reading28Name reading28Regex reading29Name reading29Regex reading30Name reading30Regex reading31Name reading31Regex reading32Name reading32Regex reading33Name reading33OMap reading33Regex reading34Name reading34OMap reading34Regex reading35Name reading35OMap reading35Regex reading36Name reading36OMap reading36Regex reading37Name reading37Regex reading38Name reading38Regex reading39Name reading39Regex reading40Name reading40Regex reading41Name reading41Regex reading42Name reading42Regex reading43Name reading43Regex reading44Name reading44Regex reading45Name reading45Regex reading46Name reading46Regex reading47Name reading47Regex reading48Name reading48Regex reading49Name reading49Regex reading50Name reading50Regex reading51Name reading51Regex reading52Name reading52Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value set01Data set01Hint set01Max set01Min set01Name set03Data set03Hint set03Max set03Min set03Name set03URL setURL
attr AC_c_WZ devStateIcon off.*:frost@grey:on on.*:frost@blue:off
attr AC_c_WZ enableControlSet 1
attr AC_c_WZ group AC
attr AC_c_WZ icon frost
attr AC_c_WZ reading10Name ret
attr AC_c_WZ reading10Regex ret=([^,]*)
attr AC_c_WZ reading11Name pow
attr AC_c_WZ reading11Regex pow=([^,]*)
attr AC_c_WZ reading12Name mode
attr AC_c_WZ reading12Regex mode=([^,]*)
attr AC_c_WZ reading13Name adv
attr AC_c_WZ reading13Regex adv=([^,]*)
attr AC_c_WZ reading14Name stemp
attr AC_c_WZ reading14Regex stemp=([^,]*)
attr AC_c_WZ reading15Name shum
attr AC_c_WZ reading15Regex shum=([^,]*)
attr AC_c_WZ reading16Name dt1
attr AC_c_WZ reading16Regex dt1=([^,]*)
attr AC_c_WZ reading17Name dt2
attr AC_c_WZ reading17Regex dt2=([^,]*)
attr AC_c_WZ reading18Name dt3
attr AC_c_WZ reading18Regex dt3=([^,]*)
attr AC_c_WZ reading19Name dt4
attr AC_c_WZ reading19Regex dt4=([^,]*)
attr AC_c_WZ reading20Name dt5
attr AC_c_WZ reading20Regex dt5=([^,]*)
attr AC_c_WZ reading21Name dt7
attr AC_c_WZ reading21Regex dt7=([^,]*)
attr AC_c_WZ reading22Name dh1
attr AC_c_WZ reading22Regex dh1=([^,]*)
attr AC_c_WZ reading23Name dh2
attr AC_c_WZ reading23Regex dh2=([^,]*)
attr AC_c_WZ reading24Name dh3
attr AC_c_WZ reading24Regex dh3=([^,]*)
attr AC_c_WZ reading25Name dh4
attr AC_c_WZ reading25Regex dh4=([^,]*)
attr AC_c_WZ reading26Name dh5
attr AC_c_WZ reading26Regex dh5=([^,]*)
attr AC_c_WZ reading27Name dh7
attr AC_c_WZ reading27Regex dh7=([^,]*)
attr AC_c_WZ reading28Name dhh
attr AC_c_WZ reading28Regex dhh=([^,]*)
attr AC_c_WZ reading29Name b_mode
attr AC_c_WZ reading29Regex b_mode=([^,]*)
attr AC_c_WZ reading30Name b_stemp
attr AC_c_WZ reading30Regex b_stemp=([^,]*)
attr AC_c_WZ reading31Name b_shum
attr AC_c_WZ reading31Regex b_shum=([^,]*)
attr AC_c_WZ reading32Name alert
attr AC_c_WZ reading32Regex alert=([^,]*)
attr AC_c_WZ reading33Name f_rate
attr AC_c_WZ reading33Regex f_rate=([^,]*)
attr AC_c_WZ reading34Name f_dir
attr AC_c_WZ reading34Regex f_dir=([^,]*)
attr AC_c_WZ reading35Name b_f_rate
attr AC_c_WZ reading35OMap A:auto, B:silent, 3:very_low, 4:low, 5:medium, 6:high, 7:very_high
attr AC_c_WZ reading35Regex b_f_rate=([^,]*)
attr AC_c_WZ reading36Name b_f_dir
attr AC_c_WZ reading36OMap 0:stopped, 1:vertical, 2:horizontal, 3:vertical&horizontal
attr AC_c_WZ reading36Regex b_f_dir=([^,]*)
attr AC_c_WZ reading37Name dfr1
attr AC_c_WZ reading37Regex dfr1=([^,]*)
attr AC_c_WZ reading38Name dfr2
attr AC_c_WZ reading38Regex dfr2=([^,]*)
attr AC_c_WZ reading39Name dfr3
attr AC_c_WZ reading39Regex dfr3=([^,]*)
attr AC_c_WZ reading40Name dfr4
attr AC_c_WZ reading40Regex dfr4=([^,]*)
attr AC_c_WZ reading41Name dfr5
attr AC_c_WZ reading41Regex dfr5=([^,]*)
attr AC_c_WZ reading42Name dfr6
attr AC_c_WZ reading42Regex dfr6=([^,]*)
attr AC_c_WZ reading43Name dfr7
attr AC_c_WZ reading43Regex dfr7=([^,]*)
attr AC_c_WZ reading44Name dfrh
attr AC_c_WZ reading44Regex dfrh=([^,]*)
attr AC_c_WZ reading45Name dfd1
attr AC_c_WZ reading45Regex dfd1=([^,]*)
attr AC_c_WZ reading46Name dfd2
attr AC_c_WZ reading46Regex dfd2=([^,]*)
attr AC_c_WZ reading47Name dfd3
attr AC_c_WZ reading47Regex dfd3=([^,]*)
attr AC_c_WZ reading48Name dfd4
attr AC_c_WZ reading48Regex dfd4=([^,]*)
attr AC_c_WZ reading49Name dfd5
attr AC_c_WZ reading49Regex dfd5=([^,]*)
attr AC_c_WZ reading50Name dfd6
attr AC_c_WZ reading50Regex dfd6=([^,]*)
attr AC_c_WZ reading51Name dfd7
attr AC_c_WZ reading51Regex dfd7=([^,]*)
attr AC_c_WZ reading52Name dfdh
attr AC_c_WZ reading52Regex dfdh=([^,]*)
attr AC_c_WZ replacement01Mode expression
attr AC_c_WZ replacement01Regex {{([^}]+)}}
attr AC_c_WZ replacement01Value ReadingsVal($name, $1, "")
attr AC_c_WZ room Wohnzimmer
attr AC_c_WZ set01Data pow=$val&mode={{mode}}&stemp={{stemp}}&shum=0&f_rate={{f_rate}}&f_dir={{f_dir}}
attr AC_c_WZ set01Hint 0,1
attr AC_c_WZ set01Max 1
attr AC_c_WZ set01Min 0
attr AC_c_WZ set01Name power
attr AC_c_WZ set03Data pow={{pow}}&mode={{mode}}&stemp=$val&shum=0&f_rate={{f_rate}}&f_dir={{f_dir}}
attr AC_c_WZ set03Max 41
attr AC_c_WZ set03Min 10
attr AC_c_WZ set03Name stemp
attr AC_c_WZ setURL http://192.168.0.321/aircon/set_control_info?
attr AC_c_WZ stateFormat {(ReadingsVal($name,"pow","") == 1) ? ("on") : ("off") }
attr AC_c_WZ webCmd stemp
attr AC_c_WZ widgetOverride stemp:slider,10,1,41

define AC_on_CMD cmdalias set AC_c_WZ on AS set AC_c_WZ power 1;;sleep 0.25;;set AC_c_WZ reread
attr AC_on_CMD group AC_CMD
attr AC_on_CMD room Wohnzimmer
define AC_off_CMD cmdalias set AC_c_WZ off AS set AC_c_WZ power 0;;sleep 0.25;;set AC_c_WZ reread
attr AC_off_CMD group AC_CMD
attr AC_off_CMD room Wohnzimmer


mit den cmdalias Devices hab ich aus "set AC_c_WZ power 1" ein "set AC_c_WZ on" gemacht (und Daten/Status aktualisiert)

Wenn jemand Zeit und Lust hat, kann er/sie gerne die Konfiguration um das Setzen der Weiteren Parameter (Modus, Lüfter-Geschwindigkeit, Lamellenbewegung, etc.) ergänzen.

Weiß vielleicht jemand wie/ob man die Funktionen "CONFORT AIR", "INTELLIGENT EYE" und Hochleistungs-Betrieb über das REST-API steuern kann?
Ich hab noch nichts gefunden.

LG
Rainer

pejonp

Hallo gamauf,

Vielleicht könntest du deine programmierung als Lösung / codeschnipsel ins Wiki einstellen.
So findet man eine Lösung dann schneller.
Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

gamauf

Hallo!
Hat ein Bisschen gedauert bis ich die Zeit dazu gefunden habe, aber jetzt hab' ich's ins Wiki gestellt:
http://www.fhemwiki.de/wiki/HTTPMOD_Beispielkonfiguration_zur_Anbindung_einer_Daikin_Klimaanlage_mit_WLAN-Modul

al15

Hallo,

funktioniert super - hat jemand schon herausgefunden wie man den Hochleistungs-Betrieb steuern kann?

DANKE
lg
AL

scank

Hallo,

ich habe heute meinen Daikin Onlinecontroller installiert und mit der Daikin App lässt sich dieser auch steuern.
In fhem habe ich nun die hier genannte Lösung eingebaut. Die Readings werden empfangen aber das ein und ausschalten funktioniert nicht. Hat jemand vielleicht einen Tip für mich was falsch sein könnte?

gamauf

komisch! ich hab es (bis auf die Ip-Adresse des Daikin-Greätes) genau so konfiguriert, wie es hier beschrieben ist:
https://wiki.fhem.de/wiki/HTTPMOD_Beispielkonfiguration_zur_Anbindung_einer_Daikin_Klimaanlage_mit_WLAN-Modul
Vermutlich hast du hier etwas anders konfiguriert, aber ohne deine Konfig zu sehen ist's schwierig eine Tip zu geben was du falsch gemacht haben könntest!
Außer:IP-Adresse überall angepasst? (durchsuche deine Konfig nach "192.168.0.321")

scank

HAllo,

Habe nur rooms und IP aus dem Beispiel ersetzt. Die Readings werden alle gelesen. Aber befehle senden klappt nicht.
Wenn ich aber per notify aber z.b. Diesen Befehl "define Daikin_HZ_22GRAD_an notify Daikin_HZ_22GRAD:on { GetHttpFile("192.168.55.111:80", "/aircon/set_control_info?pow=1&mode=4&adv=&stemp=22&shum=0&f_rate=3&f_dir=3")}" absetzte reagiert der Daikin Controller schon.

hier meine Config.
#DAIKIN ONLINE

define AC_s_WZ HTTPMOD http://192.168.55.111/aircon/get_sensor_info 600
attr AC_s_WZ userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex
attr AC_s_WZ enableControlSet 1
attr AC_s_WZ group AC
attr AC_s_WZ icon frost
attr AC_s_WZ reading01Name ret
attr AC_s_WZ reading01Regex ret=([^,]*)
attr AC_s_WZ reading02Name htemp
attr AC_s_WZ reading02Regex htemp=([^,]*)
attr AC_s_WZ reading03Name hhum
attr AC_s_WZ reading03Regex hhum=([^,]*)
attr AC_s_WZ reading04Name otemp
attr AC_s_WZ reading04Regex otemp=([^,]*)
attr AC_s_WZ reading05Name err
attr AC_s_WZ reading05Regex err=([^,]*)
attr AC_s_WZ reading06Name cmpfreq
attr AC_s_WZ reading06Regex cmpfreq=([^,]*)
attr AC_s_WZ room DAIKIN_WLAN
attr AC_s_WZ stateFormat Innen: htemp °C Außen: otemp °C

define FileLog_AC_s_WZ FileLog ./log/AC_s_WZ-%Y-%m.log AC_s_WZ
attr FileLog_AC_s_WZ logtype temp4hum6:Temp/Hum,text
attr FileLog_AC_s_WZ room DAIKIN_WLAN
define SVG_AC_s_WZ SVG FileLog_AC_s_WZ:SVG_AC_s_WZ:CURRENT
attr SVG_AC_s_WZ label "Daikin WZ Min $data{min1}, Max $data{max1}, Last $data{currval1} , Daikin Dach Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr SVG_AC_s_WZ room Plots,Wetter,DAIKIN_WLAN

define AC_c_WZ HTTPMOD http://192.168.55.111/aircon/get_control_info 60
attr AC_c_WZ userattr reading10Name reading10Regex reading11Name reading11OMap reading11Regex reading12Name reading12OMap reading12Regex reading13Name reading13Regex reading14Name reading14Regex reading15Name reading15Regex reading16Name reading16Regex reading17Name reading17Regex reading18Name reading18Regex reading19Name reading19Regex reading20Name reading20Regex reading21Name reading21Regex reading22Name reading22Regex reading23Name reading23Regex reading24Name reading24Regex reading25Name reading25Regex reading26Name reading26Regex reading27Name reading27Regex reading28Name reading28Regex reading29Name reading29Regex reading30Name reading30Regex reading31Name reading31Regex reading32Name reading32Regex reading33Name reading33OMap reading33Regex reading34Name reading34OMap reading34Regex reading35Name reading35OMap reading35Regex reading36Name reading36OMap reading36Regex reading37Name reading37Regex reading38Name reading38Regex reading39Name reading39Regex reading40Name reading40Regex reading41Name reading41Regex reading42Name reading42Regex reading43Name reading43Regex reading44Name reading44Regex reading45Name reading45Regex reading46Name reading46Regex reading47Name reading47Regex reading48Name reading48Regex reading49Name reading49Regex reading50Name reading50Regex reading51Name reading51Regex reading52Name reading52Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value set01Data set01Hint set01Max set01Min set01Name set03Data set03Hint set03Max set03Min set03Name set03URL setURL
attr AC_c_WZ devStateIcon off.*:frost@grey:on on.*:frost@blue:off
attr AC_c_WZ enableControlSet 1
attr AC_c_WZ group AC
attr AC_c_WZ icon frost
attr AC_c_WZ reading10Name ret
attr AC_c_WZ reading10Regex ret=([^,]*)
attr AC_c_WZ reading11Name pow
attr AC_c_WZ reading11Regex pow=([^,]*)
attr AC_c_WZ reading12Name mode
attr AC_c_WZ reading12Regex mode=([^,]*)
attr AC_c_WZ reading13Name adv
attr AC_c_WZ reading13Regex adv=([^,]*)
attr AC_c_WZ reading14Name stemp
attr AC_c_WZ reading14Regex stemp=([^,]*)
attr AC_c_WZ reading15Name shum
attr AC_c_WZ reading15Regex shum=([^,]*)
attr AC_c_WZ reading16Name dt1
attr AC_c_WZ reading16Regex dt1=([^,]*)
attr AC_c_WZ reading17Name dt2
attr AC_c_WZ reading17Regex dt2=([^,]*)
attr AC_c_WZ reading18Name dt3
attr AC_c_WZ reading18Regex dt3=([^,]*)
attr AC_c_WZ reading19Name dt4
attr AC_c_WZ reading19Regex dt4=([^,]*)
attr AC_c_WZ reading20Name dt5
attr AC_c_WZ reading20Regex dt5=([^,]*)
attr AC_c_WZ reading21Name dt7
attr AC_c_WZ reading21Regex dt7=([^,]*)
attr AC_c_WZ reading22Name dh1
attr AC_c_WZ reading22Regex dh1=([^,]*)
attr AC_c_WZ reading23Name dh2
attr AC_c_WZ reading23Regex dh2=([^,]*)
attr AC_c_WZ reading24Name dh3
attr AC_c_WZ reading24Regex dh3=([^,]*)
attr AC_c_WZ reading25Name dh4
attr AC_c_WZ reading25Regex dh4=([^,]*)
attr AC_c_WZ reading26Name dh5
attr AC_c_WZ reading26Regex dh5=([^,]*)
attr AC_c_WZ reading27Name dh7
attr AC_c_WZ reading27Regex dh7=([^,]*)
attr AC_c_WZ reading28Name dhh
attr AC_c_WZ reading28Regex dhh=([^,]*)
attr AC_c_WZ reading29Name b_mode
attr AC_c_WZ reading29Regex b_mode=([^,]*)
attr AC_c_WZ reading30Name b_stemp
attr AC_c_WZ reading30Regex b_stemp=([^,]*)
attr AC_c_WZ reading31Name b_shum
attr AC_c_WZ reading31Regex b_shum=([^,]*)
attr AC_c_WZ reading32Name alert
attr AC_c_WZ reading32Regex alert=([^,]*)
attr AC_c_WZ reading33Name f_rate
attr AC_c_WZ reading33Regex f_rate=([^,]*)
attr AC_c_WZ reading34Name f_dir
attr AC_c_WZ reading34Regex f_dir=([^,]*)
attr AC_c_WZ reading35Name b_f_rate
attr AC_c_WZ reading35OMap A:auto, B:silent, 3:very_low, 4:low, 5:medium, 6:high, 7:very_high
attr AC_c_WZ reading35Regex b_f_rate=([^,]*)
attr AC_c_WZ reading36Name b_f_dir
attr AC_c_WZ reading36OMap 0:stopped, 1:vertical, 2:horizontal, 3:vertical&horizontal
attr AC_c_WZ reading36Regex b_f_dir=([^,]*)
attr AC_c_WZ reading37Name dfr1
attr AC_c_WZ reading37Regex dfr1=([^,]*)
attr AC_c_WZ reading38Name dfr2
attr AC_c_WZ reading38Regex dfr2=([^,]*)
attr AC_c_WZ reading39Name dfr3
attr AC_c_WZ reading39Regex dfr3=([^,]*)
attr AC_c_WZ reading40Name dfr4
attr AC_c_WZ reading40Regex dfr4=([^,]*)
attr AC_c_WZ reading41Name dfr5
attr AC_c_WZ reading41Regex dfr5=([^,]*)
attr AC_c_WZ reading42Name dfr6
attr AC_c_WZ reading42Regex dfr6=([^,]*)
attr AC_c_WZ reading43Name dfr7
attr AC_c_WZ reading43Regex dfr7=([^,]*)
attr AC_c_WZ reading44Name dfrh
attr AC_c_WZ reading44Regex dfrh=([^,]*)
attr AC_c_WZ reading45Name dfd1
attr AC_c_WZ reading45Regex dfd1=([^,]*)
attr AC_c_WZ reading46Name dfd2
attr AC_c_WZ reading46Regex dfd2=([^,]*)
attr AC_c_WZ reading47Name dfd3
attr AC_c_WZ reading47Regex dfd3=([^,]*)
attr AC_c_WZ reading48Name dfd4
attr AC_c_WZ reading48Regex dfd4=([^,]*)
attr AC_c_WZ reading49Name dfd5
attr AC_c_WZ reading49Regex dfd5=([^,]*)
attr AC_c_WZ reading50Name dfd6
attr AC_c_WZ reading50Regex dfd6=([^,]*)
attr AC_c_WZ reading51Name dfd7
attr AC_c_WZ reading51Regex dfd7=([^,]*)
attr AC_c_WZ reading52Name dfdh
attr AC_c_WZ reading52Regex dfdh=([^,]*)
attr AC_c_WZ replacement01Mode expression
attr AC_c_WZ replacement01Regex {{([^}]+)}}
attr AC_c_WZ replacement01Value ReadingsVal($name, $1, "")
attr AC_c_WZ room DAIKIN_WLAN
attr AC_c_WZ set01Data pow=$val&mode={{mode}}&stemp={{stemp}}&shum=0&f_rate={{f_rate}}&f_dir={{f_dir}}
attr AC_c_WZ set01Hint 0,1
attr AC_c_WZ set01Max 1
attr AC_c_WZ set01Min 0
attr AC_c_WZ set01Name power
attr AC_c_WZ set03Data pow={{pow}}&mode={{mode}}&stemp=$val&shum=0&f_rate={{f_rate}}&f_dir={{f_dir}}
attr AC_c_WZ set03Max 41
attr AC_c_WZ set03Min 10
attr AC_c_WZ set03Name stemp
attr AC_c_WZ setURL http://192.168.55.111/aircon/set_control_info?
attr AC_c_WZ stateFormat {(ReadingsVal($name,"pow","") == 1) ? ("on") : ("off") }
attr AC_c_WZ webCmd stemp
attr AC_c_WZ widgetOverride stemp:slider,10,1,41

define AC_on_CMD cmdalias set AC_c_WZ on AS set AC_c_WZ power 1;;sleep 0.25;;set AC_c_WZ reread;;sleep 30;;set AC_s_WZ reread
attr AC_on_CMD group AC_CMD
attr AC_on_CMD room DAIKIN_WLAN

define AC_off_CMD cmdalias set AC_c_WZ off AS set AC_c_WZ power 0;;sleep 0.25;;set AC_c_WZ reread
attr AC_off_CMD group AC_CMD
attr AC_off_CMD room DAIKIN_WLAN

gamauf

Funktioniert
set AC_c_WZ power 1
bzw.
set AC_c_WZ power 0
?

scank


hoppel118

Hallo Leute,

bin auch gerade am Überlegen mir eine Klimaanlage zu kaufen. Es wäre schön, wenn ihr euch in meinen Thread einbringen könntet, dieser hier hat ja schon den Status gelöst:

https://forum.fhem.de/index.php/topic,97682.0.html

Seid ihr zufrieden mit der Daikin und der Anbindung an FHEM? Funktioniert das alles noch?

Danke euch und viele Grüße Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

HenrikAachen

Hi,

Ich habe das gleiche Problem.
Modul genutzt aber er kann nur lesen, das Senden von Befehlen geht nicht.
Hat dies jemand lösen können?