Seite 1 von 1

Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 12:58
von mrpiper
Hallo!!

Habe mir ein direkte Verknüpfung mit meinem Schaltaktor HM-LC-Sw2-FM erstellt.
Direkte Verknüpfung.png
Ich würde gerne die Wert (Einschaltdauer/Ausschaltdauer) über ein Skript ändern um es so von meiner Visualisierung (ioBroker) zu ändern.

Geht das??

Danke im vorraus

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 14:21
von alchy
Warum nicht gleich mit der Variablen die Einschaltdauer dynamisch im Programm setzen und damit einschalten?

Alchy

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 15:03
von mrpiper
Danke an so etwas hatte ich auch schon gedacht ......

Mein Problem dabei ist nur, wie ich es mache das der Schaltaktor für eine gewisse Zeit nicht einschalten lässt!?

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 15:59
von alchy
Das war ja bisher auch nicht gefragt. :roll:
Es kommt darauf an, inwieweit du die Sperre haben willst, es gibt ja eine Sperrung bei dem Kanal.


Alchy

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 16:19
von mrpiper
Egal wie geht nur darum das sich der Aktor für X zeit nicht einschalten lässt.

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 16:59
von Xel66
Vermutlich nach dem Setzen der Einschaltzeit vergessen, den Aktor auch einzuschalten. Die Daten der Direktverknüpfung so on the fly zu ändern, wird eher nicht möglich sein, da diese Einstellungen ja in dem Aktor gespeichert werden müssen. Der erhält vom verknüpften Gerät nur den Befehl oder Status und macht dann sein eigenes Ding (Schaltbefehl) draus. Wenn man nun die Zeit ändert, muss diese Konfiguration übertragen und abgespeichert werden. Auf die Dauer ist das wahrscheinlich auch für den Speicher der Konfiguration nicht gut (ist ja schließlich ein nichtflüchtiger Speicher).

Gruß Xel66

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 17:54
von Familienvater
Hi,
mrpiper hat geschrieben:
14.01.2019, 16:19
Egal wie geht nur darum das sich der Aktor für X zeit nicht einschalten lässt.
Definiere "nicht einschalten lässt"
Mit einer zu setzenden Sperre funktioniert die lokale Bedienung und auch keine Direktverknüpfung mehr, aber per WebUI Programm oder ioBroker z.B. ist der Aktor nach wie vor schaltbar, auch wenn er "gesperrt" (INHIBIT=true) ist. Und es ist ggf. keine gute Idee 4x pro Stunde den Aktor zu sperren, und wieder zu entsperren, das kostet auch jedesmal ein Funkpaket...

Mit der Verweildauer im Zustand aus sollte der Aktor aber auch "jederzeit" wieder eingeschaltet werden können, diese Zeit ist nach meinem Verständnis nur für "im Aktor ablaufende Schleifen" (Blinklicht) interessant.

Der Familienvater

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 14.01.2019, 20:28
von mrpiper
Definiere "nicht einschalten lässt"
Durch WEBUI Programm



Zur Zeit habe ich es so gelöst:

Ich habe ein Fernwärmeheizung mit Raumthermostat das ich durch Schaltaktor HM-LC-Sw2-FM ersetzt habe. (Das ein Ventil in der Verteilerstation schaltet)


In einem Programm wird der Ventilöffnungsgrad abgefragt, der wiederum ein Variable (HZ einschalten) auf Wahr setzt.

Diese Variable schaltet den Virtuellen Taster der ..
10 min ein und 15 min ausschaltet (da nach 10 min die Heizkörper glühen)
Heizung ein.png
Die Sperre mache ich über eine die Variable die pro Minute sich um 1 erhöht.
Sperrzeit.png

Code: Alles auswählen

var sz = dom.GetObject("HZ_Sperrzeit");
var  sensor= dom.GetObject("BidCos-RF.OEQxxxxxxx6:1.STATE").Value();
    if (sensor == false){
      sz.State(sz.Value() + 1);
      
    }
Danach wird sie wieder zurückgesetzt
Sperrzeit Reset.png


