Ankündigung
Einklappen
Keine Ankündigung bisher.
Größe der KNX-GA Queue auslesen
Einklappen
X
-
Zitat von gaert Beitrag anzeigenDu kannst Dir einen LBS basteln und die Anzahl in der Queue sodann auslesen:
Code:select s0 from edomiLive.RAMsysProc where id=3
Kommentar
-
Zitat von trollmar Beitrag anzeigenwie überträgst du die logs zu elastic?
Filebeat auf dem Edomi Server an Logstash, also ganz klassisch.
EDIT: Lass mich wissen wenn Du es genauer brauchst, dann versuche ich das heute Abend mal detaillierter zu beschreiben.
GrußZuletzt geändert von tobo; 14.09.2017, 16:10.
- Likes 1
Kommentar
-
Zitat von tobo Beitrag anzeigenLBS bauen wird mangels Programmierfähigkeit nichts, aber versuche mal die DB extern abzufragen.
PHP-Code:###[DEF]###
[name = GA-Queue ]
[e#1 = Trigger ]
[e#2 = LogLevel]
[a#1 = Groesse ]
###[/DEF]###
###[HELP]###
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if ($E[1]['refresh'] && $E[1]['value']) {
LB_LBSID_debug($id,"Starte LBS-Teil",7);
$mysqli=new mysqli("localhost","root","","edomiLive");
if ($mysqli->connect_errno) {
LB_LBSID_debug($id,"Fehler bei der MySQL Verbindung (".$mysqli->connect_errno."): ".$mysqli->connect_error,0);
} else {
$q="select s0 from RAMsysProc where id=3";
$res=$mysqli->query($q);
$v=array();
if ($mysqli->errno) {
LB_LBSID_debug($id,"Query nicht erfolgreich, Abbruch (".$mysqli->errno."): ".$mysqli->error,0);
} else {
if ($res->num_rows && $v=$res->fetch_row()) {
logic_setOutput($id,1,$v[0]);
} else {
LB_LBSID_debug($id,"Keinen Wert gefunden",5);
}
$res->close();
}
$mysqli->close();
}
}
}
}
function LB_LBSID_debug($id,$s,$l=6) {
$a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
$E=logic_getInputs($id);
$DEBUG=$E[2]['value'];
$l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
}
?>
###[/LBS]###
###[EXEC]###
###[/EXEC]###
- Likes 1
Kommentar
-
tobo pack das al LBS in dein Edomi. E1 triggert die Abfrage.PHP-Code:###[DEF]###
[name = max KNX Queue]
[e#1 trigger = Trigger ]
[a#1 = Max Queue ]
###[/DEF]###
###[HELP]###
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if ($E[1]['refresh']==1){callLogicFunctionExec(LBSID,$id);}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
sql_connect();
$file='/var/tmp/EDOMI_LBSID_'.$id.'.json';
if ($E=getLogicEingangDataAll($id)) {
setLogicElementVar($id, 1,1);
mysql_connect("localhost","root","");
mysql_select_db('edomiLive');
$q = "select s0 from edomiLive.RAMsysProc where id=3";
$result = mysql_query($q);
$data = mysql_fetch_array($result);
$max =$data[0];
setLogicLinkAusgang($id, 1,$max);
}
?>
###[/EXEC]###Zuletzt geändert von vento66; 14.09.2017, 23:34.
- Likes 1
Kommentar
-
EXEC muss zwar nicht unbedingt sein in diesem Fall, aber schadet ja auch nicht
Die Spalte ist übrigens s0 - nicht s3.
Vielleicht noch ein Tipp am Rande: Für die mySQL-Abfragen gibt's entsprechende (undokumentierte) EDOMI-Funktionen - das Beispiel sähe dann so aus:
PHP-Code:...
$table=sql_call("SELECT s0 FROM edomiLive.RAMsysProc WHERE id=3");
if ($n=sql_result($table)) {
setLogicLinkAusgang($id,1,$n['s0']);
}
sql_close($table);
...
Oder als LBS (ohne EXEC) - ungetestet aus dem Ärmel:
PHP-Code:###[DEF]###
[name =s0-Abfrage ]
[e#1 =Trigger ]
[a#1 =s0 ]
###[/DEF]###
###[HELP]###
...
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
$table=sql_call("SELECT s0 FROM edomiLive.RAMsysProc WHERE id=3");
if ($n=sql_result($table)) {
setLogicLinkAusgang($id,1,$n['s0']);
}
sql_close($table);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###Zuletzt geändert von gaert; 14.09.2017, 21:28.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigenVielleicht noch ein Tipp am Rande: Für die mySQL-Abfragen gibt's entsprechende (undokumentierte) EDOMI-Funktionen
Kommentar
-
Oder?!Kann man auch aus diversen Werks-LBS abschauen...
EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Das close ist eigentlich überflüssig. Aber ich habe dies konsequent (er war stets bemüht...) bei jeder Abfrage mit dabei für den Fall, dass sich bei PHP 10 oder so mal irgendwas ändert bezüglich mySQL-Implementierung. Spart dann ggf. ne Menge Arbeit, da man ja nur die entsprechende Funktion anpassen müsste.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigenEXEC muss zwar nicht unbedingt sein in diesem Fall, aber schadet ja auch nicht
Die Spalte ist übrigens s0 - nicht s3.
Vielleicht noch ein Tipp am Rande: Für die mySQL-Abfragen gibt's entsprechende (undokumentierte) EDOMI-Funktionen - das Beispiel sähe dann so aus:
PHP-Code:...
$table=sql_call("SELECT s0 FROM edomiLive.RAMsysProc WHERE id=3");
if ($n=sql_result($table)) {
setLogicLinkAusgang($id,1,$n['s0']);
}
sql_close($table);
...
Oder als LBS (ohne EXEC) - ungetestet aus dem Ärmel:
PHP-Code:###[DEF]###
[name =s0-Abfrage ]
[e#1 =Trigger ]
[a#1 =s0 ]
###[/DEF]###
###[HELP]###
...
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
$table=sql_call("SELECT s0 FROM edomiLive.RAMsysProc WHERE id=3");
if ($n=sql_result($table)) {
setLogicLinkAusgang($id,1,$n['s0']);
}
sql_close($table);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###
Ich probiere das gerade mal aus.
Hatte letzten auch den Fall das sich die Queue erst über Nacht gefüllt hat.
Bin dann morgens aus dem Haus ..da check ich nicht die Queue.
Am Abend ging keine Szene am Taster mehr weil die Queue bei 2000+ war.
Würde vorschlagen das ggf. mit in die WerksLBS zu übernehmen.
Der passt doch hervorragend in die Logikseite "Edomi Watchdog"
LGJean-Luc Picard: "Things are only impossible until they are not."
Kommentar
Kommentar