Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Daikin per Alexa steuern

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Daikin per Alexa steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • 7
      7thguest last edited by

      Hallo zusammen,

      ich wende mich an euch, weil ich von (Java-)Skript absolut keinen Plan habe und hoffe, dass mein Anliegen für die Profis unter euch nur eine Kleinigkeit ist...

      Folgendes:
      Ich besitze eine Daikin-Klimaanlage, die per http-Befehl ausgelesen und gesteuert werden kann.

      Das Auslesen funktioniert so:

      http://ip_der_Anlage/aircon/get_control_info
      

      Als Rückgabe kommt dann zum Beispiel:

      ret=OK,pow=1,mode=3,adv=,stemp=22.0,shum=0,dt1=25.0,dt2=M,dt3=22.0,dt4=25.0,dt5=25.0,dt7=25.0,dh1=AUTO,dh2=50,dh3=0,dh4=0,dh5=0,dh7=AUTO,dhh=50,b_mode=3,b_stemp=22.0,b_shum=0,alert=255,f_rate=A,f_dir=3,b_f_rate=A,b_f_dir=0,dfr1=5,dfr2=5,dfr3=A,dfr4=5,dfr5=5,dfr6=5,dfr7=5,dfrh=5,dfd1=0,dfd2=0,dfd3=0,dfd4=0,dfd5=0,dfd6=0,dfd7=0,dfdh=0,dmnd_run=0,en_demand=0
      
      

      Ich habe mir jetzt für jedes Gerät, das ich steuern möchte, auf meiner RaspberryMatic jeweils ein Programm zum Einschalten und eines zum Ausschalten geschrieben.
      Ich frage dort jeweils den aktuellen Status ab, ersetze dann den Parameter "pow" (Power) jeweils durch "1" oder "0" und gebe das dann wieder als Befehl an die Anlage zurück. Somit schalte ich die Anlage so ein/aus, wie der letzte Betriebszustand war. Das funktioniert auch sehr gut.

      Der Befehl zum Schalten sieht dann so aus:

      http://IP_der_Anlage/aircon/set_control_info?ret=OK&pow=1&mode=3&adv=&stemp=22.0&shum=0&dt1=25.0&dt2=M&dt3=22.0&dt4=25.0&dt5=25.0&dt7=25.0&dh1=AUTO&dh2=50&dh3=0&dh4=0&dh5=0&dh7=AUTO&dhh=50&b_mode=3&b_stemp=22.0&b_shum=0&alert=255&f_rate=A&f_dir=3&b_f_rate=A&b_f_dir=0&dfr1=5&dfr2=5&dfr3=A&dfr4=5&dfr5=5&dfr6=5&dfr7=5&dfrh=5&dfd1=0&dfd2=0&dfd3=0&dfd4=0&dfd5=0&dfd6=0&dfd7=0&dfdh=0&dmnd_run=0&en_demand=0
      
      

      Dann habe ich im ioBroker SmartHome-Geräte angelegt, die quasi nur diese Programme ansprechen (Bsp: KlimaZimmer1an führt das Programm zum Anschalten der Klimaanlage aus).
      Das heißt, für jedes Klimagerät habe ich 2 "SmartHome-Geräte" (an und aus).

      Zum Schluss habe ich bei Alexa eine Szene angelegt...
      Wenn Sprachbefehl "Alexa, Klimaanlage Zimmer 1 an" dann aktiviere Programm...

      So weit - so gut...

      Die Experten unter euch werden hier sicher schon die Hände über dem Kopf zusammen schlagen - "soooo umständlich"... (aber anders wusste ich mir nicht zu helfen)

      Nun kann ich aber damit keine Temperatur übermitteln - "Alexa, schalte Klimaanlage Zimmer1 auf 21 Grad"

      Auch kann ich die Szenen ja nicht bestimmten Räumen zuordnen.
      Bei Licht zum Beispiel funktioniert es ja so:
      Wenn ich in dem jeweils zugeordneten Raum bin, dann reicht "Alexa, Licht an".
      Bin ich nicht in dem Raum, dann eben "Alexa, schalte das Licht in xxx an".
      (Geht das mit der Klimaanlage auch???)

      Kann man das Ganze irgendwie mit ioBroker umsetzen???

      Nur zur Info... - das ist das Programm, welches auf der RaspberryMatic läuft:

      ! Daikin bei Xxx einschalten (IP: 192.168.178.xx)
      
      var url_abfrage  = "http://192.168.178.xx/aircon/get_control_info"; ! URL zur Abfrage des letzten Status
      var url_schalten = "http://192.168.178.xx/aircon/set_control_info?"; ! URL zum Einschalten mit letztem Status
      
      ! letzten Status auslesen
      dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url_abfrage#"'");
      dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
      string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
      WriteLine("letzter Status: \n" + srueck);
      WriteLine("----------- \n");
      
      ! Ausgelesene Daten umwandeln
      string neu = srueck.Replace("pow=0", "pow=1");
      neu = neu.Replace(",", "&");
      WriteLine("Befehl zum Einschalten: \n" + neu);
      WriteLine("----------- \n ");
      
      ! URL zum Einschalten erstellen
      url_schalten = url_schalten + neu;
      WriteLine("URL zum Einschalten: \n" + url_schalten);
      WriteLine("----------- \n ");
      
      ! Einschalten der Anlage
      if ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:2.CMD_EXEC")) { 
      dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_EXEC").State("wget -q -O - '"#url_schalten#"'");
      WriteLine("Anlage eingeschaltet");}else{WriteLine("CUxD Datenpunkt nicht vorhanden");}
      

      Danke im Voraus an Euch

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      527
      Online

      31.8k
      Users

      80.0k
      Topics

      1.3m
      Posts

      1
      1
      968
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo