Meine spontan-akute Begriffstutzigkeit hat gesiegt.
![Embarassed :oops:](./images/smilies/icon_redface.gif)
Den kompletten Thread habe ich mehrfach durch!
![Sad :(](./images/smilies/icon_sad.gif)
Erfolg = Null
Trotzdem danke an alle.
Schönen Abend noch.
66er
Moderator: Co-Administratoren
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();
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();
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)]
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.
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?!?
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801777:1.CMD_EXEC").State("/etc/config/addons/email/email 09");