+ Antworten
Seite 3 von 4 ErsteErste 1 2 3 4 LetzteLetzte
Ergebnis 21 bis 30 von 31
  1. #21
    Registriert seit
    Jan 2017
    Beiträge
    41

    @Lutz
    Leider erst sehr späte Antwort. Ich habe die beiden Sachen mal verglichen. Es ändert sich Data3 (adv=13 wenn er eingeschaltet ist und bei aus ist adv=) . Nur wie muss das Script aussehen? Welche Variable muss ich auswählen?Gruss Syrko

  2. #22
    Registriert seit
    Nov 2011
    Beiträge
    382

    Hi zusammen,

    ich wollte mal eine Fingerübung ausprobieren, für ein richtiges Modul reicht es zwar nicht, aber es könnte ja als Grundlage herhalten

    Erstellt eine Dummy Instanz pro Klima-Innengerät und darin ein Script. Im Anschluss fügt ihr folgendes ein:
    PHP-Code:
    <?php

    // Hier die Ip der Anlage eintragen
    $IP '192.168.0.35';

    // Ab hier Finger weg.

    $SetFunctionFileContent '<?php 
    $ObjektInfo = IPS_GetObject(IPS_GetParent($_IPS[\'SELF\']));
    $ObjectID=$ObjektInfo[\'ObjectID\'];

    $IP = GetValue(IPS_GetObjectIDByIdent($ObjectID."_IP", $ObjectID));

    function _DAIKIN_AC_READ_DATA_TO_ARRAY($IP) 
    {
        $result = file_get_contents("http://$IP/aircon/get_control_info");
        parse_str(str_replace(",","&",$result), $OUTPUT);
        return $OUTPUT;
    }

    function _DAIKIN_AC_CREATE_VARIABLE_PROFILE($DATAPOINT_TYPE)
    {
                    switch($DATAPOINT_TYPE)
                    {
                        Case "pow": // Bool (0)
                            IPS_CreateVariableProfile("_DAIKIN_AC_$DATAPOINT_TYPE", 0);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 1, "An", "", 0x00FF00);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 0, "Aus", "", 0xFF0000);
                        break;
                        case "f_rate": // Integer (1)
                            IPS_CreateVariableProfile("_DAIKIN_AC_$DATAPOINT_TYPE", 1);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 1, "Auto", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 2, "Geräuscharm", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 3, "Stufe 1", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 4, "Stufe 2", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 5, "Stufe 3", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 6, "Stufe 4", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 7, "Stufe 5", "", 0xFFFFFF);
                        break;
                        case "f_dir": // Integer (1)
                            IPS_CreateVariableProfile("_DAIKIN_AC_$DATAPOINT_TYPE", 1);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 0, "keine Schwingung", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 1, "vertikales schwingen", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 2, "horizontales schwingen", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 3, "vertikales und horizontales schwingen", "", 0xFFFFFF);
                        break;
                         case "mode": // Integer (1)
                            IPS_CreateVariableProfile("_DAIKIN_AC_$DATAPOINT_TYPE", 1);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 0, "Auto", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 1, "Auto", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 2, "Entfeuchten", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 3, "Kühlen", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 4, "Heizen", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 5, "reserviert", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 6, "Ventilator", "", 0xFFFFFF);
                            IPS_SetVariableProfileAssociation("_DAIKIN_AC_$DATAPOINT_TYPE", 7, "Auto", "", 0xFFFFFF);
                        break;
                        case "stemp": // Float (2)
                            IPS_CreateVariableProfile("_DAIKIN_AC_$DATAPOINT_TYPE", 2);
                            IPS_SetVariableProfileText("_DAIKIN_AC_$DATAPOINT_TYPE", "", "°C");
                            IPS_SetVariableProfileValues("_DAIKIN_AC_$DATAPOINT_TYPE", 18, 31, 0.5);
                            IPS_SetVariableProfileDigits("_DAIKIN_AC_$DATAPOINT_TYPE",1); 
                        break;
                        case "shum": // Float (2)
                            IPS_CreateVariableProfile("_DAIKIN_AC_$DATAPOINT_TYPE", 2);
                            IPS_SetVariableProfileText("_DAIKIN_AC_$DATAPOINT_TYPE", "", "%");
                        break;
                    }
                    


    // Profiltypen festlegen.
    function _DAIKIN_AC_SET_PROFILETYPE($KEY)
    {
        switch($KEY)
                {    case \'pow\'; $PROFILE_TYPE = 0; break;
                    case \'mode\'; $PROFILE_TYPE = 1; break;
                    case \'stemp\'; $PROFILE_TYPE = 2; break;
                    case \'shum\'; $PROFILE_TYPE = 2; break;
                    case \'f_rate\'; $PROFILE_TYPE = 1; break;
                    case \'f_dir\'; $PROFILE_TYPE = 1; break;
                }
                return $PROFILE_TYPE;
    }

    // Variablennamen festlegen.
    function _DAIKIN_AC_SET_VARNAME($KEY)
    {
        switch($KEY)
                {    case \'pow\'; $VARIABLE_NAME = "Stromversorgung"; break;
                    case \'mode\'; $VARIABLE_NAME = "Modus"; break;
                    case \'stemp\'; $VARIABLE_NAME = "Temperatur"; break;
                    case \'shum\'; $VARIABLE_NAME = "Luftfeuchtigkeit"; break;
                    case \'f_rate\'; $VARIABLE_NAME = "Luftdurchsatz"; break;
                    case \'f_dir\'; $VARIABLE_NAME = "Luftstromrichtung"; break;
                }
                return $VARIABLE_NAME;
    }

    function _DAIKIN_AC_CREATE_VARIABLE($ID, $IDENT, $KEY)
    {
         $PARENTID = IPS_GetParent($ID);
         $VARID = @IPS_GetObjectIDByIdent($IDENT, $PARENTID);
         $ScriptID = @IPS_GetObjectIDByIdent($PARENTID."_SetScript", $PARENTID);

         if($VARID === false)
         {
             $PROFILE_TYPE = _DAIKIN_AC_SET_PROFILETYPE($KEY);
             $DPNAME = _DAIKIN_AC_SET_VARNAME($KEY);
             $VARID = IPS_CreateVariable($PROFILE_TYPE);
             IPS_SetParent($VARID, $PARENTID);
             IPS_SetName($VARID, $DPNAME);
             IPS_SetIdent($VARID, $IDENT);
             IPS_SetVariableCustomProfile($VARID, "_DAIKIN_AC_$KEY");
             IPS_SetVariableCustomAction($VARID, $ScriptID);
         }
         return $VARID;
    }  

    function _DAIKIN_AC_SEND_DATA($DATA,$IP)
    {
        $options = array( 
                                \'http\' => array( 
                                    \'header\'  => "Content-type: application/x-www-form-urlencoded\r\n", 
                                    \'method\'  => \'GET\', 
                                    \'content\' => http_build_query($DATA) 
                                ) 
                            ); 
                            $content = http_build_query($DATA);
                            $context = stream_context_create($options); 
                            $result  = file_get_contents("http://$IP/aircon/set_control_info?$content", false, $context); 
                           // var_dump($result);
    }'
    ;



    $SetVarScriptfile '<?php

    $ObjektInfo = IPS_GetObject(IPS_GetParent($_IPS[\'SELF\']));
    $ObjectID=$ObjektInfo[\'ObjectID\'];

    $IP = GetValue(IPS_GetObjectIDByIdent($ObjectID."_IP", $ObjectID));

    $inc = IPS_GetScript(IPS_GetObjectIDByIdent($ObjectID."_Functions", $ObjectID));
    include($inc[\'ScriptFile\']);

    if ($_IPS[\'SENDER\'] == "WebFront")
    {
        $VARID = IPS_GetObject($_IPS[\'VARIABLE\']);
        //print_r($VARID);
        switch($VARID[\'ObjectIdent\'])
                    {    
                        case $VARID[\'ParentID\']."_pow";
                                SetValueBoolean($_IPS[\'VARIABLE\'], $_IPS[\'VALUE\']);
                        break;
                        case $VARID[\'ParentID\']."_mode";
                                SetValue($_IPS[\'VARIABLE\'], $_IPS[\'VALUE\']);
                        break;
                        case $VARID[\'ParentID\']."_stemp"; 
                                SetValue($_IPS[\'VARIABLE\'], $_IPS[\'VALUE\']);
                        break;
                        case $VARID[\'ParentID\']."_shum";
                                SetValue($_IPS[\'VARIABLE\'], $_IPS[\'VALUE\']);
                        break;
                        case $VARID[\'ParentID\']."_f_rate";
                                SetValue($_IPS[\'VARIABLE\'], $_IPS[\'VALUE\']);
                        break;
                        case $VARID[\'ParentID\']."_f_dir";
                                SetValue($_IPS[\'VARIABLE\'], $_IPS[\'VALUE\']);
                        break;
                        case $VARID[\'ParentID\']."_send";

                                 switch($_IPS[\'VALUE\'])
                                    {
                                        case true;
                                                SetValueBoolean($_IPS[\'VARIABLE\'], true);
                                            
                                                $POW_ID = GetValue(IPS_GetObjectIDByIdent($VARID[\'ParentID\']."_pow",$VARID[\'ParentID\']));
                                                if($POW_ID == false){$POW_ID=0;};
                                                $MODE_ID = GetValue(IPS_GetObjectIDByIdent($VARID[\'ParentID\']."_mode",$VARID[\'ParentID\']));
                                                $STEMP_ID = GetValue(IPS_GetObjectIDByIdent($VARID[\'ParentID\']."_stemp",$VARID[\'ParentID\']));
                                                $SHUM_ID = GetValue(IPS_GetObjectIDByIdent($VARID[\'ParentID\']."_shum",$VARID[\'ParentID\']));
                                                $F_RATE_ID = GetValue(IPS_GetObjectIDByIdent($VARID[\'ParentID\']."_f_rate",$VARID[\'ParentID\']));
                                                if($F_RATE_ID = 1){$F_RATE_ID="A";}; 
                                                if($F_RATE_ID = 2){$F_RATE_ID="B";};
                                                $F_DIR_ID = GetValue(IPS_GetObjectIDByIdent($VARID[\'ParentID\']."_f_dir",$VARID[\'ParentID\']));

                                                $DATA = array(\'pow\' => strval($POW_ID), \'mode\' => strval($MODE_ID), \'stemp\' => strval($STEMP_ID), \'shum\' => \'0\', \'f_rate\' => strval($F_RATE_ID), \'f_dir\' => strval($F_DIR_ID));
                                                
                                                _DAIKIN_AC_SEND_DATA($DATA,$IP);
                                        break;
                                        case false;
                                                SetValueBoolean($_IPS[\'VARIABLE\'], false);
                                                $output = _DAIKIN_AC_READ_DATA_TO_ARRAY($IP);
                                                foreach($output as $key => $value){

                                                    switch($key)
                                                            {    case \'pow\'; 
                                                                case \'mode\';
                                                                case \'stemp\'; 
                                                                case \'shum\';
                                                                case \'f_rate\';
                                                                case \'f_dir\';
                                                                    $IPS_IDENT = $ObjektInfo[\'ObjectID\']."_".$key;

                                                                    if (! IPS_VariableProfileExists("_DAIKIN_AC_$key"))
                                                                        {
                                                                            echo "Erzeuge Variablenprofil _DAIKIN_AC_".$key."\n";
                                                                            _DAIKIN_AC_CREATE_VARIABLE_PROFILE($key);
                                                                        }
                                                                    if ($key == "f_rate"){
                                                                    switch($value){
                                                                                        case \'A\': 
                                                                                            $value = 1;
                                                                                        break;
                                                                                        case \'B\':
                                                                                            $value = 2;
                                                                                        break;
                                                                                }
                                                                        }
                                                                    SetValue(_DAIKIN_AC_CREATE_VARIABLE($_IPS[\'SELF\'], $IPS_IDENT, $key), $value);
                                                                break;
                                                            }
                                                    }
                                        break;
                                    }                 
                        break;
                    }
    }'
    ;

    //First run

    if ($_IPS['SENDER'] == "Execute")
    {

    echo 
    "Hole Daten ab und erstelle Variablen und Profile \n";

    $ObjektInfo IPS_GetObject(IPS_GetParent($_IPS['SELF']));
    $ObjectID=$ObjektInfo['ObjectID'];

    echo 
    "Setzte Ident für configscript \n";
    IPS_SetIdent($_IPS['SELF'], $ObjectID."_Config");

     if (! @
    IPS_GetObjectIDByIdent($ObjectID."_IP",$ObjectID))
        {
            echo 
    "erstelle Variable mit der IP Adresse\n";
            
    $VARIP IPS_CreateVariable(3);
             
    IPS_SetParent($VARIP$ObjectID);
             
    IPS_SetName($VARIP"IP Adresse");
             
    IPS_SetIdent($VARIP$ObjectID."_IP");
             
    SetValue($VARIP,$IP);
         }


        if (! @
    IPS_GetObjectIDByIdent($ObjectID."_SetScript",$ObjectID))
        {
            echo 
    "erstelle Scriptdateien\n";
            
    $ScriptID IPS_CreateScript(0);
            
    IPS_SetParent($ScriptID$ObjectID);
            
    IPS_SetName($ScriptID"Setze Variable");
            
    IPS_SetIdent($ScriptID$ObjectID."_SetScript");
            
    IPS_SetScriptContent($ScriptID$SetVarScriptfile);
         }

    echo 
    "erstelle functionsscript\n";
    if (! @
    IPS_GetObjectIDByIdent($ObjectID."_Functions",$ObjectID))
        {
            echo 
    "erstelle Scriptdateien\n";
            
    $FunctionID IPS_CreateScript(0);
            
    IPS_SetParent($FunctionID$ObjectID);
            
    IPS_SetName($FunctionID"functionen");
            
    IPS_SetIdent($FunctionID$ObjectID."_Functions");
            
    IPS_SetScriptContent($FunctionID$SetFunctionFileContent);
         }

    $inc IPS_GetScript(IPS_GetObjectIDByIdent($ObjectID."_Functions"$ObjectID));
    include(
    $inc['ScriptFile']);

    $output _DAIKIN_AC_READ_DATA_TO_ARRAY($IP);
    foreach(
    $output as $key => $value){

        switch(
    $key)
                {    case 
    'pow'
                    case 
    'mode';
                    case 
    'stemp'
                    case 
    'shum';
                    case 
    'f_rate';
                    case 
    'f_dir';
                        
    $IPS_IDENT $ObjektInfo['ObjectID']."_".$key;

                        if (! 
    IPS_VariableProfileExists("_DAIKIN_AC_$key"))
                            {
                                echo 
    "Erzeuge Variablenprofil _DAIKIN_AC_".$key."\n";
                                
    _DAIKIN_AC_CREATE_VARIABLE_PROFILE($key);
                            }
                        if (
    $key == "f_rate"){
                        switch(
    $value){
                                            case 
    'A'
                                                
    $value 1;
                                            break;
                                            case 
    'B':
                                                
    $value 2;
                                            break;
                                    }
                            }
                        echo 
    "erstelle/setze Variable ".$key." mit Ident ".$IPS_IDENT." auf Wert "$value."\n";
                        
    SetValue(_DAIKIN_AC_CREATE_VARIABLE($_IPS['SELF'], $IPS_IDENT$key), $value);

                    break;
                }
        }


        if (! @
    IPS_GetObjectIDByIdent($ObjectID."_send",$ObjectID))
                {
                    echo 
    "erzeuge Variablenprofil zum senden von Werten";
                    if (! 
    IPS_VariableProfileExists("_DAIKIN_AC_send"))
                            { 
                                
    IPS_CreateVariableProfile("_DAIKIN_AC_send"0);
                                
    IPS_SetVariableProfileAssociation("_DAIKIN_AC_send"1"senden"""0x00FF00);
                                
    IPS_SetVariableProfileAssociation("_DAIKIN_AC_send"0"holen"""0xFFFFFF);

                            }
             echo 
    "erzeuge Variable zum senden von Werten";
             
    $VarSend IPS_CreateVariable(0);
             
    IPS_SetParent($VarSend$ObjectID);
             
    IPS_SetName($VarSend"Kommunikation");
             
    IPS_SetIdent($VarSend$ObjectID."_send");
             
    IPS_SetVariableCustomProfile($VarSend"_DAIKIN_AC_send");
             
    IPS_SetVariableCustomAction($VarSend$ScriptID); 

         }  
    }
    Dann ausführen und es werden entsprechend die Variablen/profilen angelegt.

    Viele Grüße
    Software: IP-Symcon V. 5 Unlimited Ubuntu 18.04
    Hardware: Shuttle DS77U3/16GB/1TBSSD
    Virtualisierung: Proxmox V6
    Homematic: Raspberrymatic

  3. #23
    Registriert seit
    Jan 2017
    Beiträge
    41

    Danke!Ich habe mal getestet, leider werden nicht Alles richtig erstellt. Siehe Anhang. Ein Modul wäre Bombe

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Klima-Schlafzimmer.jpg 
Hits:	108 
Größe:	181.1 KB 
ID:	54251

  4. #24
    Registriert seit
    Jan 2017
    Ort
    Linz
    Beiträge
    520

    Hallo an alle!

    Ich überlege, mir auch eine Daikin-Klimaanlage (Multisplit mit 2 Geräten) zu kaufen.
    Voraussetzung ist aber, dass ich diese in IP-Symcon integrieren kann.
    Verstehe ich das richtig, dass das WLAN-Zusatzmodul reicht, um die Einbindung zu ermöglichen?

    Danke für eure Rückmeldung!

    LG Peter

  5. #25
    Registriert seit
    Nov 2011
    Beiträge
    382

    Hi,

    Ja reicht... Hab drei innengeräte und funktioneren wunderbar.

    Gesendet von meinem HD1903 mit Tapatalk
    Software: IP-Symcon V. 5 Unlimited Ubuntu 18.04
    Hardware: Shuttle DS77U3/16GB/1TBSSD
    Virtualisierung: Proxmox V6
    Homematic: Raspberrymatic

  6. #26
    Registriert seit
    Jan 2017
    Ort
    Linz
    Beiträge
    520

    Zitat Zitat von kris Beitrag anzeigen
    Ja reicht... Hab drei innengeräte und funktioneren wunderbar
    Super, perfekt! Danke für die Info!

    Mit dem Klimagerät bist du zufrieden?

  7. #27
    Registriert seit
    Nov 2011
    Beiträge
    382

    Hi,

    Ja sehr. Ich kann das teil sogar im Schlafzimmer laufen lassen so leise ist der.

    was wichtig ist zu wissen... Wenn man per app oder symcon die Temperatur regelt oder ein/ausschaltet wird das nicht an die Fernbedienung übertragen.

    Für uns kein Problem, die Fernbedienungen haben wir ausgemustert.

    Viele Grüße

    Gesendet von meinem HD1903 mit Tapatalk
    Software: IP-Symcon V. 5 Unlimited Ubuntu 18.04
    Hardware: Shuttle DS77U3/16GB/1TBSSD
    Virtualisierung: Proxmox V6
    Homematic: Raspberrymatic

  8. #28
    Registriert seit
    Apr 2013
    Beiträge
    14

    Standard IP/aircon/get_sensor_info

    Hallo Kris,
    kann man in dein Quasi Modul auch noch eine Abfrage der "IP/aircon/get_sensor_info"-Abfrage einbauen?
    Mich interssiert dort vor Allem die Ausgabe des Fehlercodes.
    Vielen Dank
    Franz

  9. #29
    Registriert seit
    Nov 2011
    Beiträge
    382

    Hi,

    müsste ich mir mal anschauen... Hab noch ein paar Ergänzungen und muss die noch hier einfügen.mal sehen ob ich es heute noch hinbekomme

    Gibt es eine tabelle was es für Errocodes gibt?

    Gesendet von meinem HD1903 mit Tapatalk
    Geändert von kris (21.06.20 um 17:22 Uhr)
    Software: IP-Symcon V. 5 Unlimited Ubuntu 18.04
    Hardware: Shuttle DS77U3/16GB/1TBSSD
    Virtualisierung: Proxmox V6
    Homematic: Raspberrymatic

  10. #30
    Registriert seit
    Apr 2013
    Beiträge
    14

    Standard Fehlercode

    Hallo Kris,
    ja, Fehlercodeliste gibt es.
    Ich weiß aber nicht ob die bei allen Geräten gleich ist (würde zwar Sinn machen).
    Die Liste meiner Klima habe ich mal angehängt.
    Es wäre zwar toll, wenn der Fehlercode gleich in klarschrift angezeigt wird aber um die Sache einfach zu halten währe es auch ok für mich, dass einfach der code angezeigt wird.

    VG
    Franz
    Angehängte Grafiken Angehängte Grafiken

Ähnliche Themen

  1. LED Wlan Controller
    Von Flobo im Forum Beleuchtung / Lichttechnik
    Antworten: 12
    Letzter Beitrag: 15.10.17, 16:50
  2. RGB Wlan Controller in IPS einbinden
    Von drapple im Forum Beleuchtung / Lichttechnik
    Antworten: 96
    Letzter Beitrag: 19.03.17, 14:59
  3. RGBW Wlan Controller in IPS einbinden
    Von firewire im Forum Beleuchtung / Lichttechnik
    Antworten: 7
    Letzter Beitrag: 28.01.16, 11:33
  4. WLAN RGB Controller einbinden
    Von GeforceGamer im Forum Beleuchtung / Lichttechnik
    Antworten: 53
    Letzter Beitrag: 22.12.15, 22:39
  5. PHP: Parsen bzw. Alternative zu split -> join -> split
    Von bengie im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 05.02.12, 22:13

Stichworte