Seite 1 von 3

TCL HmIP-SWD

Verfasst: 05.03.2023, 20:43
von Bernd-Joras
Hallo, bin ich hier richtig ?
Ich hätte da bitte einmal ein Frage an die TCL (Mail AddOn) Profis.

Mein TCL sieht so aus …

Code: Alles auswählen

set Datum [clock format [clock seconds] -format "%d.%m.%Y  %H:%M"]
load tclrega.so
array set values [rega_script {

var v10 = dom.GetObject("HmIP-RF.00189D89BE9519:1.WATERLEVEL_DETECTED").Value();
var v11 = dom.GetObject("HmIP-RF.00189D899BE090:1.WATERLEVEL_DETECTED").Value();
var v12 = dom.GetObject("HmIP-RF.00189D899BE08A:1.WATERLEVEL_DETECTED").Value();

}]

set v10 $values(v10)
set v11 $values(v11)
set v12 $values(v12)

set Meldung [encoding convertfrom utf-8 [lindex $argv 1]]
set rmmail [encoding convertfrom utf-8 [lindex $argv 1]]
Meine Mail Vorlage sieht so aus …

Code: Alles auswählen

Wassermelder Dachboden Wasser erkannt      = $v10  
Wassermelder Heizungsraum Wasser erkannt = $v11  
Wassermelder Waschkueche Wasser erkannt   = $v12

Die Mail kommt so an …

Code: Alles auswählen

Wassermelder Dachboden Wasser erkannt      = false  
Wassermelder Heizungsraum Wasser erkannt = true  
Wassermelder Waschkueche Wasser erkannt   = false
Bis hierher alles OK

Die Werte (Datenpunkte) die der Wassermelder (HmIP-SWD) ausgibt, bzw über ein script ausgeben werden wie folgt ...

Code: Alles auswählen

var x = dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value();
WriteLine(x);   false  oder true

var y = dom.GetObject("HmIP-RF.00189D89BE9519:1.MOISTURE_DETECTED").Value();
WriteLine(y);  false  oder true

var z = dom.GetObject("HmIP-RF.00189D89BE9519:1.WATERLEVEL_DETECTED").Value();
WriteLine(z);  false  oder true

Nun meine Frage bitte.
kann man nun irgendwie die ausgegebenen Werte (false / true) umschreiben in vernünftige Werte und wenn ja wie bitte?

Wie nachfolgend habe ich es probiert erhalte jedoch in der Mail dann nur eine „null“.

Code: Alles auswählen

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == 'false') {
var WM_Dachboden = "Trocken";
}
if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == 'true') {
var WM_Dachboden = "Wasser erkannt";
Danke vorab, Bernd

Re: TCL HmIP-SWD

Verfasst: 05.03.2023, 20:47
von MichaelN
Versuch es so

Code: Alles auswählen

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() ) {
var WM_Dachboden = "nass";
} else {
var WM_Dachboden = "alles gut"; 
} 
Ach so, in deinem Code fehlt die schließende Klammer}

Re: TCL HmIP-SWD

Verfasst: 05.03.2023, 21:04
von Bernd-Joras
Hi Michael ... Danke .... so einfach war es leider nicht.

Anbei nochmal das ganze script ... Wo bei auch die TCL überprüfung fehlerfrei ist und auch die Mail versendet wird.

Code: Alles auswählen

set Datum [clock format [clock seconds] -format "%d.%m.%Y  %H:%M"]
load tclrega.so
array set values [rega_script {

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == 'false') {
var WM_Dachboden = "Trocken";
}

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == 'true') {
var WM_Dachboden = "Wasser erkannt";
}

}]

set WM_Dachboden $values(WM_Dachboden)

set Meldung [encoding convertfrom utf-8 [lindex $argv 1]]
set rmmail [encoding convertfrom utf-8 [lindex $argv 1]]
Der Mail Vorlage Inhalt ...

Code: Alles auswählen

Wassermelder Dachboden =>  $WM_Dachboden
Die Mail kommt so an ...

Code: Alles auswählen

Wassermelder Dachboden =>  null
Danke weiterhin für jeden Hinweis, Bernd

Re: TCL HmIP-SWD

Verfasst: 05.03.2023, 21:42
von Henke
Mal ein Versuch, die vaiable nur einmal zu definieren.

Code: Alles auswählen

var WM_Dachboden = "alles gut"; 
if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() ) {
	WM_Dachboden = "nass";
} 

Re: TCL HmIP-SWD

Verfasst: 05.03.2023, 21:49
von Bernd-Joras
Henke, das geht ersteinmal ... im Moment kommt, besser wird gemailt => "alles gut".
Ich muss dann noch den Wassermelder nass machen ... geht aber erst morgen ...
Melde mich sobald ich das getestet habe ...
Danke bis dahin ... Bernd

Re: TCL HmIP-SWD

Verfasst: 07.03.2023, 12:48
von Bernd-Joras
Ich bin / war hier noch das Feedback schuldig, Henke D A N K E so funktioniert es.

Re: TCL HmIP-SWD

Verfasst: 07.03.2023, 12:53
von MichaelN
Henke hat geschrieben:
05.03.2023, 21:42
Mal ein Versuch, die vaiable nur einmal zu definieren.
Eigentlich sollte das egal sein, vor allem da die Zeile mit der Definition so oder so nur 1x durchlaufen wird.

Re: TCL HmIP-SWD

Verfasst: 07.03.2023, 14:16
von Henke
Vom Gültigkeitsbereich der Definition der Variable wäre der Code in Java, Javascript, C und C++ falsch.
Da eine Übergabe der Werte an das TCL Script erfolgt, war es ein Versuch wert und ist es wohl auch nicht egal.

@Bernd-Joras
Gern geschehen. Danke für die Rückmeldung.

Re: TCL HmIP-SWD

Verfasst: 07.03.2023, 16:03
von Tyfys
Mein Senf dazu :

ich bin der Meinung, dass die CCU-Skript Abfragen müssen so sein:

Code: Alles auswählen

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == false) {
var WM_Dachboden = "Trocken";
}

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == true) {
var WM_Dachboden = "Wasser erkannt";
}
Weil die Rückgabewerte von ALARMSTATE sind vom Typ boolean (true/false).
Die kann man dann nicht mit etwas vom Typ string vergleichen.
(Strings sind ja von einfachen oder doppelten Hochkommata umschlossen)


Henke hats auch so gemacht.

Re: TCL HmIP-SWD

Verfasst: 07.03.2023, 16:25
von Bernd-Joras
Tyfys hat geschrieben:
07.03.2023, 16:03
Mein Senf dazu :

ich bin der Meinung, dass die CCU-Skript Abfragen müssen so sein:

Code: Alles auswählen

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == false) {
var WM_Dachboden = "Trocken";
}

if (dom.GetObject("HmIP-RF.00189D89BE9519:1.ALARMSTATE").Value() == true) {
var WM_Dachboden = "Wasser erkannt";
}
Weil die Rückgabewerte von ALARMSTATE sind vom Typ boolean (true/false).
Die kann man dann nicht mit etwas vom Typ string vergleichen.
(Strings sind ja von einfachen oder doppelten Hochkommata umschlossen)


Henke hats auch so gemacht.

Ich Dachte ich probiere es mal aus und sage Euch Bescheid ...
Ja, das funktioniert auch, genau so auch hier DANKE
(Und die Erklärung zu meinem Versuch ist auch irgendwie einleuchtend)