Email-Addon 1.6.8c

diverse Zusatzsoftware

Moderator: Co-Administratoren

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Email-Addon 1.6.8c

Beitrag von alchy » 26.10.2020, 19:31

Nussschnecke hat geschrieben:
26.10.2020, 17:12
Folgendes steht sinngemäß in meinem Script
---
var v1 = dom.GetObject("ESP-Temp").Value();
var v2 = dom.GetObject("ESP-Feuchte").Value();
sinngemäß ist nicht. :roll: Poste den Reiter oder lass es mit der Fragerei.
Du hast entweder noch etwas anderes drin stehen oder das Object ESP-Temp heisst nicht so.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Nussschnecke
Beiträge: 50
Registriert: 07.02.2015, 20:03
System: Alternative CCU (auf Basis OCCU)
Wohnort: Schwabenland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Email-Addon 1.6.8c

Beitrag von Nussschnecke » 28.10.2020, 12:15

Hallo,
also mein kompletter Eintrag mit angepassten SRN

Code: Alles auswählen

load tclrega.so
array set values [rega_script {
var v1 = dom.GetObject("BidCos-RF.LEQ0779aaa:4.CONTROL_MODE").Value();
var v2 = dom.GetObject("BidCos-RF.LEQ0779aaa:4.ACTUAL_TEMPERATURE").Value();
var v3 = dom.GetObject("BidCos-RF.LEQ0779aaa:4.VALVE_STATE").Value();
var v4 = dom.GetObject("BidCos-RF.LEQ0779aaa:4.SET_TEMPERATURE").Value();
var v5 = dom.GetObject("BidCos-RF.LEQ0779bbb:4.CONTROL_MODE").Value();
var v6 = dom.GetObject("BidCos-RF.LEQ0779bbb:4.ACTUAL_TEMPERATURE").Value();
var v7 = dom.GetObject("BidCos-RF.LEQ0779bbb:4.VALVE_STATE").Value();
var v8 = dom.GetObject("BidCos-RF.LEQ0779bbb:4.SET_TEMPERATURE").Value();
var v9 = dom.GetObject("BidCos-RF.LEQ0782ccc:4.CONTROL_MODE").Value();
var v10 = dom.GetObject("BidCos-RF.LEQ0782ccc:4.ACTUAL_TEMPERATURE").Value();
var v11 = dom.GetObject("BidCos-RF.LEQ0782ccc:4.VALVE_STATE").Value();
var v12 = dom.GetObject("BidCos-RF.LEQ0782ccc:4.SET_TEMPERATURE").Value();
var v13 = dom.GetObject("BidCos-RF.LEQ0567ddd:1.TEMPERATURE").Value();
var v14 = dom.GetObject("BidCos-RF.LEQ0567ddd:1.HUMIDITY").Value();
var v15 = dom.GetObject("Stoerung_Heizung").Value();
var v16 = dom.GetObject("Stoerung_Kontakte").Value();
var v17 = dom.GetObject("Stoerung_Batterien").Value();
var v31 = dom.GetObject("BidCos-RF.LEQ0629eee:1.STATE").Value();
var v32 = dom.GetObject("BidCos-RF.LEQ0629fff:1.STATE").Value();
var v35 = dom.GetObject("BidCos-RF.KEQ1095ggg:1.STATE").Value();
var v37 = dom.GetObject("BidCos-RF.LEQ1200hhh:4.CONTROL_MODE").Value();
var v38 = dom.GetObject("BidCos-RF.LEQ1200iii:4.ACTUAL_TEMPERATURE").Value();
var v39 = dom.GetObject("BidCos-RF.LEQ1200iii:4.VALVE_STATE").Value();
var v40 = dom.GetObject("BidCos-RF.LEQ1200iii:4.SET_TEMPERATURE").Value();
var v41 = dom.GetObject("BidCos-RF.LEQ1199jjj:4.CONTROL_MODE").Value();
var v42 = dom.GetObject("BidCos-RF.LEQ1199jjj:4.ACTUAL_TEMPERATURE").Value();
var v43 = dom.GetObject("BidCos-RF.LEQ1199jjj:4.VALVE_STATE").Value();
var v44 = dom.GetObject("BidCos-RF.LEQ1199jjj:4.SET_TEMPERATURE").Value();
var v46 = dom.GetObject("BidCos-RF.OEQ2642kkk:4.CONTROL_MODE").Value();
var v47 = dom.GetObject("BidCos-RF.OEQ2642kkk:4.ACTUAL_TEMPERATURE").Value();
var v48 = dom.GetObject("BidCos-RF.OEQ2642kkk:4.VALVE_STATE").Value();
var v49 = dom.GetObject("BidCos-RF.OEQ2642kkk:4.SET_TEMPERATURE").Value();
var v50 = dom.GetObject("ESP2-Temp").Value();
var v51 = dom.GetObject("ESP2-Feucht").Value();
var v52 = dom.GetObject("ESP2-Druck").Value();
var v53 = dom.GetObject("ESP3-Temp").Value();
var v54 = dom.GetObject("ESP3-Feucht").Value();
var v55 = dom.GetObject("ESP3-Druck").Value();

} ]