Möchte das ganze so umbauen das:
Ich ein Variable für Eischaltdauer und eine für Sperrzeit habe um nicht alles verstellen zu müssen.Deswegen der Ansatz

Hallo!!

Habe mir ein direkte Verknüpfung mit meinem Schaltaktor HM-LC-Sw2-FM erstellt.
Direkte Verknüpfung.png
Ich würde gerne die Wert (Einschaltdauer/Ausschaltdauer) über ein Skript ändern um es so von meiner Visualisierung (ioBroker) zu ändern.

Geht das??

Danke im vorraus

Re: Werte von Virtueller Verknüpfung per Script ändern

Verfasst: 17.01.2019, 21:19
von mrpiper
Habe die Einschaltdauer dynamisch im Programm wie von Alchy empfohlen übernommen und noch eine dynamische Auschschaltdauer gebastelt.
Da ich erst seit ca. 4 Monaten Homematic habe , bin ich für alle Verbesserungsvorschläge offen.

System Variablen:
HZ_an_Sperrzeit_aktiv-----wahr/falsch
HZ_an_Heizzeit -------------Zeit (Zähler der abgelaufenen Zeit)
HZ_an_Sperrzeit-------------Zeit (Zähler der abgelaufenen Zeit)
HZ_an_Einschaltdauer------Zeit in Sekunden(Wie lange der Schaltaktor eingeschaltet ist) gesetzt über Programm;Skript oder IO Broker oder.....
HZ_an_Auschaltdauer-------Zeit in Minuten(Wie lange der Schaltaktor ausgeschaltet bleibt) gesetzt über Programm;Skript oder IO Broker oder.....
HZ_an_einschalten Bedingung für einschalten der Heizung (Wird bei mir von Ventilpos. der Heizkörper gesetzt)

Programm einschalten(Wie Einschaltdauer dynamisch im Programm) nur zusätzlich wird noch geprüft ob Sperrung aktiv ist und Heizzeit auf 0.01 und Sperrzeit auf 0 gestellt
Heizung an.png

Jetzt zur Sperrung:

Sobald der Schaltaktor ausgeschaltet ist wird die Variable Sperrung aktiv auf wahr gesetzt
und die Heizzeit auf 0 und die Sperrzeit auf 0.01 gestellt
Sperrung ein.png
Sperrung ein.png (19.27 KiB) 1180 mal betrachtet


Sperrung zurücksetzen:
Sperrung reset.png
Sperrung reset.png (19.58 KiB) 1180 mal betrachtet
ersten Skript:

Code: Alles auswählen

var ad =dom.GetObject("HZ_an_Ausschaltdauer").State();
var sz =dom.GetObject("HZ_an_Sperrzeit").State();


      if (sz >= ad) {

          dom.GetObject("HZ_an_Sperre_aktiv").State(false);
         dom.GetObject("HZ_an_Sperrzeit").State(0.00);
                      }
Hier wird geprüft ob die Auschaltdauer (Zeit) erreicht wurde, wenn ja wird die aktuelle Sperrzeit auf 0 gesetzt und Sperre auf falsch

zweites Skript 1 min verzögert

Code: Alles auswählen

var sz = dom.GetObject("HZ_an_Sperrzeit");
var sp =dom.GetObject("HZ_an_Sperre_aktiv").State();

   
 if (sp == true){
      sz.State(sz.Value() + 1);

    }

Solange die Variable Heizung Sperre aktiv wahr ist wird pro Minute der Zähler Sperrzeit um 1 erhöht.

Das Programm Heizzeit ist nicht erforderlich für die Sperrung dient einfach nur zur Visualisierung.
Heizzeit zähler.png
Heizzeit zähler.png (19.24 KiB) 1180 mal betrachtet

Code: Alles auswählen

var hd = dom.GetObject("HZ_an_Heizzeit");
var  sensor= dom.GetObject("BidCos-RF.Oxxxxxxx56:1.STATE").Value();
    if (sensor == true){
      hd.State(hd.Value() + 1);

    }
Läuft seit 24 Std Fehlerfrei.

Würdet ihr noch etwas anders machen oder geht es auch einfacher??