Hilfe zeitgesteuerte Webseiten-Auslese erstellen

Ich hab auch einen Deye aber den 2400er. Ebenso mit WLAN und Solarmananbindung.
Die API ist relativ einfach. Hier mein Skript

<?php

function datenholen($sn)
{
	$token=getvalue(24584);
	$appID=getvalue(49005);
	$url = getvalue(38165)."/device/v1.0/currentData?appId=".$appID."&language=en&=";

	$curl = curl_init($url);
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$headers = array(
   		"Authorization: bearer ".$token,
   		"Content-Type: application/json",
	);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

	$data = "{
		\"deviceSn\": \"".$sn."\"
		}";
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	$resp = curl_exec($curl);
	curl_close($curl);
	return $resp;
}


function logdaten($sn,$geraet)
{
	$token=getvalue(24584);
	$appID=getvalue(49005);
	$url = getvalue(38165)."/device/v1.0/alertList?appId=".$appID."&language=en&=";
	//Zeitstempel
    $starttimestamp=mktime(0,0,0,date("m"),date("d"),date("y"));
	$endtimestamp=time();

	$curl = curl_init($url);
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$headers = array(
   		"Authorization: bearer ".$token,
   		"Content-Type: application/json",
	);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

	$data = "{
		\"deviceSn\": \"".$sn."\",
		\"endTimestamp\" : \"".$endtimestamp."\",
		\"startTimestamp\" : \"".$starttimestamp."\"		
		}";
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	$resp = curl_exec($curl);
	curl_close($curl);
	if ($resp<>"")
	{
		//Logdaten ins IPS Log schreiben
        $logdaten=json_decode($resp,true);
        if (is_array($logdaten))
        {
            if (array_key_exists("alertList", $logdaten))
            {
    		    $logdaten=$logdaten["alertList"];
		        //level 0:Hinweis, 1:Warnung, 2: Fehler
    		    //influence 0:kein Einfluss, 1: Produktion, 2: Sicherheit, 3:Produktion&Sicherheit
		        $level="";
		        $influence="";
		        foreach ($logdaten as $eintrag)
		        {
        			switch ($eintrag["level"])
			        {
        				case 0: $level="MESSAGE";break;
				        case 1: $level="WARNING";break;
				        case 2: $level="ERROR";break;
			        }
			        switch ($eintrag["influence"])
			        {
        				case 0: $influence="kein Einfluss";break;
				        case 1: $influence="Produktion";break;
				        case 2: $influence="Sicherheit";break;
				        case 3: $influence="Produktion&Sicherheit";break;
			        }
	 		        Global_Log_Eintrag_erstellen($level,$geraet,"WRLOG - ".date("d.m.Y G:i:s",$eintrag["alertTime"])." ".$eintrag["alertName"]." ".$influence);
		        }
            }
        }
	}
}

//eventuell Token holen
if (time()>=getvalue(52106)) IPS_RunScriptWait(56619); //ScriptID Token holen
//Logdaten Logger
logdaten("4047293442","WR Logger");
//Wechselrichter
logdaten("2103282105","WR");
//Modul 1
logdaten("2103282105-1","Modul1");
//Modul 2
logdaten("2103282105-2","Modul2");
//Modul 3
logdaten("2103282105-3","Modul3");
//Modul 4
logdaten("2103282105-4","Modul4");
//Logger
//var_dump(json_decode(datenholen("4047293442"),true));
//Wechselrichter
$wrdaten=json_decode(datenholen("2103282105"),true);
//var_dump($wrdaten);
if (is_array($wrdaten))
{
    if (array_key_exists("dataList",$wrdaten))
    {
    	//Update
    	setvalue(20614,mktime(intval($wrdaten["dataList"][7]["value"]),intval($wrdaten["dataList"][8]["value"]),intval($wrdaten["dataList"][9]["value"]),intval($wrdaten["dataList"][5]["value"]),intval($wrdaten["dataList"][6]["value"]),intval($wrdaten["dataList"][4]["value"])));
    	//Temperatur
    	if ($wrdaten["dataList"][39]["value"]>0) setvalue(42688,$wrdaten["dataList"][39]["value"]);

    	//PV1
    	//Ampere
    	setvalue(15569,$wrdaten["dataList"][17]["value"]);
    	//Leistung
    	setvalue(10271,$wrdaten["dataList"][21]["value"]);
    	//Volt
    	setvalue(12127,$wrdaten["dataList"][13]["value"]);

    	//PV2
    	setvalue(19442,$wrdaten["dataList"][18]["value"]);
    	setvalue(14759,$wrdaten["dataList"][22]["value"]);
    	setvalue(39168,$wrdaten["dataList"][14]["value"]);

    	//PV3
    	setvalue(20520,$wrdaten["dataList"][19]["value"]);
    	setvalue(54745,$wrdaten["dataList"][23]["value"]);
    	setvalue(48708,$wrdaten["dataList"][15]["value"]);

    	//PV4
    	setvalue(22639,$wrdaten["dataList"][20]["value"]);
    	setvalue(44506,$wrdaten["dataList"][24]["value"]);
    	setvalue(12708,$wrdaten["dataList"][16]["value"]);
    }
    else
    {
    	Global_Log_Eintrag_erstellen("WARNING","WRLOGGER","WRLOG - Keine Daten empfangen");
    }
}

Bei dir werden es nur zwei Anschlusse geben.
Was du brauchst ist die API-ID. Die bekommst du direkt beim Anbieter. Da reicht eni Mail. Die ID wird dir dann zugesendet.
Damit kannst du dann den Token ermitteln, den du benötigst.
Hier das Skript dazu

<?php
$url=getvalue(38165);
$user=getvalue(47023); //Benutzername vom Onlinezugang
$password=hash("sha256",getvalue(29895)); //Passwort vom Onlinezugang
$appId=getvalue(49005); //Daten kommen von Solarman
$appSecret=getvalue(41880); //Daten kommen Solarman

$erg=array();
$url = $url."/account/v1.0/token?appId=".$appId."&language=en&=";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$headers = array(
   "Content-Type: application/json",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$data ="
{
	\"appSecret\": \"".$appSecret."\",
	\"email\": \"".$user."\",
	\"password\": \"".$password."\"
}";

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$resp = curl_exec($curl);
curl_close($curl);
$erg=json_decode($resp,true);
var_dump($erg);
if ($erg["success"] == true)
{
	setvalue(24584,$erg["access_token"]);
	setvalue(47369,$erg["refresh_token"]);
	setvalue(52106,time()+$erg["expires_in"]);
}
else
{
	setvalue(24584,"");
	setvalue(47369,"");
	setvalue(52106,"");	
}

Die Daten sind allerdings immer ca. 10-15 Minuten hinten nach. Also für Echtzeitüberwachung ungeeignet. Dafür solltest du dir eine andere Art der Messung überlegen. Als Beispiel wäre z.b. ein Shelly Plug mit Verbrauchsmessung. Der misst auch in die umgekehrte Richtung.

Näheres auch hier

Wobei mich im Grunde nur die Temperatur interessiert. Den Rest bekomme ich von der Shelly bzw. ist für mich uninteressant.