FHEM Forum

FHEM - Entwicklung => Wunschliste => Thema gestartet von: gamauf am 26 November 2015, 17:07:15

Titel: [GELÖST] Daikin Klimaanlage
Beitrag von: gamauf am 26 November 2015, 17:07:15
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 (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
Titel: Antw:Daikin Klimaanlage
Beitrag von: Alex76 am 08 Mai 2016, 06:50:16
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

Titel: Antw:Daikin Klimaanlage
Beitrag von: mmattern am 31 Mai 2016, 11:14:19
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
Titel: Antw:Daikin Klimaanlage
Beitrag von: pejonp am 15 Juni 2016, 17:58:51
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
Titel: Antw:Daikin Klimaanlage
Beitrag von: gamauf am 15 Juni 2016, 18:03:54
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
Titel: Antw:Daikin Klimaanlage
Beitrag von: pejonp am 22 Juli 2016, 10:43:02
Hallo gamauf,

Vielleicht könntest du deine programmierung als Lösung / codeschnipsel ins Wiki einstellen.
So findet man eine Lösung dann schneller.
Pejonp
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: gamauf am 24 August 2016, 18:24:13
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 (http://www.fhemwiki.de/wiki/HTTPMOD_Beispielkonfiguration_zur_Anbindung_einer_Daikin_Klimaanlage_mit_WLAN-Modul)
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: al15 am 20 April 2018, 20:56:31
Hallo,

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

DANKE
lg
AL
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: scank am 21 Dezember 2018, 15:42:20
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?
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: gamauf am 23 Dezember 2018, 14:02:47
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 (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")
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: scank am 08 Januar 2019, 12:28:36
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
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: gamauf am 09 Januar 2019, 20:51:09
Funktioniert
set AC_c_WZ power 1
bzw.
set AC_c_WZ power 0
?
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: scank am 13 Januar 2019, 09:48:32
Hallo,

nein  reagiert nicht.

Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: hoppel118 am 21 Februar 2019, 00:15:53
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
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: HenrikAachen am 11 Mai 2019, 14:02:39
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?
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: rubinho am 28 Mai 2019, 08:33:23
Servus Leute,

nachdem ich meine Daikin am Wochenende zum ersten Mal für dieses Jahr wieder in Betrieb nahm, funktionierte die Steuerung auch nicht mehr!

Im vorigen Jahr lief noch alles Problemlos.

Um herauszufinden was das Problem ist, musste ich einen Tcpdump machen.

Folgendes habe ich dabei gerausgefunden...

Wenn man unter Fhem die Klimaanlage einschalten will, geht das ja über den Power Befehl.
Dieser ist in den Attributen folgendermaßen definiert...

set01Data pow=$val&mode={{mode}}&stemp={{stemp}}&shum=0&f_rate={{f_rate}}&f_dir={{f_dir}}

Mittels Tcpdump konnte ich nun herausfinden, dass die Variablen {{mode}}, {{stemp}}, {{f_rate}} und {{f_dir}} nicht ausgewertet werden und genau wie sie hier stehen übermittelt werden.
Damit kann die Rest-Api von Daikin aber nichts anfangen und verwirft den Befehl.

Ich vermute irgendein Update in den Letzten Monaten hat die Syntax bei HTTPmod geändert.

Als Workaround kann man feste Werte eintragen, dann geht die Anlage wenigstens an, wenn auch immer mit der gleichen Einstellung.

Um das Problem dauerhaft zu lösen, müsste ein HTTPMod Spezi mal draufschauen und die Syntax anpassen.

Gruß
Rubinho
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: roelb am 28 Mai 2019, 18:31:22
There are two issues, not just the one you are mentioning.

Issue 1: the use of double curly braces ({{varname}})  breaks because unescaped usage of a left curly brace in a perl regex has been deprecated since 5.22 and support has been discontinued as of 5.26. This is easily fixed by either escaping the left braces or by using a different marker:

attr <name> replacement01Regex #([^#]+)#
attr <name> set01Data pow=$val&mode=#mode#&stemp=#stemp#&shum=0&f_rate=#f_rate#&f_dir=#f_dir#


or

attr <name> replacement01Regex \{\{([^}]+)}}
attr <name> set01Data pow=$val&mode={{mode}}&stemp={{stemp}}&shum=0&f_rate={{f_rate}}&f_dir={{f_dir}}



See: https://metacpan.org/pod/release/RJBS/perl-5.22.0/pod/perldelta.pod#A-literal-%22{%22-should-now-be-escaped-in-a-pattern (https://metacpan.org/pod/release/RJBS/perl-5.22.0/pod/perldelta.pod#A-literal-%22%7B%22-should-now-be-escaped-in-a-pattern)

Issue 2:

HTTPMOD does a POST request, sending the parameters as application/x-www-form-urlencoded. My Daikin does not accept that, it will only respond correctly to a HTTP GET request. A transcript:

POST /aircon/set_control_info?HTTP/1.0
Host: 10.0.1.105
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 47
Content-Type: application/x-www-form-urlencoded

pow=0&mode=3&stemp=18.0&shum=0&f_rate=B&f_dir=3

-- response

HTTP/1.0 200 OK
Content-Length: 12
Content-Type: text/plain

ret=PARAM NG


Looking in the code, this is caused by logic in the FHEM/HttpUtils.pm library. On lines 536 and 537:

my $method = $hash->{method};
$method = ($data ? "POST" : "GET") if( !$method );


But even changing this default won't matter, as everything passed in $data will only get sent in a POST request, never in a get (see lines 559-563). The optimal solution would be to modify HttpUtils.pm to automatically add the data supplied in $data as URL encoded GET parameters if the request type is GET, and modify HTTPMOD, adding a parameter to specify wether POST or GET should be used.

But there is a simpler solution. Looking through the code for HTTPMOD, we can use a seperate URL for each setXX action, instead of using the generic setURL attribute in combination with setXXData attributes. Instead, we simply specify setXXURL for each action and forget the setXXData. So, instead of using:


attr <name> set01Data pow=$val&mode=#mode#&stemp=#stemp#&shum=0&f_rate=#f_rate#&f_dir=#f_dir#
attr <name> setURL http://<IP>/aircon/set_control_info?


We need to use:



deleteattr <name> setURL
deleteattr <name> set01Data
attr <name> set01URL http://<IP>/aircon/set_control_info?pow=$val&mode=#mode#&stemp=#stemp#&shum=0&f_rate=#f_rate#&f_dir=#f_dir#


Finally, looking through the (pretty messy) code, I did find a bug in HttpUtils, which will always send the Content-Length and Content-Type: application/x-www-form-urlencoded headers, even if there is no data. A check is done if $data is defined, but not if it actually contains data (an empty string is also a defined variable in Perl)

line 559 of HttpUtils.pm is:


if(defined($data)) {


changing this to:


if(defined($data) && length($data)) {


will solve this issue and yield correct behaviour when $data is defined, but empty.
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: Taslow am 09 Juni 2019, 08:26:07
Wenn ich das richtig nachvollzogen habe, wurden die Anregungen von roelb sowohl in der Beispielkonfiguration als auch in der HttpUtils.pm aufgenommen.

Irgendwie klappt es aber bei mir dennoch nicht. Werte der Klima werden erhoben und angezeigt, einschalten lässt sie sich aber nach wie vor nicht  :-\
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: hugomckinley am 11 Juli 2019, 23:18:53
Ich habe bereits herausgefunden, dass es anscheinend daran liegt, dass die B-Typen (BRP069B41) anders angesteuert werden müssen als die A-Typen(BRP069A41)
siehe: https://github.com/Apollon77/daikin-controller/issues/7 (https://github.com/Apollon77/daikin-controller/issues/7)

Lösung habe ich noch keine.

Gruß Hugo

Nachtrag: Lösung fast fertig. Folgt in den nächsten Tagen als Script welches die AC automatisch anlegt.
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: Taslow am 23 Juli 2019, 07:27:40
Zitat von: hugomckinley am 11 Juli 2019, 23:18:53
Nachtrag: Lösung fast fertig. Folgt in den nächsten Tagen als Script welches die AC automatisch anlegt.

Hallo Hugo,
konntest Du die Lösung schon fertigstellen? Wäre super, wenn die Daikin sich endlich auch bei mir steuern lassen würde :)

Gruß
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: smoudo am 24 Juli 2019, 21:28:16
Moin,

ich wollte die Klimasteuerung mal um die Lüfterstufeneinstellung erweitern. soweit so gut. Allerdings wird die Stufe A=Auto und B=silent nicht gesetzt. Von 3-7 funktioniert das ganze schonmal. Fehler: set value A is not numeric. Irgendwie stehe ich da gerade auf dem Schlauch. Vielleicht hat jemand eine idee.

Grüße

Matze

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


attr c_Klimaanlage reading35OMap A:auto, B:silent, 3:very_low, 4:low, 5:medium, 6:high, 7:very_high


A und B sind nicht numeric,  0 und 1 sollten es eher sein !

Pejonp
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: smoudo am 25 Juli 2019, 23:32:23
Und wie löse ich A und B in 0 und 1 auf.
Die api erwartet doch A B ?!

Grüße

Matze
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: pejonp am 26 Juli 2019, 07:14:40
Vielleicht in Hex

0xa  oder 0xb

Pejonp
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: smoudo am 26 Juli 2019, 12:01:18
Funktioniert leider nicht. Selbe Fehlermeldung

Grüße

Matze
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: pejonp am 26 Juli 2019, 13:44:48
Wie sieht den der vollständige String (url) aus, den du zur Klima sendest.

Pejonp
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: smoudo am 26 Juli 2019, 14:06:23
http://192.168.1.210/aircon/set_control_info?pow=1&mode=3&stemp=22&shum=0&f_rate=B&f_dir=3

Das bedeutet:

Pow für ein/ausschalten wert 1
Mode=3 kühlen
Stemp=22 für Sollwert 22gradC
Shum= Luftfeuchtigkeit
f_rate= lüfterstufe
f_dir= lamellenrichtung vertikal+horizontal

Bei Lüfterstufe gibt es A,B,3,4,5,6,7

3-7 funktioniert mit dem Code

Grüße

Matze
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: pejonp am 26 Juli 2019, 14:33:50
@smoudo

schau mal hier (https://wiki.fhem.de/wiki/ModbusAttr#Handling_Data_Types) ich würde sagen das mapping geht nur auf Zahlen. Du müstes dir jetzt eine Funktion überlegen die das abfängt. Ich frage mal im Modbus-Forum nach (https://forum.fhem.de/index.php/topic,75638.msg961473.html#msg961473).

pejonp
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: erwin am 26 Juli 2019, 18:25:10
Hi All,
bei mir funktioniert das setzen der f_rate:
setxxIMap A:auto, B:silent, 3:very_low, 4:low, 5:medium, 6:high, 7:very_high
damit hab ich auch ein pulldown mit auto,silent,.....
l.g. erwin
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: smoudo am 27 Juli 2019, 08:29:12
Könntest du dein komplettes define mal posten. Am Mode A und B bin ich am verzweifeln. Wenn ich den Code direkt im Browser schicke läufts, wenn ich über fhem auflösen lasse bekomme ich den Fehler.

Grüße

Matze
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: erwin am 27 Juli 2019, 09:29:05
Hi Matze!

bitte sehr:
   set04IMap  A:auto, B:silent, 3:very_low, 4:low, 5:medium, 6:high, 7:very_high
   set04Name  f_rate
   set04URL   http://192.168.10.45/aircon/set_control_info?pow={{pow}}&mode={{mode}}&stemp={{stemp}}&shum=0&f_rate=$val&f_dir={{f_dir}}

Alles weitere ident zum Beispiel im Wiki. - ausser daß ich alle seturl's mit get machen muß, weil meine Daikin kein put akzeptiert!
l.g. erwin
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: StefanStrobel am 27 Juli 2019, 21:53:20
Hallo,

Hast Du es schon mal mit textArg versucht?

Aus der Commandref zu HTTPMOD:
Zitat
If a parameter to a set command is not numeric but should be passed on to the device as text, then you can specify the attribute setTextArg. For example:
attr PM set01TextArg

Gruß
    Stefan
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: hugomckinley am 28 Juli 2019, 22:18:13
Zitat von: Taslow am 23 Juli 2019, 07:27:40
Hallo Hugo,
konntest Du die Lösung schon fertigstellen? Wäre super, wenn die Daikin sich endlich auch bei mir steuern lassen würde :)

Gruß

Die erste halbwegs funktionsfähige Version meiner Lösung gibt es hier.

https://forum.fhem.de/index.php/topic,102613.0.html (https://forum.fhem.de/index.php/topic,102613.0.html)

Es wird hier ein HTTPMOD-Objekt erzeugt, mit dem man die Anlage steuern kann.
Für meine Regelung würde ich die Hand noch nicht ins Feuer legen, aber sie läuft seit ein paar Stunden im Echtbetrieb bei mir.

Viel Erfolg.

Grüße
Hugo
Titel: Antw:[GELÖST] Daikin Klimaanlage
Beitrag von: roelb am 26 März 2020, 23:02:06
FYI: I've created a new module to control a Daikin aircon, that solves all of the issues with the HTTPMOD generic module. I've also created a matching TabletUI template and some icons for full control. I need two positive reviews before the module is allowed into the FHEM base, so if any of you guys want to try, the code is here:

https://forum.fhem.de/index.php/topic,109562.msg1035490.html (https://forum.fhem.de/index.php/topic,109562.msg1035490.html)