OK ... werde künftig "vorsichtiger" vorgehen
Ankündigung
Einklappen
Keine Ankündigung bisher.
LBS 19001680 / DAIKIN-Control
Einklappen
X
-
Zitat von vento66 Beitrag anzeigenHaben die Wien erweitert?
Kommentar
-
trax
Ich hatte heute Folgendes im Log:
Code:2018-08-31 06:07:04 046746 30789 1 executing url http://10.0.30.2/aircon/set_control_info?ret=OK&pow=0&mode=3&adv=&stemp=25.0&shum=0&dt1=25.0&dt2=M&dt3=25.0&dt4=25.0&dt5=25.0&dt7=25.0&dh1=0&dh2=50&dh3=0&dh4=0&dh5=0&dh7=0&dhh=50&b_mode=3&b_stemp=25.0&b_shum=0&alert=255&f_rate=A&f_dir=0&b_f_rate=A&b_f_dir=0&dfr1=A&dfr2=5&dfr3=A&dfr4=5&dfr5=5&dfr6=5&dfr7=A&dfrh=5&dfd1=0&dfd2=0&dfd3=0&dfd4=0&dfd5=0&dfd6=0&dfd7=0&dfdh=0&dmnd_run=0&en_demand=0 failed! 2018-08-31 06:07:04 047580 30789 1 init url http://10.0.30.2/aircon/set_control_info?ret=OK&pow=0&mode=3&adv=&stemp=25.0&shum=0&dt1=25.0&dt2=M&dt3=25.0&dt4=25.0&dt5=25.0&dt7=25.0&dh1=0&dh2=50&dh3=0&dh4=0&dh5=0&dh7=0&dhh=50&b_mode=3&b_stemp=25.0&b_shum=0&alert=255&f_rate=A&f_dir=0&b_f_rate=A&b_f_dir=0&dfr1=A&dfr2=5&dfr3=A&dfr4=5&dfr5=5&dfr6=5&dfr7=A&dfrh=5&dfd1=0&dfd2=0&dfd3=0&dfd4=0&dfd5=0&dfd6=0&dfd7=0&dfdh=0&dmnd_run=0&en_demand=0 failed! 2018-08-31 06:07:04 050134 30789 1 transfer ControlInfo to 10.0.30.2 failed
Ach ja, gibt es nur einen Loglevel (1) oder müsste man die anderen direkt im Code aktivieren/ändern (kein LBS-Eingang für den LogLevel) ?
DANKE vorab !!Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
coliflower ... V1.1 oder V1.2 ?
(ach ich seh schon V1.1)
... normal ist das nicht - ist sogar ziemlich seltsam .. ist das einmalig aufgetreten ? / kannst du das reproduzieren ?
Bzgl. LOG Level habe ich mich auf Grund der Möglichkeit, den Code des (EDOMI) LBS einfach und unkompliziert ändern ´zu können, grundsätzlich dazu entschieden, standardmäßig nur Fehler zu loggen. Es gibt eine Konstante "DEBUG" - die mal auf true setzen, dann wird jeder Schritt protokolliert.
--
Nachtrag:
Ich habe mal ein Wifi-Modul rebootet und während es nicht erreichbar ist abgefragt ...
- der Fehler tritt auf wenn das Gerät nicht erreichbar ist !Grüße
Christian
__________________
Kommentar
-
Zitat von trax Beitrag anzeigen(ach ich seh schon V1.1)
Im Log sehe ich heute nur den oben geposteten Eintrag.
In der Edomi Verwaltung sehe ich keinen Namen oder LBS Nummer:
Bildschirmfoto 2018-08-31 um 19.17.56.pngDanke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Zugegebener Maßen sind die Fehlermeldungen, bzw. LOG-Einträge eher "seicht"
- das werde ich bei Gelegenheit mal ein wenig ausbauen
Soweit der LBS grundsätzlich funktioniert kann man im Code auch LOG auf false setzen
- dann erschrickt man nicht wenn da mal was drin steht
Grüße
Christian
__________________
Kommentar
-
Zitat von coliflower Beitrag anzeigenNa ja, im Hilfetext steht 1.2 ...
Jedoch
Zitat von coliflower Beitrag anzeigenIn der Edomi Verwaltung sehe ich keinen Namen oder LBS Nummer:
Allerdings bliebe ein mit V1.1 (fälschlicher Weise ) als "1" benanntes Log-File existent und sollte gelöscht werden.
( die gezeigten Log-Einträge sind jedenfalls aus V1.1)Zuletzt geändert von trax; 31.08.2018, 18:51.Grüße
Christian
__________________
Kommentar
-
Zitat von vento66 Beitrag anzeigenDariusz, das solltest Du doch aber wissen.
Auf jeden Fall habe ich eine v1.2 die lt. Aussage eine v1.1 ist ... wollte der Ursache näher kommen ...Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Hier noch der Quellcode (Edomi):
PHP-Code:###[DEF]###
[name =DAIKIN-Control v1.2]
[e#1 important = IP]
[e#2 = Trigger]
[e#3 = Power]
[e#4 = Mode]
[e#5 = target Temp]
[e#6 = Fan]
[e#7 = FanDir]
[e#8 = Special]
[v#1 = 0 ]
[v#2 = 0 ]
[a#1 = Power]
[a#2 = Mode]
[a#3 = set Temp.]
[a#4 = Fan]
[a#5 = FanDir]
[a#6 = Room]
[a#7 = Special]
[a#8 = Outside]
[a#9 = Error]
###[/DEF]###
###[HELP]###
<strong>DAIKIN-Control</strong> , V1.2<br>
EDOMI Baustein zur Steuerung von DAIKIN Klimaanlagen mit WiFi Modul BRP069A41 (u.Ä.)
( unoffcial Daikin API documentation @ <a href="https://github.com/ael-code/daikin-control" target="_blank">github.com/ael-code/daikin-control</a>)
ƒnderungen der Einstellungen werden sofort nach eintreffen eines Telegramms am Eingang [E3]-[E8] an das Ger‰t weitergegeben. Eine automatische Datenabfrage aktualisiert die Ausgänge anschließend. Dem entsprechend kann immer nur eine Änderung auf einmal übertragen werden.
Es werden nur (bisher bekannte) gültige Werte übertragen. Etwaige Fehler in der Kommunikation mit dem Gerät werden an [A9] als Klartext ausgegeben.
Eine manuelle Datenabfrage (z.B. zyklisch) kann ¸ber den Trigger-Eingang [E2] ausgelˆst werden.
Der Eingang [E8] toggelt die Spezial-Funktionen Powerful, Econo und FlashStreamer entsprechend dem aktuellen Zustand.
Die Luftfeuchte-Funktion der "Ururu Sarara" Modelle werden nicht unterst¸tzt.
E1: IP Adresse des WiFi-Moduls
E2: Trigger (Daten abholen)
E3: Betrieb (<strong>0 </strong>Aus, <strong>1 </strong>Ein)
E4: Modus (<strong>1 </strong>Auto, <strong>2 </strong>trocknen, <strong>3 </strong>k¸hlen, <strong>4 </strong>heizen, <strong>6 </strong>l¸ften)
E5: Zieltemperatur ∞C (min. 10, max 15 / .5)
E6: Lüfterstufe (<strong>A </strong>Auto, <strong>B </strong>Silence, <strong>3-7</strong>)
E7: Fl¸gelbewegung (<strong>0 </strong>Stopp, <strong>1 </strong>vertikal, <strong>2 </strong>horitontal, <strong>3 </strong>3D)
E8: Spezialfunktionen (<strong>TOGGLE </strong>(ein/aus) <strong>1 </strong>Powerful , <strong>2 </strong>Econo, <strong>3 </strong>FlashStreamer)
A1: Betrieb (<strong>0</strong> Aus, <strong>1</strong> Ein)
A2: Modus (<strong>0 </strong>Standby <strong>1 </strong>Auto, <strong>2 </strong>trocknen, <strong>3 </strong>k¸hlen, <strong>4 </strong>heizen, <strong>6 </strong>l¸ften, , <strong>7 </strong>Auto(heizen))
A3: Zieltemperatur ∞C
A4: L¸fterstufe (<strong>A </strong>Auto, <strong>B </strong>Silence, <strong>3-7</strong>)
A5: Fl¸gelbewegung (<strong>0 </strong>Stopp, <strong>1 </strong>vertikal, <strong>2 </strong>horitontal, <strong>3 </strong>3D)
A6: Raumtemperatur ∞C
A7: Spezialfunktion (<strong>0 </strong>, <strong>1 </strong>Powerful, <strong>2 </strong>Econo, <strong>3 </strong>FlashStreamer, <strong>13 </strong>Kombi 1+3, <strong>23 </strong>Kombi 2+3)
A8: Auflentemperatur ∞C
A9: LBS Fehlermeldung
ChangeLog:
V1.0 { initial }
V1.1 { Bugfix; Auflentemperatur auf E8 (Error auf E9) }
V1.2 { Spezial nicht mˆglich wenn Ger‰t AUS; Set Temp. im Modus 6 L¸ften nicht mˆglich; Set Temp & Hum. bei Moduswechsel; Bugfixes }
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if (!isEmpty($E[1]['value'])){ // check if IP (E1) is set
// set var 1 to identify refreshed Input in EXEC
if (!isEmpty($E[8]['value']) && $E[8]['refresh']==1) logic_setVar($id,1,8);
if (!isEmpty($E[7]['value']) && $E[7]['refresh']==1) logic_setVar($id,1,7);
if (!isEmpty($E[6]['value']) && $E[6]['refresh']==1) logic_setVar($id,1,6);
if (!isEmpty($E[5]['value']) && $E[5]['refresh']==1) logic_setVar($id,1,5);
if (!isEmpty($E[4]['value']) && $E[4]['refresh']==1) logic_setVar($id,1,4);
if (!isEmpty($E[3]['value']) && $E[3]['refresh']==1) logic_setVar($id,1,3);
// if Trigger (E2) refresh data (var 1 = 1);
if (!isEmpty($E[1]['value']) && $E[2]['refresh']==1) logic_setVar($id,1,1);
if (logic_getVar($id,2) < 1) logic_callExec(LBSID,$id);
// block executing while running
logic_setVar($id,2,1);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
///// CONSTANT //////
define ("LOG", true);
define ("DEBUG", true);
define ("LOG1680","LBS19001680 - DAIKIN-Control");
define ("LOG_STEP",'0');
define ("LOG_ERROR",'1');
define ("GetBasicInfo","common/basic_info");
define ("GetModelInfo","/aircon/get_model_info");
define ("GetControlInfo","aircon/get_control_info");
define ("SetControlInfo","aircon/set_control_info?");
define ("GetSensorInfo","aircon/get_sensor_info");
define ("SetSpecialMode","aircon/set_special_mode?");
define ("Get2DayPower","aircon/get_day_power_ex?days=2");
define ("Get7DayPower","aircon/get_day_power_ex?days=7");
define ("GetWeekPower","aircon/get_week_power_ex");
define ("GetYearPower","aircon/get_year_power_ex");
define ("RebootAP","common/reboot");
////// SUBS ////////
function DataTransfer($URL) { //returns false, or parameter-array
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "HTTP GET: ".$URL);
if ($request= curl_init($URL)) {
curl_setopt($request, CURLOPT_RETURNTRANSFER, true); // get the returned answer
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Request init OK, requesting...");
if ($content = curl_exec($request) ){ //
curl_close($request);
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "returned content: ".$content);
$content = strtr ( $content , ',' , '&'); /// replace separator with '&' (easy use of parse_str)
parse_str($content, $output);
if ($output['ret'] == 'OK') { // data accepted if device returns ret=OK
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "data transfer: OK");
unset($output['ret']); // remove ret
return $output;
}
else return false;
}
else {
curl_close($request);
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "executing url ".$URL." failed!");
}
}
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "init url ".$URL." failed!");
return false;
}
function SetInfo($IP, $PARAM, $ID) {
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "changing parameter...");
// get Control Info Data array
if ($controlInfo = DataTransfer("http://".$IP."/".GetControlInfo)) {
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Control Info Array: OK");
}
else {
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "Getting Control-Info from ".$IP." failed!");
return false;
}
$E=logic_getInputs($ID);
if ($PARAM == 3) { // change Power
$pow = $E[3]['value'];
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Input power=".$pow);
switch ($pow) { // if input valid set value
case 0; case 1:
$controlInfo['pow']=$pow;
break;
default: if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "wrong power mode ".$pow);
return false;
}
}
if ($PARAM == 4) { // change Mode
$mode = $E[4]['value'];
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Input mode=".$mode);
switch ($mode) { // if input valid set value
case 1; case 2; case 3; case 4:
$controlInfo['mode']=$mode;
// set the temperatur & humidity to last temp on that mode
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "dt".$mode." = ".$controlInfo['dt'.$mode]);
$controlInfo['stemp']=$controlInfo['dt'.$mode];
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "dh".$mode." = ".$controlInfo['dh'.$mode]);
$controlInfo['shum']=$controlInfo['dh'.$mode];
break;
case 6: // does not accept to set a temperature
$controlInfo['mode']=$mode;
break;
default: if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "wrong mode ".$mode);
return false;
}
}
if ($PARAM == 5) { // change target temperature
if ($controlInfo['mode']==6) { // dry-mode = no temp !
logic_setOutput($ID,9,"Unit in fan mode ! (no Temp.)");
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "Unit ".$IP." in Fan-Mode, setting Temp. not possible");
return true;
}
$temp = $E[5]['value'];
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Input temp=".$temp);
$max = 31;
$min = 18;
if ($controlInfo['mode']== 3) $max=33; // cold, accepted max = 33∞C
if ($controlInfo['mode']== 4) $min=10; // heat, accepted min = 10∞C
if ($controlInfo['mode']== 6) $max=$min-1; // fan, NO Temp ! - set max lower as min
if (($temp >= $min) && ($temp <= $max)) $controlInfo['stemp'] = round($temp*2) / 2; // smallest temperatur step 0.5∞C
else if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "temp (".$temp.") outside range [".$min."]/[.".$max."]");
}
if ($PARAM == 6) { // change fan speed
$fan = $E[6]['value'];
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Input fan=".$fan);
switch ($fan) { // if input valid set value
case 'A';case 'B';case 3;case 4;case 5;case 6;case 7:
$controlInfo['f_rate']=$fan;
break;
default: if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "wrong fan speed ".$fan);
return false;
}
}
if ($PARAM == 7) { // change fan direction
$fanDir = $E[7]['value'];
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Input fanDir=".$fanDir);
switch ($fanDir) { // if input OK set value
case 0; case 1; case 2; case 3:
$controlInfo['f_dir']=$fanDir;
break;
default: if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "wrong fan direction ".$fan);
return false;
}
}
// Build the Control-Info url
$url = "http://".$IP."/".SetControlInfo;
$url.=http_build_query($controlInfo);
// for special - special url is needed
if ($PARAM == 8) { // change special
$special = $E[8]['value'];
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Input special=".$special." adv=".$controlInfo['adv']);
if ($controlInfo['pow'] == 0) { // device is off = set special function not possible
logic_setOutput($ID,9,"Unit OFF, not possible !");
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "Special ".$special." not possible while unit ".$IP." OFF");
return true;
}
$url = "http://".$IP."/".SetSpecialMode;
if (isEmpty($controlInfo['adv'])) $controlInfo['adv']="0";
switch ($special) {
case 0: $url.="set_spmode=0&spmode_kind=1&en_streamer=0";
break;
// Powerfull
case 1: if (strpos (strval($controlInfo['adv']), "2") > -1 && strpos (strval($controlInfo), "2") < 1) $url.="set_spmode=0&spmode_kind=1";
else $url.="set_spmode=1&spmode_kind=1";
break;
// Econo
case 2: if (strpos (strval($controlInfo['adv']), "12") > -1) $url.="set_spmode=0&spmode_kind=2";
else $url.="set_spmode=1&spmode_kind=2";
break;
// Flashstreamer
case 3: if (strpos (strval($controlInfo['adv']), "13" ) > -1 ) $url.="en_streamer=0";
else $url.="en_streamer=1";
break;
default: if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "wrong special ".$special);
return false;
}
}
// transfer data and return
if ($returnInfo = DataTransfer($url)) return true;
if (DEBUG) writeToCustomLog(LOG1680, LOG_ERROR, "data transfer FAILED");
return false;
}
////// MAIN ////////
// needed things ...
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
set_time_limit(20); //runtime limit 20sec
sql_connect();
// get the IP from Input 1
$E=logic_getInputs($id);
$ip = $E[1]['value'];
logic_setOutput($id,9," "); // reset error msg
// get which Paramter to change from LBS var 1
$infoToChange = logic_getVar($id,1);
if ($infoToChange > 1) { // submit paramter change
if (SetInfo($ip, $infoToChange, $id) == false) {
// if something went wrong - report
logic_setOutput($id,9,"change parameter failed !");
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "transfer ControlInfo to ".$ip." failed");
}
else if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "...data transfered");
}
// get actual State from Devive @ IP
if ($controlInfo = DataTransfer("http://".$ip."/".GetControlInfo)) {
// set the outputs [a#1 = Power] [a#2 = Mode] [a#3 = set Temp.] [a#4 = Fan] [a#5 = FanDir]
logic_setOutput($id,1,$controlInfo['pow']);
logic_setOutput($id,2,$controlInfo['mode']);
logic_setOutput($id,3,$controlInfo['stemp']);
logic_setOutput($id,4,$controlInfo['f_rate']);
logic_setOutput($id,5,$controlInfo['f_dir']);
// translate adv (2;12;13;2/13;12/13)
switch ($controlInfo['adv']) {
case "2": logic_setOutput($id,7,1);
break;
case "12": logic_setOutput($id,7,2);
break;
case "13": logic_setOutput($id,7,3);
break;
case "2/13": logic_setOutput($id,7,13);
break;
case "12/13": logic_setOutput($id,7,23);
break;
default: logic_setOutput($id,7,0);
break;
}
if (DEBUG) writeToCustomLog(LOG1680, LOG_STEP, "Outputs set");
}
else {
logic_setOutput($id,9,"Getting Control Info failed!");
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "Getting Control-Info from ".$ip." failed!");
}
// get actual SensorInfo from Devive
if ($sensorInfo = DataTransfer("http://".$ip."/".GetSensorInfo)) {
// set output [a#6 = Room]
logic_setOutput($id,6,$sensorInfo['htemp']);
// set output [a#8 = Outside]
logic_setOutput($id,8,$sensorInfo['otemp']);
}
else {
logic_setOutput($id,9,"Getting Sensor Info failed!");
if (LOG) writeToCustomLog(LOG1680, LOG_ERROR, "Getting Sensor-Info from ".$ip." failed!");
}
/// done ///
logic_setVar($id,2,0); // signal to LBS
sql_disconnect();
?>
###[/EXEC]###Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Zitat von coliflower Beitrag anzeigenNa ja, ich lade immer die Datei dazu ..
Kommentar
-
Davon gehe ich aus ... Grundsätzlich aktiviere ich ein Projekt immer neu wenn ich Änderungen vornehme die das benötigen ...
Egal, ich hatte nur diesen Eintrag und wenn nichts mehr kommt dann ist alles Paletti :-)Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
Kommentar