Systemprotokoll automatisch exportieren ?
Moderator: Co-Administratoren
-
- Beiträge: 3083
- Registriert: 23.08.2015, 11:06
- System: CCU
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 111 Mal
Re: Systemprotokoll automatisch exportieren ?
Vorerst passe ich!
Meine spontan-akute Begriffstutzigkeit hat gesiegt.
Den kompletten Thread habe ich mehrfach durch!
Erfolg = Null
Trotzdem danke an alle.
Schönen Abend noch.
66er
Meine spontan-akute Begriffstutzigkeit hat gesiegt.
Den kompletten Thread habe ich mehrfach durch!
Erfolg = Null
Trotzdem danke an alle.
Schönen Abend noch.
66er
Ich übernehme keine Haftung für von mir gegebene Antworten, Tipps und veröffentlichte Projekte! Jeder ist für sich selbst verantwortlich! Arbeiten an 230V sind von einer Elektrofachkraft auszuführen!
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
-
- Beiträge: 10758
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 674 Mal
Re: Systemprotokoll automatisch exportieren ?
Das kann ich nicht nachvollziehen.
WAS hast du denn nicht begriffen?
Alchy
WAS hast du denn nicht begriffen?
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
-
- Beiträge: 14246
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 597 Mal
- Danksagung erhalten: 1521 Mal
Re: Systemprotokoll automatisch exportieren ?
Die Systemvariable "Systemprotokoll" muss ja noch mit dem Inhalt des richtigen Systemprotokolls gefüllt werden. Dazu brauchst Du das Script. Das ist meis aus dem GUI (und vermutlich auch das gleiche wie im verlinkten Thread).
Wenn Du die Zeile var clearHistory = dom.ClearHistoryData(); mit einen führenden Ausrufezeichn auskommentierst, bleibt Dir bei Experimenten auch das Systemprotokoll erhalten. Für den grundsätzlichen Test kannst Du auch die Textausgabe Konsole aktivieren (Ausrufezeichen entfernen) und das Script im Testfenster ausführen. So kannst Du überprüfen, ob die Sysvar überhaupt gefüllt wird. Anscheinend ist Dein Script noch nie durchgelaufen und das Systemprotokoll deswegen noch vorhanden. Hast Du die CUxD-Adresse angepasst? Bei mir ist das die CUxD.CUX2801999:1. Muss bei Dir nicht unbedingt gleich sein.
Gruß Xel66
Code: Alles auswählen
! Systemprotokoll auslesen und als E-Mail versenden
!--------------------------------------------------
! Unbedingt eine Systemvariable mit Namen "Systemprotokoll"
! vom Typ Zeichenkette anlegen !!!
! Im TCL Bereich des E-Mail Addons
! folgende Zeilen ohne ! eintragen.
! load tclrega.so
! array set tclrega [rega_script {
! var sysp = dom.GetObject("Systemprotokoll").Value();
! var clearsysp = dom.GetObject("Systemprotokoll").State("");
! } ]
! set sysprot [encoding convertfrom utf-8 $tclrega(sysp)]
!-----------------------------------------------------------------
! Ausgabe in der Mail mit $sysprot
! Zb:Systemprotokoll:$sysprot
!-----------------------------------------------------------------
! id der E-Mail hier eintragen !!!
string mail_id = "08";
! Im unteren Teil die Adresse des CUxD durch seine eigene ersetzen !!!
!-----------------------------------------------------------------
var sysp = dom.GetObject("Systemprotokoll");
string drop = "";
integer iLastGroupIndex = 1;
string sCollectedNames = "";
string sCollectedValues = "";
string sCollectedDateTimes = "";
string s;
integer iStart = 0;
integer iCount = dom.GetHistoryDataCount();
integer rCount;
foreach( s, dom.GetHistoryData( iStart, iCount, &rCount ) )
{
integer iGroupIndex = s.StrValueByIndex(";",0).ToInteger();
string sDatapointId = s.StrValueByIndex(";",1);
string sRecordedValue = s.StrValueByIndex(";",2);
string sDateTime = s.StrValueByIndex(";",3);
string sDatapointName = "";
object oHistDP = dom.GetObject( sDatapointId );
if( oHistDP )
{
object oDP = dom.GetObject( oHistDP.ArchiveDP() );
if( oDP )
{
sDatapointName = oDP.Name();
boolean bSysVar = (oDP.IsTypeOf(OT_VARDP) || oDP.IsTypeOf(OT_ALARMDP));
if( !bSysVar )
{
object oCH = dom.GetObject( oDP.Channel() );
if( oCH )
{
sDatapointName = oCH.Name();
}
}
if( iLastGroupIndex != iGroupIndex )
{
drop = drop # sCollectedDateTimes # " " # sCollectedNames # " " # sCollectedValues # "\n";
sCollectedNames = "";
sCollectedValues = "";
iLastGroupIndex = iGroupIndex;
}
string id = oDP.ID();
string sRet = "";
string sValue = sRecordedValue;
if( system.IsVar("id") )
{
object to = dom.GetObject( system.GetVar("id") );
if( to )
{
if( to.IsTypeOf( OT_VARDP ) || to.IsTypeOf( OT_ALARMDP ) )
{
integer itoVT = to.ValueType();
integer itoST = to.ValueSubType();
boolean btoLogic = ( (itoVT==ivtBinary) && (itoST==istBool) );
boolean btoList = ( (itoVT==ivtInteger) && (itoST==istEnum) );
boolean btoNumber = ( (itoVT==ivtFloat) && (itoST==istGeneric) );
boolean btoAlarm = ( (itoVT==ivtBinary) && (itoST==istAlarm) );
boolean btoString = ( (itoVT==ivtString) && (itoST==istChar8859));
if( btoLogic || btoAlarm )
{
if ( (sValue == "0") || (sValue == "") )
{
sRet=sRet#to.ValueName0();
}
else
{
sRet=sRet#to.ValueName1();
}
}
if( btoList )
{
if( sValue == "" )
{
sRet=sRet#web.webGetValueFromList(to.ValueList(),0);
}
else
{
sRet=sRet#web.webGetValueFromList(to.ValueList(),sValue.ToInteger());
}
}
if( btoNumber )
{
if (sValue == "")
{
sRet=sRet#"0";
}
else
{
sRet=sRet#sValue;
}
}
if (btoString)
{
sRet = sRet # sValue;
}
if( to.ValueUnit() != "" )
{
sRet=sRet#" "#to.ValueUnit();
}
}
else
{
string tsShortKey = to.HSSID();
string tsLongKey = to.HSSID();
object toCH = dom.GetObject( to.Channel() );
if( toCH )
{
tsLongKey = toCH.ChnLabel()#"|"#tsLongKey;
}
boolean tbOptionList = ( (to.ValueType() == ivtInteger) && (to.ValueSubType() == istEnum) );
boolean tbAction = ( to.ValueSubType() == istAction );
boolean tbBinary = ( to.ValueType() == ivtBinary );
boolean tbRead = (to.Operations() & OPERATION_READ);
boolean tbEvent = (to.Operations() & OPERATION_EVENT);
boolean tbWrite = (to.Operations() & OPERATION_WRITE);
boolean bBinary = ( to.ValueTypeStr() == "Binary" );
boolean bFloat = ( to.ValueTypeStr() == "Float" );
boolean bSpecial = false;
string sVUTmp = to.ValueUnit().ToString();
string sSpace = " ";
! ### SUBSTITUTE SPECIAL VALUES
real fVal1 = 0.0;
real fVal2 = 0.0;
string sSpecial = "";
string stmpSV;
foreach(stmpSV,oDP.EnumSpecialIDs())
{
fVal1 = oDP.GetSpecialValue(stmpSV);
fVal2 = sValue.ToFloat();
if( fVal1 == fVal2 )
{
bSpecial = true;
sSpecial = stmpSV;
sValue = "";
sVUTmp = "";
sSpace = "";
}
}
if( tbBinary && (tbRead || tbAction) )
{
if( sValue == "0" )
{
tsShortKey = tsShortKey#"=FALSE";
tsLongKey = tsLongKey#"=FALSE";
}
else
{
tsShortKey = tsShortKey#"=TRUE";
tsLongKey = tsLongKey#"=TRUE";
}
}
if( tbOptionList )
{
tsShortKey = tsShortKey#"="#web.webGetValueFromList( to.ValueList(), sValue );
tsLongKey = tsLongKey#"="#web.webGetValueFromList( to.ValueList(), sValue );
}
if( bSpecial )
{
tsShortKey = tsShortKey#"="#sSpecial;
tsLongKey = tsLongKey#"="#sSpecial;
}
string sVTmp = web.webKeyFromStringTable( tsLongKey );
if( !sVTmp.Length() )
{
sVTmp = web.webKeyFromStringTable( tsShortKey );
if( !sVTmp.Length() )
{
sVTmp = "unbekannte Meldung ("#tsShortKey#")";
}
}
if( !bSpecial )
{
if( sVUTmp == "100%" )
{
sValue = sValue.ToFloat() * 100;
sValue = sValue.ToString();
sVUTmp = "%";
}
if( sVUTmp == "degree" )
{
sVUTmp = "°";
}
if( bBinary )
{
sValue = "";
sSpace = "";
}
if( bFloat )
{
sValue = sValue.ToFloat();
sValue = sValue.ToString(2);
}
if( (!bBinary) && (!bFloat) )
{
sValue = sValue.ToInteger();
sValue = sValue.ToString(0);
}
if( tbOptionList )
{
sValue = "";
sVUTmp = "";
sSpace = "";
}
}
sVTmp = sVTmp#sSpace#sValue#sVUTmp;
sRet = sVTmp;
}
}
}
sRecordedValue = system.GetVar("sRet");
sCollectedNames = sDatapointName;
sCollectedDateTimes = sDateTime;
if( !sCollectedValues.Length() )
{
sCollectedValues = sRecordedValue;
}
else
{
sCollectedValues = sCollectedValues#", "#sRecordedValue;
}
}
}
}
if( sCollectedValues.Length() )
{
drop = drop # sCollectedDateTimes # " " # sCollectedNames # " " # sCollectedValues;
}
if (drop == "") {
drop = "Keine Einträge im Protokoll !!!";
}
! Protokolleinträge an Systemvariable übergeben
!----------------------------------------------
sysp.State(drop);
! E-Mail absenden mit CuxD
! Adresse des CUxD durch seine eigene ersetzen !!!
!-------------------------------------------------
dom.GetObject("CUxD.CUX2801999:1.CMD_EXEC").State("/etc/config/addons/email/email '" # mail_id # "'");
! Textausgabe Konsole
!--------------------
!WriteLine(drop);
!WriteLine("OK!");
! Systemprotokoll löschen
!------------------------
var clearHistory = dom.ClearHistoryData();
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
-
- Beiträge: 3083
- Registriert: 23.08.2015, 11:06
- System: CCU
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 111 Mal
Re: Systemprotokoll automatisch exportieren ?
Hallo und guten Morgen zusammen,
sorry, ich war gestern Abend sehr gefrustet weil es nicht funktionierte, das hatte aber nichts mit Euch zu tun!
Ich bin für Eure Hilfe sehr dankbar. Für die relativ kurze Zeit, in der ich mit der Homematic arbeite, habe ich für mein Gefühl viel erreicht und die bisherigen Probleme mit Hilfe des Forums immer lösen können. So wird es auch mit diesem Thema noch werden.
Stand heute:
Ich habe heute morgen alles zum "Ereignisprotokoll versenden" gelöscht und danach Schritt für Schritt neu angelegt.
Positiv: Die Systemvariable wird jetzt komplett mit den Ereignisdaten gefüllt
Negativ 1: Es wird aber keine eMail versendet
Negativ 2: Testweise habe ich mir in einem zusätzlichen Programmaufruf nach 2 Minuten verzögert eine Mail zusenden lassen mit dem Inhalt der Systemvariablen "Systemprotokoll" Während der CSV-Export 3000 Einträge enthält ist in der eMail nach 186 Zeilen Schluss, obwohl die Variable mehr Datenzeilen enthält (erkannt an den Zeitstempeln).
Da ich den Fehler im TCL-Scipt vermute, hier mal der aktuelle, komplette Code:
und hier noch das angepasste Script:
Es soll Mail Nr.09 versendet werden und die CUxD-Adresse wurde angepasst.
So, nun hoffe ich alle benötigten Infos zusammengetragen zu haben, und dass Ihr noch einen Tipp habt.
LG
66er
sorry, ich war gestern Abend sehr gefrustet weil es nicht funktionierte, das hatte aber nichts mit Euch zu tun!
Ich bin für Eure Hilfe sehr dankbar. Für die relativ kurze Zeit, in der ich mit der Homematic arbeite, habe ich für mein Gefühl viel erreicht und die bisherigen Probleme mit Hilfe des Forums immer lösen können. So wird es auch mit diesem Thema noch werden.
Stand heute:
Ich habe heute morgen alles zum "Ereignisprotokoll versenden" gelöscht und danach Schritt für Schritt neu angelegt.
Positiv: Die Systemvariable wird jetzt komplett mit den Ereignisdaten gefüllt
Negativ 1: Es wird aber keine eMail versendet
Negativ 2: Testweise habe ich mir in einem zusätzlichen Programmaufruf nach 2 Minuten verzögert eine Mail zusenden lassen mit dem Inhalt der Systemvariablen "Systemprotokoll" Während der CSV-Export 3000 Einträge enthält ist in der eMail nach 186 Zeilen Schluss, obwohl die Variable mehr Datenzeilen enthält (erkannt an den Zeitstempeln).
Da ich den Fehler im TCL-Scipt vermute, hier mal der aktuelle, komplette Code:
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
if (dom.GetObject("BidCos-RF.LEQ1289365:1.STATE").Value() == 'false'){
var u1 = "offen";
}else {
var u1 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289244:1.STATE").Value() == 'false'){
var u2 = "offen";
}else {
var u2 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289437:1.STATE").Value() == 'false'){
var u3 = "offen";
}else {
var u3 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1288856:1.STATE").Value() == 'false'){
var u4 = "offen";
}else {
var u4 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289225:1.STATE").Value() == 'false'){
var o1 = "offen";
}else {
var o1 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289252:1.STATE").Value() == 'false'){
var o2 = "offen";
}else {
var o2 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289503:1.STATE").Value() == 'false'){
var o3 = "offen";
}else {
var o3 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1248821:1.STATE").Value() == '0'){
var o4 = "geschlossen";
}else {
var o4 = "offen";
}
if (dom.GetObject("BidCos-RF.LEQ1289426:1.STATE").Value() == 'false'){
var o5 = "offen";
}else {
var o5 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1288880:1.STATE").Value() == 'false'){
var o6 = "offen";
}else {
var o6 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289575:1.STATE").Value() == 'false'){
var o7 = "offen";
}else {
var o7 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.MEQ0214947:1.STATE").Value() == 'false'){
var s1 = "unscharf";
}else {
var s1 = "scharf";
}
if (dom.GetObject("BidCos-RF.MEQ0214947:2.STATE").Value() == 'false'){
var s2 = "EMA: Ruhe";
}else {
var s2 = "EMA: Alarm";
}
if (dom.GetObject("BidCos-RF.MEQ0214947:3.STATE").Value() == 'false'){
var s3 = "Brand: Ruhe";
}else {
var s3 = "Brand: Alarm";
}
} ]
load tclrega.so
array set tclrega [rega_script {
var sysp = dom.GetObject("Systemprotokoll").Value();
! var clearsysp = dom.GetObject("Systemprotokoll").State("");
} ]
set u1 $values(u1)
set u2 $values(u2)
set u3 $values(u3)
set u4 $values(u4)
set o1 $values(o1)
set o2 $values(o2)
set o3 $values(o3)
set o4 $values(o4)
set o5 $values(o5)
set o6 $values(o6)
set o7 $values(o7)
set s1 $values(s1)
set s2 $values(s2)
set s3 $values(s3)
set sysprot [encoding convertfrom utf-8 $tclrega(sysp)]
Code: Alles auswählen
! Systemprotokoll auslesen und als E-Mail versenden
!--------------------------------------------------
! Unbedingt eine Systemvariable mit Namen "Systemprotokoll"
! vom Typ Zeichenkette anlegen !!!
! Im TCL Bereich des E-Mail Addons
! folgende Zeilen ohne ! eintragen.
! load tclrega.so
! array set tclrega [rega_script {
! var sysp = dom.GetObject("Systemprotokoll").Value();
! var clearsysp = dom.GetObject("Systemprotokoll").State("");
! } ]
! set sysprot [encoding convertfrom utf-8 $tclrega(sysp)]
!-----------------------------------------------------------------
! Ausgabe in der Mail mit $sysprot
! Zb:Systemprotokoll:$sysprot
!-----------------------------------------------------------------
! id der E-Mail hier eintragen !!!
string mail_id = "09";
! Im unteren Teil die Adresse des CUxD durch seine eigene ersetzen !!!
!-----------------------------------------------------------------
var sysp = dom.GetObject("Systemprotokoll");
string drop = "";
integer iLastGroupIndex = 1;
string sCollectedNames = "";
string sCollectedValues = "";
string sCollectedDateTimes = "";
string s;
integer iStart = 0;
integer iCount = dom.GetHistoryDataCount();
integer rCount;
foreach( s, dom.GetHistoryData( iStart, iCount, &rCount ) )
{
integer iGroupIndex = s.StrValueByIndex(";",0).ToInteger();
string sDatapointId = s.StrValueByIndex(";",1);
string sRecordedValue = s.StrValueByIndex(";",2);
string sDateTime = s.StrValueByIndex(";",3);
string sDatapointName = "";
object oHistDP = dom.GetObject( sDatapointId );
if( oHistDP )
{
object oDP = dom.GetObject( oHistDP.ArchiveDP() );
if( oDP )
{
sDatapointName = oDP.Name();
boolean bSysVar = (oDP.IsTypeOf(OT_VARDP) || oDP.IsTypeOf(OT_ALARMDP));
if( !bSysVar )
{
object oCH = dom.GetObject( oDP.Channel() );
if( oCH )
{
sDatapointName = oCH.Name();
}
}
if( iLastGroupIndex != iGroupIndex )
{
drop = drop # sCollectedDateTimes # " " # sCollectedNames # " " # sCollectedValues # "\n";
sCollectedNames = "";
sCollectedValues = "";
iLastGroupIndex = iGroupIndex;
}
string id = oDP.ID();
string sRet = "";
string sValue = sRecordedValue;
if( system.IsVar("id") )
{
object to = dom.GetObject( system.GetVar("id") );
if( to )
{
if( to.IsTypeOf( OT_VARDP ) || to.IsTypeOf( OT_ALARMDP ) )
{
integer itoVT = to.ValueType();
integer itoST = to.ValueSubType();
boolean btoLogic = ( (itoVT==ivtBinary) && (itoST==istBool) );
boolean btoList = ( (itoVT==ivtInteger) && (itoST==istEnum) );
boolean btoNumber = ( (itoVT==ivtFloat) && (itoST==istGeneric) );
boolean btoAlarm = ( (itoVT==ivtBinary) && (itoST==istAlarm) );
boolean btoString = ( (itoVT==ivtString) && (itoST==istChar8859));
if( btoLogic || btoAlarm )
{
if ( (sValue == "0") || (sValue == "") )
{
sRet=sRet#to.ValueName0();
}
else
{
sRet=sRet#to.ValueName1();
}
}
if( btoList )
{
if( sValue == "" )
{
sRet=sRet#web.webGetValueFromList(to.ValueList(),0);
}
else
{
sRet=sRet#web.webGetValueFromList(to.ValueList(),sValue.ToInteger());
}
}
if( btoNumber )
{
if (sValue == "")
{
sRet=sRet#"0";
}
else
{
sRet=sRet#sValue;
}
}
if (btoString)
{
sRet = sRet # sValue;
}
if( to.ValueUnit() != "" )
{
sRet=sRet#" "#to.ValueUnit();
}
}
else
{
string tsShortKey = to.HSSID();
string tsLongKey = to.HSSID();
object toCH = dom.GetObject( to.Channel() );
if( toCH )
{
tsLongKey = toCH.ChnLabel()#"|"#tsLongKey;
}
boolean tbOptionList = ( (to.ValueType() == ivtInteger) && (to.ValueSubType() == istEnum) );
boolean tbAction = ( to.ValueSubType() == istAction );
boolean tbBinary = ( to.ValueType() == ivtBinary );
boolean tbRead = (to.Operations() & OPERATION_READ);
boolean tbEvent = (to.Operations() & OPERATION_EVENT);
boolean tbWrite = (to.Operations() & OPERATION_WRITE);
boolean bBinary = ( to.ValueTypeStr() == "Binary" );
boolean bFloat = ( to.ValueTypeStr() == "Float" );
boolean bSpecial = false;
string sVUTmp = to.ValueUnit().ToString();
string sSpace = " ";
! ### SUBSTITUTE SPECIAL VALUES
real fVal1 = 0.0;
real fVal2 = 0.0;
string sSpecial = "";
string stmpSV;
foreach(stmpSV,oDP.EnumSpecialIDs())
{
fVal1 = oDP.GetSpecialValue(stmpSV);
fVal2 = sValue.ToFloat();
if( fVal1 == fVal2 )
{
bSpecial = true;
sSpecial = stmpSV;
sValue = "";
sVUTmp = "";
sSpace = "";
}
}
if( tbBinary && (tbRead || tbAction) )
{
if( sValue == "0" )
{
tsShortKey = tsShortKey#"=FALSE";
tsLongKey = tsLongKey#"=FALSE";
}
else
{
tsShortKey = tsShortKey#"=TRUE";
tsLongKey = tsLongKey#"=TRUE";
}
}
if( tbOptionList )
{
tsShortKey = tsShortKey#"="#web.webGetValueFromList( to.ValueList(), sValue );
tsLongKey = tsLongKey#"="#web.webGetValueFromList( to.ValueList(), sValue );
}
if( bSpecial )
{
tsShortKey = tsShortKey#"="#sSpecial;
tsLongKey = tsLongKey#"="#sSpecial;
}
string sVTmp = web.webKeyFromStringTable( tsLongKey );
if( !sVTmp.Length() )
{
sVTmp = web.webKeyFromStringTable( tsShortKey );
if( !sVTmp.Length() )
{
sVTmp = "unbekannte Meldung ("#tsShortKey#")";
}
}
if( !bSpecial )
{
if( sVUTmp == "100%" )
{
sValue = sValue.ToFloat() * 100;
sValue = sValue.ToString();
sVUTmp = "%";
}
if( sVUTmp == "degree" )
{
sVUTmp = "°";
}
if( bBinary )
{
sValue = "";
sSpace = "";
}
if( bFloat )
{
sValue = sValue.ToFloat();
sValue = sValue.ToString(2);
}
if( (!bBinary) && (!bFloat) )
{
sValue = sValue.ToInteger();
sValue = sValue.ToString(0);
}
if( tbOptionList )
{
sValue = "";
sVUTmp = "";
sSpace = "";
}
}
sVTmp = sVTmp#sSpace#sValue#sVUTmp;
sRet = sVTmp;
}
}
}
sRecordedValue = system.GetVar("sRet");
sCollectedNames = sDatapointName;
sCollectedDateTimes = sDateTime;
if( !sCollectedValues.Length() )
{
sCollectedValues = sRecordedValue;
}
else
{
sCollectedValues = sCollectedValues#", "#sRecordedValue;
}
}
}
}
if( sCollectedValues.Length() )
{
drop = drop # sCollectedDateTimes # " " # sCollectedNames # " " # sCollectedValues;
}
if (drop == "") {
drop = "Keine Einträge im Protokoll !!!";
}
! Protokolleinträge an Systemvariable übergeben
!----------------------------------------------
sysp.State(drop);
! E-Mail absenden mit CuxD
! Adresse des CUxD durch seine eigene ersetzen !!!
!-------------------------------------------------
dom.GetObject("CUxD.CUX2801777:1.CMD_EXEC").State("/etc/config/addons/email/email '" # mail_id # "'");
! Textausgabe Konsole
!--------------------
!WriteLine(drop);
WriteLine("OK!");
! Systemprotokoll löschen
!------------------------
var clearHistory = dom.ClearHistoryData();
So, nun hoffe ich alle benötigten Infos zusammengetragen zu haben, und dass Ihr noch einen Tipp habt.
LG
66er
Ich übernehme keine Haftung für von mir gegebene Antworten, Tipps und veröffentlichte Projekte! Jeder ist für sich selbst verantwortlich! Arbeiten an 230V sind von einer Elektrofachkraft auszuführen!
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
-
- Beiträge: 14246
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 597 Mal
- Danksagung erhalten: 1521 Mal
Re: Systemprotokoll automatisch exportieren ?
Ich weiß nicht, ob TCL mit dem führenden Ausrufezeichen in "! var clearsysp = dom.GetObject("Systemprotokoll").State("");" klarkommt. Dieser Befehl gilt im Übrigen nur dazu, die Systemvariable "Systemprotokoll" nach der Abbarbeitung des TCL-Scripts zu leeren. Das Systemprotokoll selbst wird im CCU-Script mit " var clearHistory = dom.ClearHistoryData();" gelöscht. Diese Zeile habe ich empfohlen auszukommentieren, nicht im TCL-Script (siehe mein Posting gestern 18:30 Uhr). Dazu kenne ich mich mit TCL zu wenig aus, um die korrekte Syntax bewerten zu können, aber im Allgemeinen wird in TCL mit # kommentiert. Ich vermute daher, dass das falsch Ausrufezeichen Dir die Ausführung blockiert. Such mal in dieser Richtung.
Gruß Xel66
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
-
- Beiträge: 3083
- Registriert: 23.08.2015, 11:06
- System: CCU
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 111 Mal
Re: Systemprotokoll automatisch exportieren ?
Hallo Xel66,
ich habe das Ausrufezeichen im TCL-Script entfernt.
Beim ersten Test wurde die Variable "Systemprotokoll" wie von Dir geschrieben geleert. Eine eMail wurde nicht versandt.
Beim zweiten Test wurde auch die Variable nicht mehr geleert.
Edit: Ich vermute den Fehler auch im TCL, da die Variable ja komplett gefüllt wird, aber (manuell) nur teilweise übertragen wird.
LG
66er
OT: Für mich sehr mystisch
ich habe das Ausrufezeichen im TCL-Script entfernt.
Beim ersten Test wurde die Variable "Systemprotokoll" wie von Dir geschrieben geleert. Eine eMail wurde nicht versandt.
Beim zweiten Test wurde auch die Variable nicht mehr geleert.
Edit: Ich vermute den Fehler auch im TCL, da die Variable ja komplett gefüllt wird, aber (manuell) nur teilweise übertragen wird.
LG
66er
OT: Für mich sehr mystisch
Ich übernehme keine Haftung für von mir gegebene Antworten, Tipps und veröffentlichte Projekte! Jeder ist für sich selbst verantwortlich! Arbeiten an 230V sind von einer Elektrofachkraft auszuführen!
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
-
- Beiträge: 10758
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 674 Mal
Re: Systemprotokoll automatisch exportieren ?
Dein TCL Reiter sollte ungefähr so aussehen:
o4 sowie s1-s3 mag ich nicht beurteilen, da ich nicht weiß,was du da machst.
Ich gehe davon aus, das es so wie du es bisher benutzt hattest auch funktionierte.
Die Löschzeile hab ich gleich ganz entfernt. Kann man anderweitig lösen.
Das ist nun aber nur der TCL Teil des Addons.
Kannst ja mal ausprobieren, ob es damit schon funktioniert.
Das Script füllt ja die Variable komplett, wenn ich es richtig gelesen hatte?!?
Alchy
Code: Alles auswählen
load tclrega.so
array set values [rega_script {
var sysp = dom.GetObject("Systemprotokoll").Value();
if (dom.GetObject("BidCos-RF.LEQ1289365:1.STATE").Value()) {
var u1 = "offen";
}else {
var u1 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289244:1.STATE").Value()) {
var u2 = "offen";
}else {
var u2 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289437:1.STATE").Value()) {
var u3 = "offen";
}else {
var u3 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1288856:1.STATE").Value()) {
var u4 = "offen";
}else {
var u4 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289225:1.STATE").Value()) {
var o1 = "offen";
}else {
var o1 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289252:1.STATE").Value()) {
var o2 = "offen";
}else {
var o2 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289503:1.STATE").Value()) {
var o3 = "offen";
}else {
var o3 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1248821:1.STATE").Value() == '0'){
var o4 = "geschlossen";
}else {
var o4 = "offen";
}
if (dom.GetObject("BidCos-RF.LEQ1289426:1.STATE").Value()) {
var o5 = "offen";
}else {
var o5 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1288880:1.STATE").Value()) {
var o6 = "offen";
}else {
var o6 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.LEQ1289575:1.STATE").Value()) {
var o7 = "offen";
}else {
var o7 = "geschlossen";
}
if (dom.GetObject("BidCos-RF.MEQ0214947:1.STATE").Value() == 'false'){
var s1 = "unscharf";
}else {
var s1 = "scharf";
}
if (dom.GetObject("BidCos-RF.MEQ0214947:2.STATE").Value() == 'false'){
var s2 = "EMA: Ruhe";
}else {
var s2 = "EMA: Alarm";
}
if (dom.GetObject("BidCos-RF.MEQ0214947:3.STATE").Value() == 'false'){
var s3 = "Brand: Ruhe";
}else {
var s3 = "Brand: Alarm";
}
} ]
set u1 $values(u1)
set u2 $values(u2)
set u3 $values(u3)
set u4 $values(u4)
set o1 $values(o1)
set o2 $values(o2)
set o3 $values(o3)
set o4 $values(o4)
set o5 $values(o5)
set o6 $values(o6)
set o7 $values(o7)
set s1 $values(s1)
set s2 $values(s2)
set s3 $values(s3)
set sysprot [encoding convertfrom utf-8 $tclrega(sysp)]
Ich gehe davon aus, das es so wie du es bisher benutzt hattest auch funktionierte.
Die Löschzeile hab ich gleich ganz entfernt. Kann man anderweitig lösen.
Das ist nun aber nur der TCL Teil des Addons.
Kannst ja mal ausprobieren, ob es damit schon funktioniert.
Das Script füllt ja die Variable komplett, wenn ich es richtig gelesen hatte?!?
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
-
- Beiträge: 3083
- Registriert: 23.08.2015, 11:06
- System: CCU
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 111 Mal
Re: Systemprotokoll automatisch exportieren ?
Hallo Alchy,
vielen Dank für's korrigieren des TCL-Scriptes.
Ich habe es soeben einkopiert und getestet:
Die Variable wird ordnungsgemäß gefüllt, aber noch immer wird keine Mail versandt.
Also doch noch ein Fehler im Script?
Oder mache ich einen Denkfehler im auslösenden Programm? Die Taste ist eine virtuelle nur zum testen. Die Verzögerung habe ich auch zum testen gesetzt. Auch bei sofort kommt keine eMail.
Danke nochmals.
66er
vielen Dank für's korrigieren des TCL-Scriptes.
Ich habe es soeben einkopiert und getestet:
ja, die tun brav ihren Diensto4 sowie s1-s3 mag ich nicht beurteilen, da ich nicht weiß,was du da machst.
Ich gehe davon aus, das es so wie du es bisher benutzt hattest auch funktionierte.
Leider nicht.Kannst ja mal ausprobieren, ob es damit schon funktioniert.
Die Variable wird ordnungsgemäß gefüllt, aber noch immer wird keine Mail versandt.
Ja, nach Start dauert es einige Zeit, und dann steht alles in der Variable.Das Script füllt ja die Variable komplett, wenn ich es richtig gelesen hatte?!?
Also doch noch ein Fehler im Script?
Oder mache ich einen Denkfehler im auslösenden Programm? Die Taste ist eine virtuelle nur zum testen. Die Verzögerung habe ich auch zum testen gesetzt. Auch bei sofort kommt keine eMail.
Danke nochmals.
66er
Ich übernehme keine Haftung für von mir gegebene Antworten, Tipps und veröffentlichte Projekte! Jeder ist für sich selbst verantwortlich! Arbeiten an 230V sind von einer Elektrofachkraft auszuführen!
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
-
- Beiträge: 10758
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 674 Mal
Re: Systemprotokoll automatisch exportieren ?
Mal ganz ruhig Brauner.
Wenn !!! die Variable gefüllt ist, führe mal folgendes Script aus UND nur dieses Script.
Wenn da keine Mail kommt, geh in das Mailaddon und hake TCL bei Mailvorlage 09 ab und führe das Scriptchen nochmals aus.
Alchy
Wenn !!! die Variable gefüllt ist, führe mal folgendes Script aus UND nur dieses Script.
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801777:1.CMD_EXEC").State("/etc/config/addons/email/email 09");
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
-
- Beiträge: 3083
- Registriert: 23.08.2015, 11:06
- System: CCU
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 111 Mal
Re: Systemprotokoll automatisch exportieren ?
Hallo Alchy,
habe ich gemacht.
Und leider kommt in beiden Fällen keine Mail!
Ich schlußfolgere mal ganz vorsichtig, dass ich das CuX-Gerät falsch angelegt habe, oder?
LG
66er
edit:
Nachtrag:
Ich habe gerade festgestellt, dass die CuX-Adresse bei der ganzen Kopiererei falsch war und habe das korrigiert!
Jetzt kommen die Mails:
mit TCL : -> ohne Text
ohne TCL: -> mit dem Text " Systemprotokoll: $sysprot"
LG
66er
habe ich gemacht.
Und leider kommt in beiden Fällen keine Mail!
Ich schlußfolgere mal ganz vorsichtig, dass ich das CuX-Gerät falsch angelegt habe, oder?
LG
66er
edit:
Nachtrag:
Ich habe gerade festgestellt, dass die CuX-Adresse bei der ganzen Kopiererei falsch war und habe das korrigiert!
Jetzt kommen die Mails:
mit TCL : -> ohne Text
ohne TCL: -> mit dem Text " Systemprotokoll: $sysprot"
LG
66er
Ich übernehme keine Haftung für von mir gegebene Antworten, Tipps und veröffentlichte Projekte! Jeder ist für sich selbst verantwortlich! Arbeiten an 230V sind von einer Elektrofachkraft auszuführen!
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen
Homematic in Betrieb seit 15.08.2015, > 60 HM-Komp. | 3x USV APC ES400 | Visualisierung auf ioBroker | Audio: Home24-Apps
Raspberrymatic auf DS923+ in VMM (Produktivsystem1)
Rollläden, SSD, Wetter, Logging, Licht, RM, Sonos, Shelly
Raspberrymatic auf DS923+ in VMM (Produktivsystem2 )
Erweiterung GMA, Heizung, Licht, Shelly, SSD, Sonos
>100 Shelly-Geräte an Homematic | CCU2 endgültig in Rente | 3 Raspis als Rückfallebene für Raspimatic und ioBroker
Shelly an Homematic | Infrarot-Heizungssteuerung | Fensteröffnungszeit überwachen