set v1 $values(v1)
set v2 $values(v2)
set v3 $values(v3)
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 v10 $values(v10)
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 v31 $values(v31)
set v32 $values(v32)
set v35 $values(v35)
set v37 $values(v37)
set v38 $values(v38)
set v39 $values(v39)
set v40 $values(v40)
set v41 $values(v41)
set v42 $values(v42)
set v43 $values(v43)
set v44 $values(v44)
set v46 $values(v46)
set v47 $values(v47)
set v48 $values(v48)
set v49 $values(v49)
set v50 $values(v50)
set v51 $values(v51)
set v52 $values(v52)
set v53 $values(v53)
set v54 $values(v54)
set v55 $values(v55)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("Verschluss Haus").Value() == 'false') {
var v18 = "geschlossen";
}else {
var v18 = "offen";
}
} ]

set v18 $values(v18)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("Tueren+Fenster EG").Value() == 'false') {
var v19 = "geschlossen";
}else {
var v19 = "offen";
}
} ]

set v19 $values(v19)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("Tueren+Fenster OG").Value() == 'false') {
var v20 = "geschlossen";
}else {
var v20 = "offen";
}
} ]

set v20 $values(v20)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("Tueren+Fenster DG").Value() == 'false') {
var v21 = "geschlossen";
}else {
var v21 = "offen";
}
} ]

set v21 $values(v21)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ0498xxx:1.STATE").Value() == 'false') {
var v22 = "offen";
}else {
var v22 = "geschlossen";
}
} ]

set v22 $values(v22)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ0498yyy:1.STATE").Value() == 'false') {
var v23 = "offen";
}else {
var v23 = "geschlossen";
}
} ]

set v23 $values(v23)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ0498zzz:1.STATE").Value() == 'false') {
var v24 = "offen";
}else {
var v24 = "geschlossen";
}
} ]

set v24 $values(v24)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ0498qqq:1.STATE").Value() == 'false') {
var v25 = "offen";
}else {
var v25 = "geschlossen";
}
} ]

set v25 $values(v25)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("Anwesenheit").Value() == 'false') {
var v26 = "ANWESEND";
}else {
var v26 = "ABWESEND";
}
} ]

set v26 $values(v26)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("ALARM_SCHARF").Value() == 'false') {
var v27 = "ALARM SCHARF";
}else {
var v27 = "ALARM AUS";
}
} ]

set v27 $values(v27)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ1172www:1.STATE").Value() == 'false') {
var v28 = "offen";
}else {
var v28 = "geschlossen";
}
} ]

