Systemprotokoll als E-Mail versenden

diverse Zusatzsoftware

Moderator: Co-Administratoren

MaxWrestler
Beiträge: 237
Registriert: 11.12.2011, 12:19
Danksagung erhalten: 1 Mal

Systemprotokoll als E-Mail versenden

Beitrag von MaxWrestler » 04.10.2012, 21:08

Hallo zusammen,
wer bereits erfolgreich das E-Mail Addon installiert hat, kann sich nun auch das Systemprotokoll der HomeMatic zusenden lassen.

Vorbereitung:
1. E-Mail Addon ist installiert und funktionstüchtig > http://www.homematic-inside.de/software ... gory_id=17
2. In der E-Mail Konfiguration zB. Mail Nummer 08 auswählen.

Erforderliche Angaben ausfüllen, und in das leere Feld folgenden Text einfügen:

Code: Alles auswählen

Systemprotokoll:
$sysprot
Haken bei TCL aktivieren !
Mail.jpg
E-Mail Konfiguration
3. Im Bereich TCL zusätzlich diesen Text einfügen:

Code: Alles auswählen

set sysprot [encoding convertfrom utf-8 [lindex $argv 1]]
Mit diesem Befehl werden nun auch Umlaute und Sonderzeichen richtig in der E-Mail dargestellt !
TCL.jpg
TCL Konfiguration
4. Nun erstellt man ein neues Programm zB. Systemprotokoll senden
Bedingung: Wenn...
Zeitmodul, oder ein anderes Ereigniss.
Aktivität: Dann...
Script auswählen > Script erstellen > das unten angegebene Script ins leere Feld einfügen.

Im oberen Teil des Scriptes gibt man die gewünschte id der Mail ein ( 01 - 10 )
string mail_id = "08";

Viel Spass mit dieser neuen Funktion !

gruß MaxWrestler

PS:Ich bin kein Prediger, aber das Script enthält den Befehl system.Exec geht also sparsam mit der Benutzung um.
Systemprotokoll als E-Mail versenden.txt
Als Datei fürs Archiv
(3.76 KiB) 570-mal heruntergeladen

Code: Alles auswählen

! Systemprotokoll auslesen und als E-Mail versenden
!-----------------------------------------------------------------
! Info: History Daten löschen mit
! var clearHistory = dom.ClearHistoryData();
!-----------------------------------------------------------------
! Im TCL Bereich des E-Mail Addons folgende Zeile eintragen
! set sysprot [encoding convertfrom utf-8 [lindex $argv 1]]
! Ausgabe mit $sysprot
!-----------------------------------------------------------------
! id der E-Mail hier eintragen !!!

string mail_id = "08"; 

!-----------------------------------------------------------------


            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;
                  Call("/esp/functions.fn::WriteDPText()");
                  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 !!!";
}

