TCL HmIP-SWD

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

Moderator: Co-Administratoren

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

Re: TCL HmIP-SWD

Beitrag von Tyfys » 07.03.2023, 20:51

Bernd-Joras hat geschrieben:
07.03.2023, 18:49
Ich habe mal einige Screenshot-Snipsel angefügt
Ich denke, du hast in der ersten Zeile des Screenshots das gleiche Problem
wie bei ….STATE").Value() == 'true' ) {

Da STATE kein string liefert, müsste es statt ....STATE").Value() == '2') {
besser ....STATE").Value() == 2 ) { sein
Gruß
Harry

Benutzeravatar
Bernd-Joras
Beiträge: 730
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, 21:46

Harry => Stimmt da habe ich wirklich auch ein Problem ...
Das ist auch ein Wassermelder (BidCos), der immer, nun aber auch beim testen mit Wasser, "Trocken" meldet.
Das schaue ich mir morgen an, wenn meine Frau den Tag feiert.
Danke vorab, Bernd
2 Standorte mit je RPi3B+ RaspberryMatic 3.73.9.20240130 / 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: 730
Registriert: 26.03.2016, 09:33
Hat sich bedankt: 34 Mal
Danksagung erhalten: 40 Mal

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 08.03.2023, 10:13

Also Harry (Tyfys) aber auch die Anderen hier ... => Danke ...
Diverse Fehler in meinem TCL-Script konnte ich Dank Eurer Hilfe und Aufmerksamkeit beseitigen.

In der Tat bin ich davon ausgegangen, wenn der Wert (in der Info Mail) bei z.B. einem Wassermelder ist "Trocken" passt, dann wird das auch richtig sein wenn der Wassermelder nun "Wasser erkannt" meldet. Jetzt weis ich, dass dem nicht so ist/war. (trotzdem der TCL-Check OK sagt.)
Ich habe nun alle meine Komponenten in die entsprechenden Zustände gebracht und geschaut das alles richtig ausgewertet und dargestellt wird.

Also . nochmals Danke, auch für den angenehmen Ton und Eure Hilfsbereitschaft, Bernd
2 Standorte mit je RPi3B+ RaspberryMatic 3.73.9.20240130 / 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

Slice
Beiträge: 1200
Registriert: 03.02.2016, 14:44
System: Alternative CCU (auf Basis OCCU)
Wohnort: irgendwo aus Süd BaWü
Hat sich bedankt: 139 Mal
Danksagung erhalten: 85 Mal

Re: TCL HmIP-SWD

Beitrag von Slice » 08.03.2023, 10:21

Hallo Bernd-Joras,

sind den die Fehler in dem Beitrag hier korrigiert:
viewtopic.php?f=43&t=78237&start=10#p760091
?
Ich würde das gerne für meine Wassermelder bei Gelegenheit auch so umsetzen wollen.

Grüße,
Slice
----------------------------------------------------------------------------------------
Raspi3B+ Bullseye mit HB-RF-ETH und RPI-RF-MOD auf piVCCU-FW 3.75.7 / Addons: CuxD v2.11 - E-Mail v1.7.6 - Patcher v1.0.0 - Philips Hue v3.2.5 - Programme drucken v2.6 - Scriptparser v1.11 - XML-API v2.3
Geräte: 141 / Kanäle: 791 / Datenpunkte: 6080 / SysVars: 275 / Programme: 161 / Regadom IDs: 14010 / 48 CUxD-Kanäle in 3 CUxD-Geräten
Intel NUC i3-5010U @ 2,1 GHz mit 16 GB RAM & 512 GB SSD für Proxmox mit ioBroker VM und CCU-Historian/InfluxDB/Grafana VM
----------------------------------------------------------------------------------------
Projekte im Forum: HomeHub v4.1 / Fritzbox-Anruferliste für HomeHub
----------------------------------------------------------------------------------------

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

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 08.03.2023, 10:46

