Update 19.2 und Metering verschwunden

Hallo
Ich updatete meine dS-Systeme auf 19.2. In beiden geht seit dem das Metering in IP-Symcon nicht mehr. Der Stromverbrauch wird konstant gehalten. Bin ich der einzige?

Ich habe das gleiche Problem. Außerdem bekomme ich ständig die Fehlermeldung „ds Splitter (update timer): ident darf nicht leer sein“. Ich bekomme die Meldung jede Minute und würde sie gerne los werden. Der Versuch Benutzername und Passwort neu einzugeben führt zur gleichen Fehlermeldung.
Wenn ich Versuche den dS Splitter zu löschen führt das zum Absturz des gesamten Systems.
Ich habe keine Ahnung was ich machen soll!

Es scheint ein allgemeiner bug zu sein in der alten Schnittstelle. Siehe Redirecting...
In der neuen Schnittstelle würde das Metering gehen. Wenn man etwas ändert, würde ich auch die neue Schnittstelle wechseln. Ich wäre nicht überrascht, wenn ds in ein paar Monaten die alte API schliesst.

Wie kann ich auf die neue Schnittstelle wechseln? Welche neue Schnittstelle ist das? Von ds oder ips?
In dem verlinkten Beitrag steht ja auch nichts zu einer Lösung drin.

Im Post
Retour Kanal gemäss 1.16 - Hardware / digitalSTROM - IP-Symcon Community
findest Du ein Skript, mit dessen Du auf die neue API zugreifen kannst. Für das Metering braucht den den Code

$Call = „/api/v1/apartment/meterings?“;

Mit demBefehler

$rpc = new JSONRPC(„http://admin:password@127.0.0.1:3777/api/“);
$rpc->SetValue(45708, false);

kannst Du die entsprechenden Meter Angabe in deinem System überschreiben. - oder Du fragst lieb die Integratoren von IP-Symcon, ob Sie dies für Dich machen…

Das sieht für mich nicht so aus als ob ich das als Laie lösen könnte.
Mir wäre ja schon geholfen wenn nicht die Logdatei mit lauter Fehlern vollgeschrieben würde.
Wie schon oben erwähnt ich schaffe es nicht mal den Splitter zu löschen. Dann stürzt IPS komplett ab.

Mögt ihr im Splitter → Debug mal schauen was beim „metering/getLatest“ zurückkommt? Gerne hier posten oder mir als PM schicken. Vielleicht kann dann zur 6.1 zumindest die Fehler abstellen.

paresy

Ich bekomme folgende Meldung:
27.12.2021, 15:02:41 | metering/getLatest?token=xxxx &type=consumption&from=.meters(all) | {„result“:{„values“:[{„dSUID“:„3504175fe00000000000001000000acb00“,„value“:3.0,„date“:„2021-12-27 15:01:45“},{„dSUID“:„3504175fe00000000000001000000b4400“,„value“:15.0,„date“:„2021-12-27 15:01:45“},{„dSUID“:„303505d7f8000000000002c00000234200“,„value“:219.0,„date“:„2021-12-27 15:01:45“},{„dSUID“:„303505d7f8000000000002c00000252900“,„value“:9.0,„date“:„2021-12-27 15:01:45“},{„dSUID“:„303505d7f8000000000002c000004d3f00“,„value“:183.0,„date“:„2021-12-27 15:01:45“},{„dSUID“:„302ed89f43f0000000000e4000008ab900“,„value“:10.0,„date“:„2021-12-27 15:01:45“},{„dSUID“:„302ed89f43f0000000000e4000010bd100“,„value“:27.0,„date“:„2021-12-27 15:01:45“}]},„ok“:true}

Den token habe ich durch xxxx ersetzt.

In der Zwischenzeit habe ich ein Skript gebastelt, welches mit der neuen API arbeitet und das Meter „ersetzt“.
Den Kopf, den rpc und die dsuip der Meter innerhalb der Switch Anweisungen müssen geändert/ergänzt werden. Ebenso die Variable 12345 für die SetValue.

<?php

$Server = "192.168.1.159";  // z.B. "192.168.1.33";
$AppToken = "506aa41219d946d918cf7421ced104154e067c2e0c378cda8e50d6f123456789";       //64-Stelligen Applikation Token
$tcpPort = "8080";

//*******************************************************************************************************************************************;


$Call = "/api/v1/installation/meterings/values?";

$arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);

$sessionToken = fdSLogin();

$ist=fdSGetJson($Call, $sessionToken);
$ist=json_decode($ist,true);
$ist=$ist['data']['values'];

$rpc = new JSONRPC('admin:password@192.168.1.131:3777/api/');

foreach ($ist as $value)
    {
         switch ($value["id"])
        {
            case "dsm-302ed89f43f0000000000e400000542c00-power":
                 $rpc->SetValue(12345,$value['attributes']['value']);
            break;

            
        }
    }

