Hallo,
bin seit einigen Tagen am überlegen, einen PI2 mit IPS als Heizungsregler zu versuchen.
Da soll die komplette Kesselsteuerung mit Kesselwasser, Mischer und Speicher übernehmen.
Erster Versuch, Temperaturen zu erfassen direkt per GPIO4 am PI aus Symcon.
<?
$ds_id[1] = "10-000801717bee";
$ds_id[2] = "10-00080282e6eb";
$ds_id[3] = "10-00080282eb9c";
$ds_id[4] = "28-000001326a54";
$ds_id[5] = "28-000005110ea4";
$ds_id[6] = "28-000005944153";
// Test
$temp = exec('cat /sys/bus/w1/devices/'.$ds_id[1].'/w1_slave |grep t=');
$temp = explode('t=',$temp);
$temp = $temp[1] / 1000;
$temp = round($temp,2);
// echo $temp . " C";
if($_IPS['SENDER'] == "Execute") // nur wenn bei "Ausführen"
{
$vid = CreateVariableByName($_IPS['SELF'], "Running", 0);
$eid = CreateEventIDByName($_IPS['SELF'], "StartStop", 0);
IPS_SetEventActive($eid, true);
IPS_SetEventTrigger($eid, 0, $vid);
IPS_SetEventScript($eid, $_IPS['SELF']);
}
if($_IPS['SENDER'] == "Variable")
{
if($_IPS['VALUE'])
{
IPS_SetScriptTimer($_IPS['SELF'], 15); // 15-Sekunden-Takt
} else {
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
}
if($_IPS['SENDER'] == "TimerEvent") //
{
for ($i = 1; ; $i++) {
if ($i > 5) {
break;
}
$temp = exec('cat /sys/bus/w1/devices/'.$ds_id[$i].'/w1_slave |grep t=');
$temp = explode('t=',$temp);
$temp = $temp[1] / 1000;
$temp = round($temp,2);
$id = CreateVariableByName($_IPS['SELF'], $ds_id[$i], 2);
SetValue($id, $temp);
}
}
function CreateVariableByName($id, $name, $type)
{
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid===false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
}
return $vid;
}
function CreateEventIDByName($id, $name, $type)
{
$eid = @IPS_GetEventIDByName($name, $id);
if($eid===false) {
$eid = IPS_CreateEvent($type);
IPS_SetParent($eid, $id);
IPS_SetName($eid, $name);
}
return $eid;
}
?>
Jetzt muss ich mir mal über die Regler Gedanken machen, wie ich so etwas in PHP lösen könnte.
Falls einer Tipp’s hat, her damit.
Im Moment fehlt mir leider Zeit, und ich komme fast nur noch am WE etwas weiter.
ps :
config.txt in /boot:
dtoverlay=w1-gpio,gpiopin=4,pullup=on