Seite 1 von 2

HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 08.04.2021, 15:24
von ChrisLi
Tach,
ich habe meinen HM-Sec-SCo (war defekt) durch einen HmIP-SWDO-I ersetzt.
vorher hatte ich in einem Programm bei "geschlossen" "bei Änderung auslösen" ein script gestartet.

Nun startet das script noch immer, aber bei "offen" " bei Änderung auslösen".

Funktioniert zwar, aber es irritiert mich, denn wenn die Türe geöffnet wird, soll das script starten, startet aber erst wenn die Tür geschlossen wird (bei Einstellung "geschlossen"...)

so funktioniert es richtig, aber die Anzeige (Einstellung) ist eigentlich falsch.
1.jpg

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 08.04.2021, 15:37
von Gluehwurm
Und die Geräteeinstellung hast Du kontrolliert?

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 08.04.2021, 17:02
von ChrisLi
Geräteeinstellung stimmt.
Türe auf/zu wird richtig angezeigt.

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 08.04.2021, 21:25
von Gluehwurm
Programm löschen und neu anlegen (nicht kopieren).

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 09.04.2021, 09:04
von ChrisLi
Gluehwurm hat geschrieben:
08.04.2021, 21:25
Programm löschen und neu anlegen (nicht kopieren).
Gerade erledigt. Keine Änderung :(

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 09.04.2021, 09:21
von Daimler
Dann zeige mal das Script.

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 09.04.2021, 10:06
von ChrisLi
Daimler hat geschrieben:
09.04.2021, 09:21
Dann zeige mal das Script.
var prgObj = dom.GetObject(ID_PROGRAMS).Get("Aussenlicht 8 min an");
if ( prgObj.Active() ) {
WriteLine("Aussenlicht 8 min an aktiv");
prgObj.ProgramExecute();
} else {
WriteLine("Aussenlicht 8 min an inaktiv");
}

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 09.04.2021, 11:06
von jmaus
ChrisLi hat geschrieben:
09.04.2021, 10:06

Code: Alles auswählen

var prgObj = dom.GetObject(ID_PROGRAMS).Get("Aussenlicht 8 min an");
if ( prgObj.Active() ) {
  WriteLine("Aussenlicht 8 min an aktiv");
  prgObj.ProgramExecute();
} else {
  WriteLine("Aussenlicht 8 min an inaktiv");
}
Du rufst nicht wirklich aus einem Program ein anderes auf, oder? Das ist IMHO eine ganz schlechte Idee, denn ProgramExecute() wartet darauf das das andere Program fertig wird. Es ist also eine ganz schlechte Idee zu versuchen mittels Skriptbefehl ein anderes Programm zu triggern. Das führt nur zu ungewollten Nebenwirkungen. Ist leider eine bekanntes Shortcoming in ReGaHss und deshalb ist das ProgramExecute() auch nicht in der offiziellen Dokumentation so als für Otto-Normal-Verbraucher nutzbare Funktion hinterlegt.

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 09.04.2021, 11:28
von Xel66
jmaus hat geschrieben:
09.04.2021, 11:06
Du rufst nicht wirklich aus einem Program ein anderes auf, oder? Das ist IMHO eine ganz schlechte Idee, denn ProgramExecute() wartet darauf das das andere Program fertig wird.
Sowas findet man öfter hier. Ich halte es auch für einen ganz schlechten Programmierstil, die Programme lediglich als Container für die auszuführenden Aktionen zu missbrauchen. Vermutlich ist den Leuten die Funktion der virtuellen Tasten unbekannt (zumal man damit auch noch weitere Bedingungen verknüpfen könnte). Da werden auf "Teufel komm raus" irgendwelche Abläufe zusammengeschustert und am Ende wundern sich die Leute, warum die CCU auf der Nase liegt. Aber jeder versaut sich sein System so gut er kann. Die Krönung wäre noch, wenn das aufgerufene Programm noch irgendwelche externen (in dem Moment vielleicht nicht erreichbaren) Server abfragt. Dann steht die ganze Kiste.

Gruß Xel66

Re: HM-Sec-SCo durch HmIP-SWDO-I ersetzt --> falsches verhalten

Verfasst: 09.04.2021, 16:02
von ChrisLi
Habs geändert,
hat aber keine Änderung gebracht :?: