Ankündigung

Einklappen
Keine Ankündigung bisher.

Nibe S1255 per myuplink oder Modbus auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Hallo,

    Denke es gab einen Kopierfehler, probier bitte den mal aus. Es gibt nur folgende Parameter, mehr bekomme ich aus der API nicht raus:

    [
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "4",
    "parameterName": "Aktu­elle Außen­luft­tempe­ratur (BT1)",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-12-20T11:58:06+00:00",
    "value": 6.5,
    "strVal": "6.5°C",
    "smartHomeCategories": [
    "sh-outdoorTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "8",
    "parameterName": "Vorlauf (BT2)",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-12-20T11:26:55+00:00",
    "value": 25.6,
    "strVal": "25.6°C",
    "smartHomeCategories": [
    "sh-supplyTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "10",
    "parameterName": "Rück­lauf (BT3)",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-12-20T10:00:50+00:00",
    "value": 23.4,
    "strVal": "23.4°C",
    "smartHomeCategories": [
    "sh-returnTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "12",
    "parameterName": "Brauch­wasser­berei­tung (BT6)",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-12-20T11:53:18+00:00",
    "value": 47.4,
    "strVal": "47.4°C",
    "smartHomeCategories": [
    "sh-hwTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "13",
    "parameterName": "Ein­tritt Wärme­quellen­medium (BT10)",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-12-20T09:26:42+00:00",
    "value": 8.2,
    "strVal": "8.2°C",
    "smartHomeCategories": [
    "sh-returnTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "14",
    "parameterName": "Aus­tritt Wärme­quellen­medium (BT11)",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-12-20T10:35:30+00:00",
    "value": 4.2,
    "strVal": "4.2°C",
    "smartHomeCategories": [
    "sh-supplyTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "54",
    "parameterName": "Mitt­lere Tempe­ratur (BT1)",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-12-20T11:09:24+00:00",
    "value": 4,
    "strVal": "4°C",
    "smartHomeCategories": [
    "sh-outdoorTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "781",
    "parameterName": "Grad­minuten",
    "parameterUnit": "DM",
    "writable": true,
    "timestamp": "2023-12-20T12:33:24+00:00",
    "value": -252,
    "strVal": "-252DM",
    "smartHomeCategories": [],
    "minValue": -30000,
    "maxValue": 30000,
    "stepValue": 20,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    },
    {
    "category": "NIBE S1155-12 EM 3X400V",
    "parameterId": "1708",
    "parameterName": "Berech­neter Vorlauf Klima­tisie­rungs­system 1",
    "parameterUnit": "°C",
    "writable": false,
    "timestamp": "2023-11-27T17:22:59+00:00",
    "value": 25,
    "strVal": "25°C",
    "smartHomeCategories": [
    "sh-supplyTemp"
    ],
    "minValue": null,
    "maxValue": null,
    "stepValue": 1,
    "enumValues": [],
    "scaleValue": "0.1",
    "zoneId": null
    }
    ]​

    Hier der abgeänderte Code:

    Code:
    ###[DEF]###
    [name        =MY UPLINK NUBI    ]
    
    [e#1        trigger= Abfragen]
    [e#2        = user(mail) ]
    [e#3        = password ]
    
    
    [a#1        =Aussentemperatur [°C]    ]
    [a#2        =Vorlauf         ]
    [a#3        =Rücklauf         ]
    [a#4        =Brauchwasserbereitung         ]
    [a#5        =Eintritt Wärmequellenmedium         ]
    [a#6        =Austritt Wärmequellenmedium        ]
    [a#7        =Mittlere Temperatur    ]
    [a#8        =Gradminuten        ]
    [a#9        =Berechneter Vorlauf Klimatisierungssystem        ]
    [a#10        =Alarmliste        ]
    [a#11        =debug        ]
    
    [v#100 = 0.1 ]
    [v#101 = 19001988 ]
    [v#102 = Abfrage KNC Wärmempumpe ]
    [v#103 = 0 ]
    
    ###[/DEF]###
    
    
    ###[HELP]###
    Keine Hilfe verfügbar
    ###[/HELP]###
    
    
    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=logic_getInputs($id)) {
            if ($E[1]['refresh'] && $E[1]['value']) {
                callLogicFunctionExec(LBSID, $id);
            }
            
        }
    }
    ?>
    ###[/LBS]###
    
    
    ###[EXEC]###
    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    set_time_limit(10);
    sql_connect();
    
    //-------------------------------------------------------------------------------------
    
    $E = getLogicEingangDataAll($id);
    $user = $E[2]['value'];
    $password = $E[3]['value'];
    
    // Url zuweisen
    
    $url_token='https://api.myuplink.com/oauth/token';
    $url_system='https://api.myuplink.com/v2/systems/me?page=1&itemsPerPage=10';
    $payload_login =('{"grant_type":"password","email":"'.$user.'","password":"'.$password.'"}');
    $payload_token =('grant_type=password&username='.$user.'&password='.$password.'&client_id=My-Uplink-Web');
    
    
    //Token auslesen
    $ch = curl_init($url_token);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload_token);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('application/x-www-form-urlencoded, Accept-Language: de-DE'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    
    //Login und Token auslesen
    $obj = json_decode($result);
    $access_token = $obj->access_token;
    $refresh_token = $obj->refresh_token;
    $token_type = $obj->token_type;
    
    //System-ID auslesen
    $ch = curl_init($url_system);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('text/plain', 'Authorization: Bearer '. $access_token));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    $array_system=json_decode($result,true);
    
    //SystemID Auslesen
    foreach ($array_system['systems'] as $v) {
        $systemid=$v['systemId'];
    }
    
    //Device-ID auslesen
    foreach ($array_system['systems']['0']['devices'] as $v) {
        $deviceid=$v['id'];
    }
    
    //URLs definieren für Abfragen der Points und Notifications
    $url_params='https://api.myuplink.com/v2/devices/'. $deviceid . '/points';
    $url_notification='https://api.myuplink.com/v2/systems/'. $systemid .'/notifications/active?page=1&itemsPerPage=20';
    
    //Points auslesen
    $ch = curl_init($url_params);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('application/json', 'Accept-Language: de-DE', 'text/plain', '*/*', 'Authorization: Bearer '. $access_token));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $arr_datapoints = json_decode($result);
    
    //Array durchgehen und alle Parameter wegschreiben
    $i=0;
    foreach ($arr_datapoints as $v){
        //$array[$i]['parameterName'] = $v->parameterName;
        $array[$i]['value'] = $v->value;
        $i++;
    }
    
    $keys = array_keys($array);
    for($i = 0; $i < count($array); $i++) {
        foreach($array[$keys[$i]] as $key => $value) {
            logic_setOutput($id,$i+1, $value);
        }
    }
    
    //Aktive Alarme auslesen
    $ch = curl_init($url_notification);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Language: de-DE', 'text/plain', '*/*', 'Authorization: Bearer '. $access_token));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $arr_notifications = json_decode($result);
    logic_setOutput($id, 10, $arr_notifications);
    
    
    
    ?>
    ###[/EXEC]###
    
    
    
    
    ​

    Kommentar


      #17
      Ja vl hats im ESH Forum wer mit andre Tools wie Node Red geschafft. Dann kannst du dir das per mqtt reinholen

      Kommentar

      Lädt...
      X