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]###
Kommentar