Systemprotokoll als E-Mail versenden
Moderator: Co-Administratoren
-
- Beiträge: 12925
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1599 Mal
- Danksagung erhalten: 222 Mal
Re: Systemprotokoll als E-Mail versenden
einfach mal etwas zurückblättern ...
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
-
- Beiträge: 119
- Registriert: 18.08.2012, 17:10
- System: CCU
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 5 Mal
Re: Systemprotokoll als E-Mail versenden
Schon gesehen; Da scheint aber noch irgendwas mit der max. Zeichenanzahl noch nicht ganz zu passen, oder hab ich da was missverstanden?
Gruss, C.
Gruss, C.
-
- Beiträge: 12925
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1599 Mal
- Danksagung erhalten: 222 Mal
Re: Systemprotokoll als E-Mail versenden
einfach testen, ich brauche so was nicht:-)
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
Re: Systemprotokoll als E-Mail versenden
Oh Oh - habe eben genau das "Gleiche" gemacht - dann weiß ich ja warum morgen früh die gelbe Lampe an ist - melde mich - Greets SunTichrimu hat geschrieben:Servus,
Das hat etwa einen Monat lang perfekt funktioniert (täglicher Versand). Dann habe ich einen Schaltaktor abgelernt (war Reserve, und generierte daher im abgesteckten Zustand Systemmeldungen), und daraufhin kamen prompt zur Versendezeit die minütlichen XmlClientError Fehler und haben die CCU lahmgelegt.
-
- Beiträge: 119
- Registriert: 18.08.2012, 17:10
- System: CCU
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 5 Mal
Re: Systemprotokoll als E-Mail versenden
Servus,
So, nächter Schritt: Hab den Email-Versand auf CUxD umgestellt, und siehe da, auch bei meinen mini-Reports kommt der "corrupt binrpc data" Fehler. Hat das von Euch Mitstreitern jemand in den Griff bekommen?
Schönen Sonntag,
Gruss, C.
So, nächter Schritt: Hab den Email-Versand auf CUxD umgestellt, und siehe da, auch bei meinen mini-Reports kommt der "corrupt binrpc data" Fehler. Hat das von Euch Mitstreitern jemand in den Griff bekommen?
Schönen Sonntag,
Gruss, C.
-
- Beiträge: 237
- Registriert: 11.12.2011, 12:19
- Danksagung erhalten: 1 Mal
Re: Systemprotokoll als E-Mail versenden
Hallo chrimu,
das Auslesen des Systemprotokolls ist sehr ressourcenhungrig und bringt die ReGaHss leicht aus dem tritt.
Nichtsdestotrotz hier ein 2. Versuch.
Diesmal erfolgt der Aufruf des E-Mail Addons mit CUxD !
2. das Systemprotokoll wird über eine Trägervariable an das E-Mail Addon übergeben.
3. der Call Aufruf > Call("/esp/functions.fn::WriteDPText()"); < vom ersten Script
wurde durch die entprechenden Codezeilen ersetzt, dadurch ist das neue Script jetzt größer.
Vorbereitung:
CUxD muss installiert sein, und ein Gerät vom Typ (28) System_EXEC muss angelegt sein.
http://www.homematic-inside.de/software ... cuxd-addon
Wichtig:
Eine Systemvariable vom Typ Zeichenkette mit Namen Systemprotokoll anlegen.
1. Wie im 1. Beitrag
2. Wie im 1. Beitrag
3. Im Bereich TCL diesen Text einfügen:
4. Wie im 1. Beitrag
...
..
Im oberen Teil des Scriptes gibt man die gewünschte id der Mail ein ( 01 - 10 )
string mail_id = "08";
Im unteren Teil des Scriptes ersetzt man die Adresse des CUxD durch seine eigene:dom.GetObject("CUxD.CUX2801777:1.CMD_EXEC").State("/etc/config/addons/email/email '" # mail_id # "'");
Good luck !
das Auslesen des Systemprotokolls ist sehr ressourcenhungrig und bringt die ReGaHss leicht aus dem tritt.
Nichtsdestotrotz hier ein 2. Versuch.
Diesmal erfolgt der Aufruf des E-Mail Addons mit CUxD !
2. das Systemprotokoll wird über eine Trägervariable an das E-Mail Addon übergeben.
3. der Call Aufruf > Call("/esp/functions.fn::WriteDPText()"); < vom ersten Script
wurde durch die entprechenden Codezeilen ersetzt, dadurch ist das neue Script jetzt größer.
Vorbereitung:
CUxD muss installiert sein, und ein Gerät vom Typ (28) System_EXEC muss angelegt sein.
http://www.homematic-inside.de/software ... cuxd-addon
Wichtig:
Eine Systemvariable vom Typ Zeichenkette mit Namen Systemprotokoll anlegen.
1. Wie im 1. Beitrag
2. Wie im 1. Beitrag
3. Im Bereich TCL diesen Text einfügen:
Code: Alles auswählen
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)]
...
..
Im oberen Teil des Scriptes gibt man die gewünschte id der Mail ein ( 01 - 10 )
string mail_id = "08";
Im unteren Teil des Scriptes ersetzt man die Adresse des CUxD durch seine eigene:
Code: Alles auswählen
! E-Mail absenden mit CuxD
! Adresse des CUxD durch seine eigene ersetzen !!!
!-------------------------------------------------
Good luck !
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.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();
-
- Beiträge: 119
- Registriert: 18.08.2012, 17:10
- System: CCU
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 5 Mal
Re: Systemprotokoll als E-Mail versenden
Ich habs dann -zwei Tage her- doch schon über VPN installiert: Läuft "like a charm"; Danke vielmals! In Zusammenarbeit mit dem Skript "Systemmeldungen zu Protokoll" ergibt das eine tägliche Zustandsmeldung mit allen wichtigen Infos. Keinerlei Fehlermeldungen; Kann man nur empfehlen!!!
Gruss, C.
Gruss, C.
Re: Systemprotokoll als E-Mail versenden
Wo finde ich dieseIm unteren Teil des Scriptes ersetzt man die Adresse des CUxD durch seine eigene:
Code: Alles auswählen
! 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 # "'");
Good luck !
Habe alles CUXD Logs durchgeschaut.
grüße saxbav
Homematic System Stand[03.12.2019]
RaspberryMatic PI 3 , ioBroker PI 3 , ca 40 HM Geräte
2x Wemos d1 mini , 2 x Raspberry Octoprint , Shelly ...
-------------------------------
1x HM-CCU-1 schwarz ... in Rente
RaspberryMatic PI 3 , ioBroker PI 3 , ca 40 HM Geräte
2x Wemos d1 mini , 2 x Raspberry Octoprint , Shelly ...
-------------------------------
1x HM-CCU-1 schwarz ... in Rente
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Systemprotokoll als E-Mail versenden
Hast Du das Gerät auch in CUxD angelegt ? CUxD Gerätetyp: (28) System Funktion: exec
dann erhältst Du die Nummer unter Geräte. http://IP DER CCU/addons/cuxd/index.ccc?m=4
z.B. CUxD.CUX2801001:1.CMD_EXEC
Natürlich findest Du die auch in der WebUI Startseite > Einstellungen > Geräteliste..
Alchy
dann erhältst Du die Nummer unter Geräte. http://IP DER CCU/addons/cuxd/index.ccc?m=4
z.B. CUxD.CUX2801001:1.CMD_EXEC
Natürlich findest Du die auch in der WebUI Startseite > Einstellungen > Geräteliste..
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.