Aaaaalso
in $part stehen die Zeilen die von der Heizung kommen 115 zeilen
in E5-En gebe ich die Zeilen in $part vor die ich auslesen will, und dann an die Eingänge A1-An ausgebe.
das mit A2 habe ich nach meinem Post auch gesehen, und schon geändert.
das mit Z war eigentlich nur zum testen obs geht. Ich hab jetzt deine Variante eingebaut. Kurioserweise sind jetzt auch die restlichen Zeichen im Ausgang.
Der Fehler im Error-Log is aber nach wie vor da aber nur noch Zeile 37, ich weiß aber nicht auf was sich die Zeile bezieht. normal doch in der funktion, aber die is ja gar net so lang
aktueller Code:
in $part stehen die Zeilen die von der Heizung kommen 115 zeilen
in E5-En gebe ich die Zeilen in $part vor die ich auslesen will, und dann an die Eingänge A1-An ausgebe.
das mit A2 habe ich nach meinem Post auch gesehen, und schon geändert.
das mit Z war eigentlich nur zum testen obs geht. Ich hab jetzt deine Variante eingebaut. Kurioserweise sind jetzt auch die restlichen Zeichen im Ausgang.
Der Fehler im Error-Log is aber nach wie vor da aber nur noch Zeile 37, ich weiß aber nicht auf was sich die Zeile bezieht. normal doch in der funktion, aber die is ja gar net so lang
aktueller Code:
PHP-Code:
###[DEF]###
[name = GUNTAMATIC MODBUS 0.1]
[e#1 =aktiv #init=1 ]
[e#2 =IP Heizung ]
[e#3 =KEY v. Guntamatic ]
[e#4 =LogLevel #init=1 ]
[e#5 =A1 ]
[e#6 =A2 ]
[e#7 =A3 ]
[e#8 =A4]
[e#9 =A5 ]
[e#10 =A6]
[e#11 =A7 ]
[e#12 =A8 ]
[e#13 =A9 ]
[e#14 =A10 ]
[e#15 =A11 ]
[e#16 =A12 ]
[e#17 =A13 ]
[e#18 =A14 ]
[e#19 =A15 ]
[e#20 =A16 ]
[e#21 =A17 ]
[e#22 =A18 ]
[e#23 =A19 ]
[e#24 =A20 ]
[a#1 =E4 ]
[a#2 =E5 ]
[a#3 =E6 ]
[a#4 =E7 ]
[a#5 =E8 ]
[a#6 =E9 ]
[a#7 =E10 ]
[a#8 =E11 ]
[a#9 =E12 ]
[a#10 =E13 ]
[a#11 =E14 ]
[a#12 =E15 ]
[a#13 =E16 ]
[a#14 =E17 ]
[a#15 =E18 ]
[a#16 =E19 ]
[a#17 =E20 ]
[a#18 =E21 ]
[a#19 =E22 ]
[a#20 =E23 ]
[v#1 = 0]
###[/DEF]###
###[HELP]###
GUNTAMATIC MODBUS INTERFACE
Dieser Baustein liest das MODBUS Interface der Guntamatic Heizung aus, und gibt die gewählten Wert an A1-A20 aus.
falls mehr Werte benötigt werden, einfach einen 2. LBS nutzen.
Es werden von den Heizungen unterschiedliche Werte zur Verfügung gestellt, es empfiehlt sich die Abfrage IP/ext/daqdesc.cgi?key=XXX
durchzuführen um zu sehen welche werte zur Verfügung gestellt werden. IP ist dabei die IP der Heizung XXX der Key der von Guntamatic
zur Verfügung gestellt wird (muss dort beantragt werden) bis SW-Version 3.00 wird der Key mMn nicht benötigt.
E1: Flag Baustein Aktiv 1/0 Ja/nein
E2: IP Heizungssteuerung
E3: Guntamatic KEY
E4: LogLevel
E5-E24: Ausgangszuweisungen
V 0.1 - Initale Version
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if (getLogicElementVar($id,1)!=1) {
setLogicElementVar($id,1,1); //setzt V1=1, um einen mehrfachen Start des EXEC-Scripts zu verhindern
if (!$E[1]['value']) { //IP Prüfen
LB_LBSID_debug($id,"Abbruch, keine IP definiert",3);
logic_setOutput($id,1,"Fehlende IP");
} else {
if (!$E[2]['value']) { //KEY Prüfen
LB_LBSID_debug($id,"Abbruch, kein KEY definiert",3);
logic_setOutput($id,1,"Fehlende KEY");
} else {
LB_LBSID_debug($id,"Starte EXEC-Teil",7);
callLogicFunctionExec(LBSID,$id); //EXEC-Script starten (garantiert nur einmalig)
writeToCustomLog("19201040",3,"Start EXEC");
}
}
}
}
}
function LB_LBSID_debug($id,$s,$l=6) {
$a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
$E=logic_getInputs($id);
$DEBUG=$E[9]['value'];
$l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
}
?>
###[/LBS]###
###[EXEC]###
<?
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
set_time_limit(0); //Wichtig! Script soll endlos laufen
writeToCustomLog("19201040",3,"EXEC gestartet");
sql_connect();
if ($E=logic_getInputs($id)) {
$DEBUG=$E[4]['value'];
$DEBUG && debug($id,"Baustein startet");
writeToCustomLog("19201040",3,"SQL Connect durchgeführt");
writeToCustomLog("19201040",3,"Sys info");
while (getSysInfo(1)>=1) {
writeToCustomLog("19201040",3,"Sys info");
$url = "http://" . $E[2]['value'] ."/daqdata.cgi?key=" . $E[3]['value'];
writeToCustomLog("19201040",3,"http://" . $E[2]['value'] ."/daqdata.cgi?key=" . $E[3]['value']);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
ob_start();
curl_exec ($ch);
curl_close ($ch);
$text = ob_get_contents();
ob_end_clean();
$text = str_replace("\r\n", "\n", $text); // windows -> linux
$text = str_replace("\r", "\n", $text); // mac -> linux
# array bilden
$part = explode("\n", $text);
for ($i = 5; $i < count($E); $i++) {
if (array_key_exists($E[$i]['value'],$part))
logic_setOutput($id,$i-4,$part[$E[$i]['value']]);
writeToCustomLog("19201040",3,"logic_setOutput".$id ."-".($i-3)."-".$part[$E[$i]['value']]);
}
usleep(1000*500); //z.B. 10ms warten - wichtig, um die CPU-Last zu begrenzen!
}
}
finish();
function debug($id,$s,$l=6) {
$a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
global $DEBUG;
$l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
}
function finish() {
global $id;
debug($id,"Baustein beendet");
sql_disconnect();
exit();
}
?>
###[/EXEC]###
Kommentar