Wie schon an anderer Stelle angemerkt bin ich ein großer Fan von Debbugern in der IDE 
Für einen LBS der in Edomi läuft ist das ja eher schwierig, deshalb hatte ich mich vor ein paar Tagen hingesetzt und einen MiniWrapper gebastelt der es erlaubt einen LBS ohne Änderung am Sourcecode in einer IDE mit Debugger auszuführen.
Das funktioniert für LBS ohne EXEC ziemlich gut aber mit EXEC tue ich mich noch etwas schwer...
Ohne EXEC kann ich beim debugging $E beliebig ändern und so ankommende Telegramme simulieren.
Mit habe ich das Problem das der EXEC Teil oft ewig rennt bevor man mal Gelegenheit hat im LBS Teil die Eingänge abzuarbeiten.
Aktuell ist der EXEC Teil im gleichen Thread was zum Teil auch zu "abweichenden" Verhalten zu Edomi führt.
Hat vielleicht jemand eine gute Idee wie man das Lösen könnte?
Btw, falls es jemand ausprobieren möchte anbei der aktuelle Stand:
Einzige Änderung die vorgenommen werden muss ist das "require" mit dem eigenen Pfad/LBSID anzupassen und falls es einen EXEC Teil gibt den seperat in 'LBSNAME_exec.php' zu schreiben.

Für einen LBS der in Edomi läuft ist das ja eher schwierig, deshalb hatte ich mich vor ein paar Tagen hingesetzt und einen MiniWrapper gebastelt der es erlaubt einen LBS ohne Änderung am Sourcecode in einer IDE mit Debugger auszuführen.
Das funktioniert für LBS ohne EXEC ziemlich gut aber mit EXEC tue ich mich noch etwas schwer...
Ohne EXEC kann ich beim debugging $E beliebig ändern und so ankommende Telegramme simulieren.
Mit habe ich das Problem das der EXEC Teil oft ewig rennt bevor man mal Gelegenheit hat im LBS Teil die Eingänge abzuarbeiten.
Aktuell ist der EXEC Teil im gleichen Thread was zum Teil auch zu "abweichenden" Verhalten zu Edomi führt.
Hat vielleicht jemand eine gute Idee wie man das Lösen könnte?
Btw, falls es jemand ausprobieren möchte anbei der aktuelle Stand:
Einzige Änderung die vorgenommen werden muss ist das "require" mit dem eigenen Pfad/LBSID anzupassen und falls es einen EXEC Teil gibt den seperat in 'LBSNAME_exec.php' zu schreiben.
PHP-Code:
<?php
const LBSID="19001213";
require('../'.LBSID.'_lbs.php');
$id=LBSID;
$state=0;
$duration=0;
$E[1]['value']=0;
$E[1]['refresh']=0;
$E[2]['value']=1;
$E[2]['refresh']=1;
$E[3]['value']=5000;
$E[3]['refresh']=0;
$E[4]['value']=600;
$E[4]['refresh']=0;
$E[5]['value']='bright';
$E[4]['refresh']=1;
$E[10]['value']=1;
$E[11]['value']=1;
$var[1]=0;
$var[2]=0;
$var[3]=0;
$var[4]=0;
$var[100]=0;
$var[101]=19001213;
$var[102]='Yeelight Sunrise';
$var[103]=8;
$var[104]=0;
$var[105]=0;
/*[e#9 trigger= Set Mode] 0/1 Off/on
[e#10 trigger= Set ByPass] 0/1 Off/on
[e#11 trigger= Set Fan Mode] 0=Auto, 1=Low, 2=Medium, 3=High
[e#12 trigger= Set Date & Time]
[e#13 trigger= Clear Fault]*/
do {
LB_LBSID($id);
usleep($duration);
} while ($state==1);
function setLogicElementVar($id, $varnum, $value){logic_setVar($id, $varnum, $value);};
function sql_connect(){};
function logic_getState($id){
global $state;
return $state;
}
function logic_setState($id,$val,$duration=0){
$GLOBALS["duration"]=$duration;
$GLOBALS["state"]=$val;
print("Set_State : ".$val.",".$duration."\n");
}
function logic_setVar($id, $varnum, $value){
global $var;
$var[$varnum]=$value;
print("Set_var : ".$varnum." Value:".$value."\n");
};
function getLogicElementVar($id, $varnum){return logic_getVar($id, $varnum);};
function logic_getVar($id, $varnum){
global $var;
return $var[$varnum];
};
function writeToCustomLog($logName, $logLevel, $msg){echo $msg."\n";};
function getLogicEingangDataAll($id){return logic_getInputs($id);};
function logic_getInputs($id){
global $E;
return $E;
};
function logic_setOutput($id, $A, $val){
print( "A".$A."=".$val."\n");
};
function sql_disconnect(){};
function logic_callExec($LBSID, $id){
include('../'.LBSID.'_lbs_exec.php');
};
function getSysInfo($nr){return true;};
Kommentar