Slice hat geschrieben:
08.03.2023, 10:21
sind den die Fehler in dem Beitrag hier korrigiert:
viewtopic.php?f=43&t=78237&start=10#p760091 ?
J A ! das sollte so alles passen ... die richtigen Zeilen und Klammern im TCL Script am Anfang und am Ende vorausgesetzt.
BG, Bernd
2 Standorte mit je RPi3B+ RaspberryMatic 3.73.9.20240130 / 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: 730
Registriert: 26.03.2016, 09:33
Hat sich bedankt: 34 Mal
Danksagung erhalten: 40 Mal

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 08.03.2023, 11:08

Ich finde ja, mein TCL ziemlich universell und einzigartig, zudem im Moment vermeintlich funktionell.
Somit zeige ich das hier gerne einmal um ggf. Anderen eine Idee zu geben ...
(Ich trau mich mal, auch wenn wahrscheinlich nun auch hier diverse Fehler gefunden werden)

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 v5 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("DutyCycle")).State();
var v6 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("DutyCycle-LAN-RF-GW-GARAGE")).State();
var v7 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("DutyCycle-LAN-RF-GW-KELLER")).State();
var v8 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("CCU-Temperatur")).State();
var v9 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("CCU-Status")).ValueName();

var v11 = dom.GetObject("BidCos-RF.MEQ1601327:1.TEMPERATURE").Value().ToString(1); 
var v12 = dom.GetObject("BidCos-RF.MEQ1601327:1.HUMIDITY").Value().ToString(0);
var v13 = dom.GetObject("BidCos-RF.OEQ1016926:1.TEMPERATURE").Value().ToString(1); 
var v14 = dom.GetObject("BidCos-RF.OEQ1016926:1.HUMIDITY").Value().ToString(0);
var v15 = dom.GetObject("BidCos-RF.MEQ0833482:1.TEMPERATURE").Value().ToString(1); 
var v16 = dom.GetObject("BidCos-RF.MEQ0833482:1.HUMIDITY").Value().ToString(0);
var v17 = dom.GetObject("BidCos-RF.MEQ0202956:1.TEMPERATURE").Value().ToString(1); 
var v18 = dom.GetObject("BidCos-RF.MEQ0202956:1.HUMIDITY").Value().ToString(0);
var v19 = dom.GetObject("BidCos-RF.REQ0105563:1.TEMPERATURE").Value().ToString(1); 
var v20 = dom.GetObject("BidCos-RF.REQ0105563:2.TEMPERATURE").Value().ToString(1); 

var v30 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-Ping-GW-Garage")).ValueName();
var v31 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-Ping-GW-Keller")).ValueName();
var v32 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-Ping-GW-Kontakte")).ValueName();
var v33 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-Ping-Syslog-Server")).ValueName();

var v40 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-IN-6014HD-TH")).Value();
var v42 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-IN-7011HD-Garage")).Value();
var v44 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-IN-7011HD-Gartentor")).Value();
var v46 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-IN-9020HD-Garten")).Value();
var v48 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-IN-9020HD-Einfahrt")).Value();


if (dom.GetObject("BidCos-RF.KEQ0884154:1.STATE").Value() == '0') {
    var v4 = "kein Regen";
}

if (dom.GetObject("BidCos-RF.KEQ0884154:1.STATE").Value() == '1') {
    var v4 = "es regnet oder es ist noch nass ...";
}


if (dom.GetObject("BidCos-RF.LEQ1098598:1.STATE").Value() ) {
var WM_Hebeanlage = "! Wasser erkannt !";
} else {
var WM_Hebeanlage = "Trocken"; 
}

if (dom.GetObject("BidCos-RF.MEQ0206896:1.STATE").Value() ) {
var WM_Keller = "! Wasser erkannt !";
} else {
var WM_Keller = "Trocken"; 
}

if (dom.GetObject("BidCos-RF.MEQ0588528:1.STATE").Value() ) {
var WM_Kueche = "! Wasser erkannt !";
} else {
var WM_Kueche = "Trocken"; 
}

if (dom.GetObject("HmIP-RF.00189F29A71D24:1.ALARMSTATE").Value() ) {
var WM_Waschkueche = "! Wasser erkannt !";
} else {
var WM_Waschkueche = "Trocken"; 
}