set v28 $values(v28)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ1172rrr:1.STATE").Value() == 'false') {
var v29 = "offen";
}else {
var v29 = "geschlossen";
}
} ]

set v29 $values(v29)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("Besuch").Value() == 'false') {
var v30 = "ANWESEND";
}else {
var v30 = "ABWESEND";
}
} ]

set v30 $values(v30)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ0501ttt:1.STATE").Value() == 'false') {
var v33 = "offen";
}else {
var v33 = "geschlossen";
}
} ]

set v33 $values(v33)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ0501uuu:1.STATE").Value() == 'false') {
var v34 = "offen";
}else {
var v34 = "geschlossen";
}
} ]

set v34 $values(v34)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("BidCos-RF.LEQ0405nnn:1.STATE").Value() == 'false') {
var v36 = "offen";
}else {
var v36 = "geschlossen";
}
} ]

set v36 $values(v36)

load tclrega.so

array set values [rega_script {
if
(dom.GetObject("SYS_Briefkasten").Value() == 'false') {
var v45 = "Post da";
}else {
var v45 = "keine Post";
}
} ]

set v45 $values(v45)
Das hier steht in der Mailvorlage:

Code: Alles auswählen

Hallo,

dies ist eine StatusMail der HomeMatic Zentrale!
Die Außentemperatur beträgt $v13 °C bei $v14 % Luftfeuchtigkeit.
Temp 2: $v50 °C. Feuchte 2: $v51 %. Luftdruck 2: $v52 hPa.
Temp 3: $v53 °C. Feuchte 3: $v54 %. Luftdruck 3: $v55 hPa
Der Rest passt so wie es soll, und funktioniert wie geplant.
Nur mit den Werten der ESPs habe ich Probleme, so dass "null" zurück kommt.

Danke und Grüße
Nussschnecke
Dateianhänge
3F7E363D-BCC3-410A-AA41-D427453AA015.jpeg
Grüße
Nussschnecke

Raspberry-Matic aktuell auf einem Pi4 4GB (ArgonOne V2 M.2) mit ein paar Geräten - und zufrieden!

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Email-Addon 1.6.8c

Beitrag von alchy » 28.10.2020, 22:47

Und deine mail kommt wie an?

So?

Hallo,

dies ist eine StatusMail der HomeMatic Zentrale!
Die Außentemperatur beträgt 18 °C bei 80 % Luftfeuchtigkeit.
Temp 2: null °C. Feuchte 2: null %. Luftdruck 2: null hPa.
Temp 3: null °C. Feuchte 3: null %. Luftdruck 3: null hPa

sprich also ab wo steht die null drin?

Wenn es so ist, wie ich es skizziert habe ist einer der Datenpunkte zwischen v15 und v50 so nicht vorhanden wie er aufgeführt ist.
Ab diesen falschen Object funktioniert dann nichts mehr in deinem Script.
Schneide

Code: Alles auswählen

var v50 = dom.GetObject("ESP2-Temp").Value();
var v51 = dom.GetObject("ESP2-Feucht").Value();
var v52 = dom.GetObject("ESP2-Druck").Value();
var v53 = dom.GetObject("ESP3-Temp").Value();
var v54 = dom.GetObject("ESP3-Feucht").Value();
var v55 = dom.GetObject("ESP3-Druck").Value();
aus und füge sie oben ein direkt unter

Code: Alles auswählen