/************************************************* Funktionen definieren  **********************************/
 
/* digitalSTROM Login Prozedure Function */
function fdSLogin(){
    global $Server;
    global $tcpPort;
    global $AppToken;
    global $arrContextOptions;
 
    if($sessionToken = file_get_contents("https://" . $Server . ":" . $tcpPort . "/json/system/loginApplication?loginToken=" . $AppToken, false, stream_context_create($arrContextOptions))){
        $sessionToken = json_decode($sessionToken);
        return $sessionToken->result->token;
    }
    else{
        return "<font color='red'><b>ERROR:</b> unable to get loginToken from digitalSTROM Server</font><br>";
    }
}
 
/* digitalSTROM get JSON content Function */
function fdSGetJson($call, $sessionToken){
    global $Server;
    global $tcpPort;
    global $arrContextOptions;
    $sHelp;
    global $debug;
 
    $sHelp = "https://" . $Server . ":" . $tcpPort . $call . "&token=" . $sessionToken;
 
    if($jsonOutput = file_get_contents($sHelp , false, stream_context_create($arrContextOptions))){
        return $jsonOutput; // plain output
    }
    else{
        return "<font color='red'><b>ERROR:</b> unable to get JSON Content from digitalSTROM Server</font><br>";
    }
}

?>

Hörte sich eigentlich einfach an. Aber selbst dazu bin ich offensichtlich nicht in der Lage.
ich bekomme folgende Meldungen:

Notice: Undefined property: stdClass::$result in /var/lib/symcon/scripts/31087.ips.php on line 50

Notice: Trying to get property ‚token‘ of non-object in /var/lib/symcon/scripts/31087.ips.php on line 50

