Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

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