if (dom.GetObject("CUxD.CUX2803001:8.STATE").Value()) { string v41 = "(Verbindung) zur IN6014HD-TH => OK";}else{ string v41 = "PING (Verbindung) zur IN-6014HD-TH => FEHLER";}

if (dom.GetObject("CUxD.CUX2803001:9.STATE").Value()) { string v43 = "(Verbindung) zur IN6014HD-TH => OK";}else{ string v43 = "PING (Verbindung) zur IN-7011HD-Garage => FEHLER";}

if (dom.GetObject("CUxD.CUX2803001:10.STATE").Value()) { string v45 = "(Verbindung) zur IN6014HD-TH => OK";}else{ string v45 = "PING (Verbindung) zur IN-7011HD-Gartentor => FEHLER";}

if (dom.GetObject("CUxD.CUX2803001:11.STATE").Value()) { string v47 = "(Verbindung) zur IN6014HD-TH => OK";}else{ string v47 = "PING (Verbindung) zur IN-9020HD-Einfahrt => FEHLER";}

if (dom.GetObject("CUxD.CUX2803001:12.STATE").Value()) { string v49 = "(Verbindung) zur IN6014HD-TH => OK";}else{ string v49 = "PING (Verbindung) zur IN-9020HD-Garten => FEHLER";}

} ]
 
set v4 $values(v4)
set v5 $values(v5)
set v6 $values(v6)
set v7 $values(v7)
set v8 $values(v8)
set v9 $values(v9)

set v11 $values(v11)
set v12 $values(v12)
set v13 $values(v13)
set v14 $values(v14)
set v15 $values(v15)
set v16 $values(v16)
set v17 $values(v17)
set v18 $values(v18)
set v19 $values(v19)
set v20 $values(v20)

set v30 $values(v30)
set v31 $values(v31)
set v32 $values(v32)
set v33 $values(v33)

set v40 $values(v40)
set v41 $values(v41)
set v42 $values(v42)
set v43 $values(v43)
set v44 $values(v44)
set v45 $values(v45)
set v46 $values(v46)
set v47 $values(v47)
set v48 $values(v48)
set v49 $values(v49)

set WM_Hebeanlage $values(WM_Hebeanlage)
set WM_Keller $values(WM_Keller)
set WM_Kueche $values(WM_Kueche)
set WM_Waschkueche $values(WM_Waschkueche)

set Meldung [encoding convertfrom utf-8 [lindex $argv 1]]
set rmmail [encoding convertfrom utf-8 [lindex $argv 1]]
   
# ------------------------------------------------------------------------
in der Mail dann z.B. so ...

Code: Alles auswählen

Die Eisenbahn ;-) sendet Dir einen Statusbericht vom $Datum ..

Die CCU arbeitet $v9  bei einer Temperatur von $v8 °Celsius

Die außen Temperatur beträgt $v11  C° bei einer Luftfeuchte von  $v12  %

Die Anderen Temperaturen wie folgt ….
Garage			$v13  C° bei einer Luftfeuchte von  $v14  %
Klavier			$v15  C° bei einer Luftfeuchte von  $v16  %
Treppenhaus		$v17  C° bei einer Luftfeuchte von  $v18  %
Olivia fühlt hier	$v19 C° und $v20 C°

Im Moment meldet der Regensensor $v4

Nachfolgend weitere Werte … Aber nicht so umschrieben …

DutyCycle der HM Zentrale in der Kammer		=> $v5
DutyCycle des Lan Gateways in der Garage	=> $v6
DutyCycle des Lan Gateways im Keller		=> $v7

STATUS = Wassermelder Hebeanlage		=>  $WM_Hebeanlage
STATUS = Wassermelder Keller			=>  $WM_Keller
STATUS = Wassermelder Küche			=>  $WM_Kueche
STATUS = Wassermelder Waschkueche		=>  $WM_Waschkueche

Das GW-Garage ist			=> $v30
Das GW-Keller ist  			=> $v31
Das GW-ELEKTROKASTEN ist 		=> $v32