Warning: file_get_contents(https://192.168.178.4:8080/api/v1/installation/meterings/values?&token=): failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized
in /var/lib/symcon/scripts/31087.ips.php on line 67

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/31087.ips.php on line 23

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/31087.ips.php on line 23

Fatal error: Uncaught Exception: Invalid URL in /usr/share/symcon/scripts/__rpc.inc.php:17
Stack trace:
#0 /var/lib/symcon/scripts/31087.ips.php(25): JSONRPC->__construct(‚admin:password@…‘)
#1 {main}
thrown in /usr/share/symcon/scripts/__rpc.inc.php on line 17

Magst du mir das Debug noch von apartment/getCircuits zusenden?

Es scheint, als wenn die das dsid Feld, welches in der API vorhanden sein sollte, einfach entfernt hätten. Laut API sollte es dsid sein. Und wie du siehst kommt bei dir dSUID.

Natürlich ist auch die Frage, was die noch alles kaputt gemacht haben. Ich könnte also den Metering Teil korrigieren. Aber wir verwenden die dsid definitiv noch beim Schalten von Einzelklemmen, beim direkten Ansteuern der Jalousien und beim Anfragen der Sensoren/Eingänge in der Joker-Klemme Instanz.

Da ich zwischen den Tagen keinen Zugriff auf dS Equipment habe, kann ich aktuell nur eingeschränkt was ausprobieren.

paresy

dss-json.pdf (481,2 KB)

Ich vermute, Du hast zwei Probleme.

Problem 1: APP-Token
Im Programm in der zweiten Zeile muss Du Deinen AppToken angeben. Diesen findest Du im Konfigurator von dS unter dem Reiter System und dann Zugriffsberechtigung. Ich habe bis jetzt noch nicht herausgefunden, wie man diesen langen code copy-pasted. Ich habe schon mehrmals diesen Code schweisstreibend abgeschrieben. - Gerne melden, wenn es einen Shortcut gäbe.

Problem 2: rcp
Da gibt es sicherlich bessere Spezialisten. Versuche zuerst eine nicht schreibgeschütze Variable zu nehmen und dort die Werte zu notieren.

Hallo paresy, würde ich gerne wenn ich wüsste wie. Der Parameter "apartment/getCircuits " taucht bei mir nich auf.

Hallo msiegw,
jetzt bin ich etwas weiter gekommen. Ich bekomme nur noch folgende Meldung:
Fatal error: Uncaught Exception: Invalid URL in /usr/share/symcon/scripts/__rpc.inc.php:17
Stack trace:
#0 /var/lib/symcon/scripts/31087.ips.php(25): JSONRPC->__construct(‚admin:password@…‘)
#1 {main}
thrown in /usr/share/symcon/scripts/__rpc.inc.php on line 17

Es scheint etwas mit dem Passwort nicht zu passen. Was muss man da genau ändernß Ich habe bisher nur die Server-Adresse angepasst.

Unter admin musst Du deine eMail für Dein Synology Lizenz und das zugehörige password. - weiss nicht, ob es noch das spezielle IPsymconRK.php file braucht, damit Du zugriff bekommst. Innerhalb IP-symcon hast zu kein Schreibrecht auf diese Variable. Du gehst aber aus IP-symcon hinaus, um wieder hinein zu kommen. Damit umgehst Du den Schreibschutz.

Mein getCirsuit:

{„result“:{„circuits“:[{„name“:„Küche Entree Esstisch WC“,„dsid“:„303505d7f80002c000002ca9“,„dSUID“:„303505d7f8000000000002c000002ca900“,„DisplayID“:„00002ca9“,„hwVersion“:0,„hwVersionString“:„11.1.24.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM11“,„isPresent“:true,„isValid“:true,„busMemberType“:16,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false},{„name“:„Garage“,„dsid“:„303505d7f80002c000002ca6“,„dSUID“:„303505d7f8000000000002c000002ca600“,„DisplayID“:„00002ca6“,„hwVersion“:0,„hwVersionString“:„11.1.24.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM11“,„isPresent“:true,„isValid“:true,„busMemberType“:16,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false},{„name“:„2. Stock - Estrich“,„dsid“:„302ed89f43f00e4000005425“,„dSUID“:„302ed89f43f0000000000e400000542500“,„DisplayID“:„00005425“,„hwVersion“:0,„hwVersionString“:„12.1.1.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM12“,„isPresent“:true,„isValid“:true,„busMemberType“:17,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false},{„name“:„Oscar Bruno Bad“,„dsid“:„302ed89f43f00e4000005426“,„dSUID“:„302ed89f43f0000000000e400000542600“,„DisplayID“:„00005426“,„hwVersion“:0,„hwVersionString“:„12.1.1.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM12“,„isPresent“:true,„isValid“:true,„busMemberType“:17,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false},{„name“:„Keller“,„dsid“:„302ed89f43f00e400000541b“,„dSUID“:„302ed89f43f0000000000e400000541b00“,„DisplayID“:„0000541b“,„hwVersion“:0,„hwVersionString“:„12.1.1.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM12“,„isPresent“:true,„isValid“:true,„busMemberType“:17,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false},{„name“:„Esszimmer Treppenhaus Stube Garten“,„dsid“:„302ed89f43f00e400000ecda“,„dSUID“:„302ed89f43f0000000000e400000ecda00“,„DisplayID“:„0000ecda“,„hwVersion“:0,„hwVersionString“:„12.1.4.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM12“,„isPresent“:true,„isValid“:true,„busMemberType“:17,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false},{„name“:„Schlafzimmer Büro_Martin Dusche“,„dsid“:„302ed89f43f00e400000f71a“,„dSUID“:„302ed89f43f0000000000e400000f71a00“,„DisplayID“:„0000f71a“,„hwVersion“:0,„hwVersionString“:„12.1.4.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM12“,„isPresent“:true,„isValid“:true,„busMemberType“:17,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false},{„name“:„2. Stock Estrich 2te Phase“,„dsid“:„302ed89f43f00e400000f72b“,„dSUID“:„302ed89f43f0000000000e400000f72b00“,„DisplayID“:„0000f72b“,„hwVersion“:0,„hwVersionString“:„12.1.4.0“,„swVersion“:„1.42.1.0 / DSP: 1.9.1.0“,„armSwVersion“:19529984,„dspSwVersion“:17367296,„isUpToDate“:true,„apiVersion“:772,„authorized“:false,„hwName“:„dSM12“,„isPresent“:true,„isValid“:true,„busMemberType“:17,„hasDevices“:true,„hasMetering“:true,„hasMeteringProducer“:false,„hasMeteringProducerEnabled“:false,„hasBlinking“:true,„VdcConfigURL“:"",„VdcModelUID“:"",„VdcHardwareGuid“:"",„VdcHardwareModelGuid“:"",„VdcImplementationId“:"",„VdcVendorGuid“:"",„VdcOemGuid“:"",„ignoreActionsFromNewDevices“:false}]},„ok“:true}

Dann haben die wirklich nur den metering/getLatest Endpunkt kaputt gemacht und nicht generell überall die dsid’s entfernt. Würde jetzt für einen simplen Bug sprechen, den die leicht fixen können und weniger für eine bewusste Entfernung aller dsid’s.

Ich schau mal, ob ich da einen temporären Workaround einbauen kann.

paresy

Ok. Ich bin draußen! Das ist mir zu kompliziert. Mit dem Passwort das haut nicht hin.

Für alle, die es Testen wollen habe ich einen Docker Build unter dem symcon/symcon:6.1-188-fixes-dss-dsid-workaround-amd64 Image parat. Ich freue mich auf euer Feedback, ob es geht.

paresy


Habe einen Testcontainer erzeugt mit 6.1_188

Das Metering funktioniert wieder wie früher
Jedoch der Konfigurator bringt weiterhin denselben Fehler wie früher, wenn man einen Token anfragt. Der Token wird jedoch korrekt angefragt und im dS Konfigurator angezeigt.