TCL HmIP-SWD

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Benutzeravatar
Bernd-Joras
Beiträge: 732
Registriert: 26.03.2016, 09:33
Hat sich bedankt: 34 Mal
Danksagung erhalten: 40 Mal

TCL HmIP-SWD

Beitrag von Bernd-Joras » 05.03.2023, 20:43

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
2 Standorte mit je RPi3B+ RaspberryMatic 3.75.7.20240420 / RPI-RF-MOD | Externe USB-Platinen Antenne | 2x LAN_RF_GW | 1x LAN_RS485_GW | ca. 170 Geräte davon 35x IP | ca. 250 Programme |>600 Kanäle | Addons: CUX-Daemon, XML-API, hm_pdetect, E-Mail, CCU-Historian

MichaelN
Beiträge: 9686
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: TCL HmIP-SWD

Beitrag von MichaelN » 05.03.2023, 20:47

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}
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Bernd-Joras
Beiträge: 732
Registriert: 26.03.2016, 09:33
Hat sich bedankt: 34 Mal
Danksagung erhalten: 40 Mal

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 05.03.2023, 21:04

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
2 Standorte mit je RPi3B+ RaspberryMatic 3.75.7.20240420 / RPI-RF-MOD | Externe USB-Platinen Antenne | 2x LAN_RF_GW | 1x LAN_RS485_GW | ca. 170 Geräte davon 35x IP | ca. 250 Programme |>600 Kanäle | Addons: CUX-Daemon, XML-API, hm_pdetect, E-Mail, CCU-Historian

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: TCL HmIP-SWD

Beitrag von Henke » 05.03.2023, 21:42

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";
} 

Benutzeravatar
Bernd-Joras
Beiträge: 732
Registriert: 26.03.2016, 09:33
Hat sich bedankt: 34 Mal
Danksagung erhalten: 40 Mal

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 05.03.2023, 21:49

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
2 Standorte mit je RPi3B+ RaspberryMatic 3.75.7.20240420 / RPI-RF-MOD | Externe USB-Platinen Antenne | 2x LAN_RF_GW | 1x LAN_RS485_GW | ca. 170 Geräte davon 35x IP | ca. 250 Programme |>600 Kanäle | Addons: CUX-Daemon, XML-API, hm_pdetect, E-Mail, CCU-Historian

Benutzeravatar
Bernd-Joras
Beiträge: 732
Registriert: 26.03.2016, 09:33
Hat sich bedankt: 34 Mal
Danksagung erhalten: 40 Mal

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 07.03.2023, 12:48

Ich bin / war hier noch das Feedback schuldig, Henke D A N K E so funktioniert es.
2 Standorte mit je RPi3B+ RaspberryMatic 3.75.7.20240420 / RPI-RF-MOD | Externe USB-Platinen Antenne | 2x LAN_RF_GW | 1x LAN_RS485_GW | ca. 170 Geräte davon 35x IP | ca. 250 Programme |>600 Kanäle | Addons: CUX-Daemon, XML-API, hm_pdetect, E-Mail, CCU-Historian

MichaelN
Beiträge: 9686
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: TCL HmIP-SWD

Beitrag von MichaelN » 07.03.2023, 12:53

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.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: TCL HmIP-SWD

Beitrag von Henke » 07.03.2023, 14:16

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.

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: TCL HmIP-SWD

Beitrag von Tyfys » 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.
Gruß
Harry

Benutzeravatar
Bernd-Joras
Beiträge: 732
Registriert: 26.03.2016, 09:33
Hat sich bedankt: 34 Mal
Danksagung erhalten: 40 Mal

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 07.03.2023, 16:25

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)
2 Standorte mit je RPi3B+ RaspberryMatic 3.75.7.20240420 / RPI-RF-MOD | Externe USB-Platinen Antenne | 2x LAN_RF_GW | 1x LAN_RS485_GW | ca. 170 Geräte davon 35x IP | ca. 250 Programme |>600 Kanäle | Addons: CUX-Daemon, XML-API, hm_pdetect, E-Mail, CCU-Historian

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“