Zusätzlich Informationen bezüglich der Haustechnik

IN-6014HD Treppenhaus	=> Kamera-Bild-Aufnahme = $v40   / Ping = $v41
IN-7011HD Garage	=> Kamera-Bild-Aufnahme = $v42   / Ping = $v43
IN-7011HD Gartentor	=> Kamera-Bild-Aufnahme = $v44   / Ping = $v45
IN-9020HD Garten	=> Kamera-Bild-Aufnahme = $v46   / Ping = $v47
IN-9020HD Einfahrt	=> Kamera-Bild-Aufnahme = $v48   / Ping = $v49

Nachfolgend gerade anstehende Meldungen ...
...........................................................................
Ausgelöster Rauchmelder: $rmmail
2 Standorte mit je RPi3B+ RaspberryMatic 3.73.9.20240130 / 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
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: TCL HmIP-SWD

Beitrag von Baxxy » 08.03.2023, 19:30

Mal ein bisschen süßen Senf dazu... :wink:
Alles was innerhalb...

Code: Alles auswählen

array set values [rega_script {

} ]
... steht, ist ja ganz Homematic-Script.

Auch wenn es vielleicht unsinnig ist versuche ich das ganze immer so effizient wie möglich zu machen, d.h. so wenig Abfragen über die ReGa wie nötig.
Ich picke mir mal die Wetterstation/Regensensor? (MEQ0588528) heraus wo ich u.A. noch Optimierungspotential sehe.

Aktuell:

Code: Alles auswählen

if (dom.GetObject("BidCos-RF.KEQ0884154:1.STATE").Value() == '0') {
    var v4 = "kein Regen";
}

if (dom.GetObject("BidCos-RF.KEQ0884154:1.STATE").Value() == '1') {
    var v4 = "es regnet oder es ist noch nass ...";
} 
So würde ich das machen:

Code: Alles auswählen

var v4 = "kein Regen";
if (dom.GetObject("BidCos-RF.KEQ0884154:1.STATE").Value()) {
    v4 = "es regnet oder es ist noch nass ...";
}
Bei dem Wassersensor dann:

Code: Alles auswählen

var WM_Hebeanlage = "Trocken";
if (dom.GetObject("BidCos-RF.LEQ1098598:1.STATE").Value() ) {
    WM_Hebeanlage = "! Wasser erkannt !";
}
Aber wie immer führen viele Wege nach Rom. :)

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

Re: TCL HmIP-SWD

Beitrag von Bernd-Joras » 08.03.2023, 21:12

Baxxy … Ja, Danke … habe es mal angepasst …

Ursprung des ganzen durcheinander und der unterschiedlichen Möglichkeiten ist, ohne Sinn und Verstand die ersten Zeilen im TCL aus dem Forum zusammengesucht und eingetippert. Das ganze dann so lange probiert bis es irgendwann mit dem ersten Gerät Klappte. Im Laufe der Zeit ist dann immer mehr dazugekommen, wobei ich hier dann auch immer irgendwie aus dem Forum etwas abgeschaut habe. Mal von dem, mal vom Anderem mal von Baxxy … 😉 Also immer irgendwie anders.

Sicherlich habe ich nun nach Jahren ein wenig mehr verstanden vom Skripten, jedoch fehlen mir hier vollständig die Basics. Das ist jetzt bitte keine Aufforderung, nur eine Erklärung. Ich glaube vielen HM / RBM Betreibern geht es so, dass Sie das Eine oder Andere einrichten wollen, ohne wirkliche Programmierkenntnisse zu haben. „Wir“ freuen uns dann über Beispiele im Forum, um abschreiben zu können. Nicht jeder will, möchte oder kann immer gleich umschulen in Richtung IT. Somit wissen also ganz viele hier im Forum wie hilfreich es ist, von denen die mehr davon verstehen, abschreiben und lernen zu dürfen … Nur mal so … nicht technisch … Rechtherzlichen Dank, Bernd
2 Standorte mit je RPi3B+ RaspberryMatic 3.73.9.20240130 / 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“