load tclrega.so
array set values [rega_script {
ein, also so:

Code: Alles auswählen

load tclrega.so
array set values [rega_script {
var v50 = dom.GetObject("ESP2-Temp").Value();
var v51 = dom.GetObject("ESP2-Feucht").Value();
var v52 = dom.GetObject("ESP2-Druck").Value();
var v53 = dom.GetObject("ESP3-Temp").Value();
var v54 = dom.GetObject("ESP3-Feucht").Value();
var v55 = dom.GetObject("ESP3-Druck").Value();
......
und schick dir die Mail noch mal zu. Resultat?

Um solche Fehler zu finden erzeuge eine Mailvorlage, welche alle Werte von oben nach untern ausgibt wie sie im Script aufgeführt sind.

Code: Alles auswählen

dies ist eine Kontroll Mail der HomeMatic Zentrale!
Wert v1: $v1
Wert v2: $v2 
......
Dann siehst du, ab wo die null drin steht.
Und dein TCL Reiter hätte Optimierungsbedarf. Aber eins nach dem Anderen.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Nussschnecke
Beiträge: 50
Registriert: 07.02.2015, 20:03
System: Alternative CCU (auf Basis OCCU)
Wohnort: Schwabenland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Email-Addon 1.6.8c

Beitrag von Nussschnecke » 29.10.2020, 08:13

Hallo,

vielen Dank für deinen ausführlichen Lösungsansatz welcher auch zum Erfolg geführt hat.
Es war ein Fenster-Griff-Sensor der schon länger Stress macht und bei mir "ruhig" gestellt wurde aber nicht aus dem Script herausgenommen wurde (V35).

Da von dem selten Informationen in den Mails auftauchen ist mir das nicht aufgefallen und ich muss zugeben, dass ich auch nicht wusste, dass wenn sowas passiert, danach im Script nichts mehr klappt. Danke auch für diese Information.

Mail sieht jetzt so aus:
---
dies ist eine StatusMail der HomeMatic Zentrale!
Die Außentemperatur beträgt 10.000000 °C bei 81 % Luftfeuchtigkeit.
Wohnzimmer: 22.300000 °C bei 49.500000 % Luftfeuchtigkeit und einem Luftdruck von 1017.400000 hPa.
Arbeitszimmer: 24.300000 °C bei 47.400000 % Luftfeuchtigkeit und einem Luftdruck von 1017.500000 hPa.
---

Hier wäre jetzt noch die Frage ob man die Ausgabe beschneiden kann auf eine gewisse Anzahl Stellen nach dem Komma.
Gibt es diese Möglichkeit?

Weiterhin hast du von einem Optimierungspotential im TCL gesprochen, was wäre dort zu tun?

Danke und Grüße
Nussschnecke
Grüße
Nussschnecke

Raspberry-Matic aktuell auf einem Pi4 4GB (ArgonOne V2 M.2) mit ein paar Geräten - und zufrieden!

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: Email-Addon 1.6.8c

Beitrag von Baxxy » 29.10.2020, 08:42

Nussschnecke hat geschrieben:
29.10.2020, 08:13
auf eine gewisse Anzahl Stellen nach dem Komma
Das geht.
z.B. so:

Code: Alles auswählen

var v58 = dom.GetObject("Strom Verbrauch Monat").Value().ToString(2);
Die "2" in Klammern gibt die Nachkommastellen an.
Nussschnecke hat geschrieben:
29.10.2020, 08:13
Optimierungspotential
Mal schauen was Alchy dazu sagt. Mir fällt nur ein das man sich diese "Doppelei aus...

Code: Alles auswählen

var v58 = xxxx
...
set v58 $values(v58)
...auch sparen kann indem man z.B.

Code: Alles auswählen

set atempsysvar [rega (dom.GetObject("Aussentemperatur").Value()).ToString(1) ];
benutzt.

Nussschnecke
Beiträge: 50
Registriert: 07.02.2015, 20:03
System: Alternative CCU (auf Basis OCCU)
Wohnort: Schwabenland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Email-Addon 1.6.8c

Beitrag von Nussschnecke » 29.10.2020, 11:41

Hallo Baxxy,

auch dir ein Danke für die Unterstützung.
das mit der Stellenanzahl hat jetzt auch ohne Probleme geklappt; ist bereits umgesetzt.
Das Thema Optimierung bzgl. der Dopplungen werde ich auch angehen, da brauche ich aber ein bisschen Zeit zur Umsetzung.
Funktioniert das auch für einen Gerätestatus?

Jetzt bin ich auf den weiteren Input von Alchy gespannt.

Nochmal Danke und Grüße
Nussschnecke
Grüße
Nussschnecke

Raspberry-Matic aktuell auf einem Pi4 4GB (ArgonOne V2 M.2) mit ein paar Geräten - und zufrieden!

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Email-Addon 1.6.8c

Beitrag von alchy » 29.10.2020, 17:59

Nussschnecke hat geschrieben:
29.10.2020, 08:13
Es war ein Fenster-Griff-Sensor der schon länger Stress macht und bei mir "ruhig" gestellt wurde aber nicht aus dem Script herausgenommen wurde (V35).
pass aber nicht zu
Nussschnecke hat geschrieben:
28.10.2020, 12:15
Der Rest passt so wie es soll, und funktioniert wie geplant.
:P
Nussschnecke hat geschrieben:
28.10.2020, 12:15
ich muss zugeben, dass ich auch nicht wusste, dass wenn sowas passiert, danach im Script nichts mehr klappt. Danke auch für diese Information.
Bitte.

[ERKLÄRBÄRMODUS]

Schlussendlich ist das INNERHALB

Code: Alles auswählen

load tclrega.so
array set values [rega_script {

INNERHALB

} ]
nur ein eigebettetes HM Script

Unter Script testen:

Code: Alles auswählen

var v50 = dom.GetObject(950).Value(); WriteLine(v50);
var v51 = dom.GetObject(40).Value();WriteLine(v51);
var v52 = dom.GetObject(41).Value();WriteLine(v52);
gibt dir

Code: Alles auswählen

true
0
0
aus (gesetzt den Fall die Variable Anwesenheit steht auf wahr und du hast keine Service und Alarmmeldungen)
Ist dem so? Dann nimmst du das Script und änderst auf

Code: Alles auswählen

var v50 = dom.GetObject(950).Value(); WriteLine(v50);
var v51 = dom.GetObject(400000000).Value();WriteLine(v51);
var v52 = dom.GetObject(41).Value();WriteLine(v52);
Was wird ausgegeben?
v50 und v52 wären ja nach wie vor in Ordnung aber da v51 ungültig ist, hört die Ausgabe schon nach true auf
(da es kein Objekt auf einer CCU gibt mit der ISE_ID 400000000) das v52 eigentlich wieder richtig wäre ist uninteressant.

Das ist auch der Vorteil der langen Schreibweise, man kann also das INNERHALB z.B. im Scriptexecuter ausführen und kriegt so auch die Rückmeldung, ob alles passt.
[\ERKLÄRBÄRMODUS]


Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

JBecker32
Beiträge: 75
Registriert: 04.03.2014, 18:46
Hat sich bedankt: 10 Mal
Danksagung erhalten: 1 Mal

Re: Email-Addon 1.6.8c

Beitrag von JBecker32 » 05.11.2020, 18:09

Ich habe ein Problem mit dem folgenden Beispielskript aus der Dokumentation des Email-Addons:

Code: Alles auswählen

load tclrega.so
array set values [rega_script {
if
if (dom.GetObject("Anwesenheit").Value() == 'false') {
var v1 = "anwesend";
}else {
var v1 = "nicht anwesend";
}
} ]
set v1 $values(v1) 
Zuerst einmal ist da nicht ein if zu viel?
Zweitens sollte doch, wenn Anwesenheit 'false' ist v1 auf "abwesend" gesetzt werden, nicht auf "anwesend", oder?
Drittens bekomme ich bei dem Vergleich == 'false' immer nicht das korrekte Ergebnis.

Ein (EDIT: Homematic-)Skript:

Code: Alles auswählen

var v1 = "undefiniert";
var val = dom.GetObject("Anwesenheit").Value();
WriteLine(val);

if (dom.GetObject("Anwesenheit").Value() == 'false') 
{
v1 = "abwesend";
}

if (dom.GetObject("Anwesenheit").Value() == 'true') 
{
v1 = "anwesend";
}
WriteLine(v1);
druckt bei mir wenn Anwesenheit false ist:
false
undefiniert

und wenn Anwesenheit true ist:
true
anwesend

Das Skript scheint erst dann korrekt zu funktionieren, wenn ich bei den Vergleichen die Anführungszeichen um true und false weglasse:

Code: Alles auswählen

if (dom.GetObject("Anwesenheit").Value() == false) 
{
v1 = "abwesend";
}

if (dom.GetObject("Anwesenheit").Value() == true) 
{
v1 = "anwesend";
}
Kann mir das eventuell jemand erklären???

Beste Grüße, Jörg.

EDIT: Oh, Mist. Ich glaube, ich vergleiche hier Äpfel mit Birnen....
Das erste Skript (Beispielskript aus der Email-Doku) ist ein Tcl-Skript, meine Beispiele sind aber 'Homematic'-Skripte :roll:
Könnte mir eventuell trotzdem jemand dazu was sagen?

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: Email-Addon 1.6.8c

Beitrag von Baxxy » 05.11.2020, 19:52

JBecker32 hat geschrieben:
05.11.2020, 18:09
Könnte mir eventuell trotzdem jemand dazu was sagen?
Innerhalb des...

Code: Alles auswählen

load tclrega.so
array set values [rega_script {
.
.
.
} ]
... kannst du ganz normal Homematic-Scripte eintragen.

Das "Beispiel aus der Doku" sieht in der Tat etwas merkwürdig aus. Und ja, steht die SysVar auf "Anwesend" hat sie den Wert true.
Das dein Vergleich nicht funktioniert liegt daran das

Code: Alles auswählen

(dom.GetObject("Anwesenheit").Value()
den Logikwert (true / false) ausgibt und du diesen mit

Code: Alles auswählen

== 'false')
einem String 'true' / 'false' vergleichst.
Die beiden sind aber nicht gleich, daher kommt es zum undefiniert.

Hier ein funktionierendes Beispiel in kompakter Form:

Code: Alles auswählen

if (dom.GetObject("Anwesenheit").Value()) {
var v1 = "anwesend";
}else { var v1 = "nicht anwesend";}

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Email-Addon 1.6.8c

Beitrag von alchy » 05.11.2020, 20:47

JBecker32 hat geschrieben:
05.11.2020, 18:09
Zuerst einmal ist da nicht ein if zu viel?
Jupp

JBecker32 hat geschrieben:
05.11.2020, 18:09
Zweitens

Code: Alles auswählen

if (dom.GetObject("Anwesenheit").Value() == 'false') {
var v1 = "anwesend";
}else {
var v1 = "nicht anwesend";
}
stammt aus ganz alten Zeiten und wahr schon immer falsch, nur hat das damals noch keiner gewusst. Auch wenn es noch so funktioniert, ist es doch nicht nötig und weil außerdem falsch natürlich besser wie Baxxy schon schrieb, kann man den Vergleich ohne ' nutzen oder besser gleich weglassen

Code: Alles auswählen

if (dom.GetObject("Anwesenheit").Value()) {
var v1 = "anwesend";
}else { var v1 = "nicht anwesend";}
noch viel viel einfacher ist es für den Fall einer Logik / Alarmvariable aber der Gebrauch der glaube offiziell undokumentierten Methode .ValueName()
BP_valuename.jpg
das macht es viel einfacher: :mrgreen:

Code: Alles auswählen

var v1 = dom.GetObject("Anwesenheit").ValueName();
BP_valuename_script.jpg
Das ermittelt den gerade geltenden Wert den du für wahr oder falsch in der KLickibunti eingefügt hast.
ValueName.jpg
Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „Sonstige Addons“