! E-Mail absenden
!----------------------
        string stdout;
        string stderr;
        system.Exec("/etc/config/addons/email/email '" # mail_id # "' '" # drop # "'",&stdout,&stderr);
! Textausgabe Konsole
!----------------------------
        !WriteLine(drop);
         WriteLine("OK!");
! Systemprotokoll löschen
!--------------------------------
        var clearHistory = dom.ClearHistoryData();

gerassimo
Beiträge: 5
Registriert: 11.09.2010, 11:37
System: CCU

Re: Systemprotokoll als E-Mail versenden

Beitrag von gerassimo » 19.10.2012, 12:23

SUPER Script - funktioniert "im Hieb"

Danke, gerassimo
-------------------------------------------------------------------------------------------------------------------------------------------------
1x HM-CCU-1, 1x HM-RC-P1, 2x HM-RC-Sec3-B, 5x HM-Sec-MDIR, 1x HM-Sen-MDIR-SM, 1x HM-Sec-SD, 10x FS20 ES1, 1x HM-LC-Sw1-Ba-PCB, 1x HM-LC-Sw1-Pl, 1x HM-SCI-3-FM, 3x HM-LC-Sw4-PCB, 1x HM-WDS10-TH-O
Raspis 3/4 mit CCU2 (YAHM), FHEM, PiHole, LMS; FB7490
135 Kanäle in 46 Geräten:12x HM-Sen-EP (FS20 Shock), 2x HM-RC-19, 1x HM-RC-P1, 3x HM-RC-Sec3-B, 1x HM-RC-Key4-3, 1x HM-RC-12, 1x HM-MOD-Re-8, 1x HM-Sec-SD, 1x HM-WDS10-TH-O, 5x HM-Sec-MDIR, 2x HM-Sen-MDIR-O, 1x HM-SCI-3-FM, 1x HM-PBI-4-FM, 4x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-Ba-PCB, 2x HM-LC-Sw2-FM, 3x HM-LC-Sw4-PCB, 2x HM-LC-Sw4-Ba-PCB, 1x HB-UNI-Sen-VOLT, diverse Wemos/NodeMCU/Sonoff

Carlo
Beiträge: 32
Registriert: 19.02.2012, 23:36

Re: Systemprotokoll als E-Mail versenden

Beitrag von Carlo » 20.10.2012, 00:55

Hallo,

das Script hat bei mir bis zum heutigen Update (1.508) tadellos funktioniert... nun hängt sich bei mir die CUU auf, sobald der Script ausgeführt wird... dann hilft nur noch ein Reboot :(

Grüße
Carlo

MaxWrestler
Beiträge: 237
Registriert: 11.12.2011, 12:19
Danksagung erhalten: 1 Mal

Re: Systemprotokoll als E-Mail versenden

Beitrag von MaxWrestler » 20.10.2012, 13:33

Hallo Carlo,
ich habe mir nun auch das Update (1.504 > 1.508) installiert, läuft bis jetzt sehr gut !

Das Script in Verbindung mit system.Exec verursacht Probleme !
Ich rate momentan jedem ab das Script so auszuführen.

Eigentlich wollte ich das system.Exec nie ! wieder verwenden, aber auch mit CUxD gab es Probleme beim übermitteln der Inhalte.(getstring(4863) > 1000 corrupt binrpc data?)

Nun habe ich eine Lösung gefunden die bereits seit einigen Stunden alle 10 Minuten eine Mail verschickt mit mehr als 500 Zeilen im Systemprotokoll.Tendenz steigend.

Um langfristig das system.Exec Problem zu umgehen werde ich das Script an CuxD anpassen.(auch wenn system.Exec in diesem Fall auch möglich währe)

Also, CuxD installieren und schon mal mit dem Handbuch vertraut machen ! :D

grissli1
Beiträge: 2268
Registriert: 22.06.2012, 17:46
System: Alternative CCU (auf Basis OCCU)
Wohnort: Tirol/Austria
Hat sich bedankt: 13 Mal
Danksagung erhalten: 2 Mal

Re: Systemprotokoll als E-Mail versenden

Beitrag von grissli1 » 20.10.2012, 18:36

MaxWrestler hat geschrieben:....Nun habe ich eine Lösung gefunden die bereits seit einigen Stunden alle 10 Minuten eine Mail verschickt mit mehr als 500 Zeilen im Systemprotokoll.Tendenz steigend.

Um langfristig das system.Exec Problem zu umgehen werde ich das Script an CuxD anpassen.(auch wenn system.Exec in diesem Fall auch möglich währe)

Also, CuxD installieren und schon mal mit dem Handbuch vertraut machen ! :D
Kannst du deine Lösung dann bitte unter "Tipps und Tricks" posten?! Sind sicher viele daran interessiert!

Danke und viele Grüße
Chris
System: RaspberryMatic 3.41.11.20190126 auf RPi3, ReverseProxy auf RPi3

omieh
Beiträge: 8
Registriert: 27.10.2012, 20:36

Re: Systemprotokoll als E-Mail versenden

Beitrag von omieh » 27.10.2012, 22:14

! E-Mail absenden mit system.Exec
!----------------------
!
string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email '" # mail_id # "' '" # drop # "'",&stdout,&stderr);


! E-Mail absenden ohne system.Exec
!--------------------------------------------
!zuerst muss im CUxD ein System-Exec Gerät (z.B. mit der Seriennummer 1) angelegt werden, dann...

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email '" # mail_id # "' '" # drop # "'");

!Siehe CUxD Handbuch
!Kabitel 5.9.1 System.Exec
!Seite 83
Zuletzt geändert von omieh am 27.10.2012, 22:44, insgesamt 1-mal geändert.

MaxWrestler
Beiträge: 237
Registriert: 11.12.2011, 12:19
Danksagung erhalten: 1 Mal

Re: Systemprotokoll als E-Mail versenden

Beitrag von MaxWrestler » 28.10.2012, 22:41

Hallo omieh,
herzlich willkommen im Forum !

Mit

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email '" # mail_id # "' '" # drop # "'");
funktioniert bei mir das ganze bis 1000 Zeichen ? (getstring(4863) > 1000 corrupt binrpc data?)
wie ich bereits in meinem oberen Beitrag geschrieben habe.

Meine mom. Lösung funktioniert mit CUxD und einer "Transfervariable".
Du kennst dich ja bereits sehr gut mit CUxD aus .... bevor ich eine neue Version hier Poste möchte ich das die von einigen Usern "abgesegnet" wird.
Also wer ist mit dabei ? Kurze PN an mich.

MaxW.

omieh
Beiträge: 8
Registriert: 27.10.2012, 20:36

Re: Systemprotokoll als E-Mail versenden

Beitrag von omieh » 02.11.2012, 19:34

Hallo
Habe das 1000 Zeichen Problem auch, zuwenig getestet :roll: . skripte wieder gelöscht.
Mir wäre sowiso lieber ich könnte die "HistoryBuffer.csv" Zeitgesteuert auf meinen Homeserver speicher z.Bsp. "HistoryBufferJJJJMMTTHHMM.csv". So könnte ich die Daten mit einem Datenbankprogramm z.Bsp. (Access) abholen archivieren bzw. auswerten. Das csv Format der "HistoryBuffer.csv" ist auch OK.
Gruss
omieh

sattim
Beiträge: 32
Registriert: 06.06.2012, 00:09

Re: Systemprotokoll als E-Mail versenden

Beitrag von sattim » 02.11.2012, 20:50

Hallo zusammen,
ich hatte das Problem auch dass nach dem Update auf die 1508 sich die HM verabschiedet hat.
Bei mir half es das starten des schriptes von 0:00Uhr auf 00:05 zu verlegen auch auf 23:55Uhr ging. nur mit 00:00Uhr kam meine HM nicht klar. Evtl. hilft das dem einen oder andren hier.
Das CUxD update werde ich dann auch demnächst mal in Angriff nehmen.
VG

Carlo
Beiträge: 32
Registriert: 19.02.2012, 23:36

Re: Systemprotokoll als E-Mail versenden

Beitrag von Carlo » 03.11.2012, 09:00

sattim hat geschrieben:Hallo zusammen,
ich hatte das Problem auch dass nach dem Update auf die 1508 sich die HM verabschiedet hat.
Bei mir half es das starten des schriptes von 0:00Uhr auf 00:05 zu verlegen auch auf 23:55Uhr ging. nur mit 00:00Uhr kam meine HM nicht klar. Evtl. hilft das dem einen oder andren hier.
Das CUxD update werde ich dann auch demnächst mal in Angriff nehmen.
VG
Danke sattim,

hat mir geholfen - habe die Ausführung auf 00:05 Uhr gesetzt - (bis jetzt) kein Absturz der CCU. :)

Grüße
Carlo

Antworten

Zurück zu „Sonstige Addons“