Email-Addon sendet "null"

diverse Zusatzsoftware

Moderator: Co-Administratoren

Antworten
BitMac
Beiträge: 183
Registriert: 27.11.2015, 09:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal

Email-Addon sendet "null"

Beitrag von BitMac » 07.12.2020, 16:16

Ich habe mich bei meinen TCL-Script an dem Beispiel in der Hilfe orientiert.
Funktioniert auch bis hierher.
Problem:
Wenn ich eine weitere "if-Bedingung" hinzufüge, bekomme ich als Email nur noch "null".

Zur Zeit benutze ich Ver 1.6.8c.
Aber das Problem habe ich auch bei früheren Version gehabt und mich mit einem Workaround zufrieden gegeben.
Nur jetzt möchte ich das Problem endlich mal angehen.
Woran kann das liegen ?

Code: Alles auswählen

load tclrega.so

set Datum [clock format [clock seconds] -format "%d.%m.%Y %H:%M"];

array set values [rega_script {

if
 (dom.GetObject("fl_kueche").Value() == 'false') {
 var v1 = "Küche offen";
}

if
 (dom.GetObject("fl_esszimmer").Value() == 'false') {
 var v1 = "Esszimmer offen";
}

if
 (dom.GetObject("fl_wohnzimmer").Value() == 'false') {
 var v1 = "WZ Fenster oder Tür offen";
}

if
 (dom.GetObject("fl_werkstatt").Value() == 'false') {
 var v1 = "Werkstatt offen";
}

if
 (dom.GetObject("fl_garage_hinten").Value() == 'false') {
 var v1 = "Garage hinten offen!";
}

if
 (dom.GetObject("fl_wc_unten").Value() == 'false') {
 var v1 = "Gäste-WC offen!";
}


}]

set v1 $values(v1)
Zuletzt geändert von BitMac am 07.12.2020, 16:23, insgesamt 1-mal geändert.

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Email-Addon sendet "null"

Beitrag von jp112sdl » 07.12.2020, 16:23

Man deklariert die Variable eigentlich außerhalb der Bedingungen und initialisiert sie mit einem Standardwert.
Dann kannst du durch die if gehen

Code: Alles auswählen

load tclrega.so

set Datum [clock format [clock seconds] -format "%d.%m.%Y %H:%M"];

array set values [rega_script {
var v1 = "nix offen";
if
 (dom.GetObject("fl_kueche").Value() == 'false') {
 v1 = "Küche offen";
}

if
 (dom.GetObject("fl_esszimmer").Value() == 'false') {
 v1 = "Esszimmer offen";
}
...

}]

set v1 $values(v1)

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

BitMac
Beiträge: 183
Registriert: 27.11.2015, 09:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal

Re: Email-Addon sendet "null"

Beitrag von BitMac » 07.12.2020, 16:42

Danke für deinen Hinweis.
Habe ich gleich mal dahingehend geändert.
Als Resultat wird nicht mehr null gesendet, sondern nur das Datum
und die Variable v1 bleibt leer, also auch nicht "null".

Wenn die Anzahl der if-Anweisungen aber wie ursprünglich ist,
dann geht auch dein Vorschlag.
Der Fehler äußert sich also augenscheinlich wieder in Abhängigkeit der Anzahl von if-Anweisngen.

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Email-Addon sendet "null"

Beitrag von jp112sdl » 07.12.2020, 17:32

Geht es um das Gäste-WC?

Ersetze mal das ä durch ae

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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

Re: Email-Addon sendet "null"

Beitrag von alchy » 07.12.2020, 18:57

BitMac hat geschrieben:
07.12.2020, 16:16
Wenn ich eine weitere "if-Bedingung" hinzufüge, bekomme ich als Email nur noch "null".
das kommt daher, da es das von dir angegebene Object so nicht auf deiner CCU gibt. (Schreibfehler oder ähnliches)
Daraufhin wird alles danach zu null. DAS muss nicht das Neue Objekt sein, sondern kann eines der vorhergehenden sein.

Handelt es sich bei fl_kueche, fl_esszimmer, fl_wohnzimmer, fl_werkstatt, fl_garage_hinten, fl_wc_unten um Systemvariablen Typ Logik :?:

Der Stringvergleich, den du durchführst ist nicht mehr zeitgemäß

statt

Code: Alles auswählen

if
 (dom.GetObject("fl_kueche").Value() == 'false') {
 var v1 = "Küche offen";
}
könntest du dann

Code: Alles auswählen

if  (dom.GetObject("fl_kueche").Value()) {  var v1 = "Küche offen"; }
verwenden oderzum Beispiel .ValueName() verwenden usw.
und
Dir ist bewusst, das du in v1 nicht unbedingt mitbekommst, wenn ein Fenster mehr offen steht, da immer das "letzte" gewinnt?

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.

BitMac
Beiträge: 183
Registriert: 27.11.2015, 09:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal
Danksagung erhalten: 8 Mal

Re: Email-Addon sendet "null" (gelöst)

Beitrag von BitMac » 08.12.2020, 10:25

Danke für eure Tips.
Nachdem ich alle beherzigt habe:
- Variable ausserhalb deklariert
- Syntax zeitgemäß geändert
tauchte der Fehler weiterhin auf. Nachdem ich eine if-anweisung nach der anderen rausgeschmissen habe,
konnte ich den Fehler eingrenzen, aber noch nicht lösen.
Alchy hat Recht, es liegt an einer Logikvariablen !
Diese Logikvariable verwende ich in vielen Programmscripten ohne Probleme.
Deswegen wäre ich nie drauf gekommen, das die das ist.
Ich habe sie gelöscht und neu angelegt. Jetzt funktioniert es.

Antworten

Zurück zu „Sonstige Addons“