Hallo Zusammen,
ich hatte ja vor einiger Zeit angekündigt mich über den Guntamatic LBS zu machen. Recht und schön heute habe ich dann auch Zeit gefunden das PHP Script in einen LBS einzubauen, jedoch scheine ich da irgendwas verhunzt zu haben. Kann einer von euch Profis da mal drüberschauen? Das kommt mir beim Speichern des LBS.
fehler.jpg
Zeile 133 wäre die hier: $text = str_replace("\r\n", "\n", $text); // windows -> linux
Bin ich einfach zu blöd, oder seh ich den Wald vor lauter Bäumen nicht?
ich hatte ja vor einiger Zeit angekündigt mich über den Guntamatic LBS zu machen. Recht und schön heute habe ich dann auch Zeit gefunden das PHP Script in einen LBS einzubauen, jedoch scheine ich da irgendwas verhunzt zu haben. Kann einer von euch Profis da mal drüberschauen? Das kommt mir beim Speichern des LBS.
fehler.jpg
Zeile 133 wäre die hier: $text = str_replace("\r\n", "\n", $text); // windows -> linux
Bin ich einfach zu blöd, oder seh ich den Wald vor lauter Bäumen nicht?
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[2]['value']) { //IP Prüfen
LB_LBSID_debug($id,"Abbruch, keine IP definiert",3);
logic_setOutput($id,1,"Fehlende IP");
} else {
if (!$E[3]['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)
}
}
}
}
}
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
if ($E=logic_getInputs($id)) {
$DEBUG=$E[23]['value'];
$DEBUG && debug($id,"Baustein startet");
sql_connect();
while (getSysInfo(1)>=1) {
try{
$url = "http://" . $E[1] ."/daqdata.cgi?key=" . $E[1] .";
$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 = 4; $i < count($E); $i++) {
logic_setOutput($id,$E-3,$Part[$E])
}
}catch(Exception $er){
echo "Fehler";
}
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]###




danke 
Kommentar