HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

HMIP Sender und Empfänger der Serie Homematic IP

Moderator: Co-Administratoren

Antworten
rentier-s
Beiträge: 381
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von rentier-s » 30.03.2024, 13:12

Hallo zusamenn,

je mehr Aktoren ich von HM auf HmIP umrüste, umso enttäuschter werde ich. Die virtuellen Kanäle und die Trennung von "Befehls-Kanälen" und Status bringt Vorteile, im Bezug auf GUI und Apps wie TinyMatic bringt es allerding einiges durcheinander.

Mich hat es zum Beispiel genervt, dass in TinyMatic immer eine falsche Behanghöhe angezeigt wird, wenn man das Rollo unterwegs angehalten hat. Das Thema wurde ja auch schon öfters hier im Forum diskutiert.

Um nicht bei jedem Rollo den Kanal 4 zum Bedienen und Kanal 3 für den Status einbauen zu müssen, habe ich mir ein Skript gebastelt, dass die Ist-Behanghöhe aller BROLLs in Kanal 4 überträgt.

Auch wenn das Skript auf meine Bedürfnisse ausgelegt ist, möchte ich es Euch nicht vorenthalten. Ich benutze die Kanäle 5 und 6 als Aussperrschutz, das heißt die werden von SWDOs auf 0% oder 100% gesetzt. Bedient werden die Rollos, per Taster, Programm oder TinyMatic, immer über Kanal 4.
Die Kanäle 4, 5 und 6 sind auf OR (höherer Wert gewinnt) gestellt.

Aufgerufen wird das Skript über ein simples Programm

Wenn
Rollo 1 Statuskanal (Kanal 3), Rollade steht, bei Änderung
Oder
Rollo 2 Statuskanal (Kanal 3), Rollade steht, bei Änderung
...
Dann
Skript verzögert um 1 Sekunde

Code: Alles auswählen

! HmIP-BROLL Kanal 4 Soll-Wert auf Kanal 3 Ist-Wert setzen
! -----------------------------------------------------------------------------------

var logging = true;

var log = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Programme_loggen");

object src_dp = dom.GetObject("$src$");

if (src_dp) {

    if (logging) { log.State(src_dp.Name() # " = " # src_dp.Value().ToString()); }

    string s_dpname = src_dp.Name();
    string s_iface = s_dpname.StrValueByIndex(":", 0).StrValueByIndex(".", 0);
    string s_dev = s_dpname.StrValueByIndex(":", 0).StrValueByIndex(".", 1);
    string s_chan = s_dpname.StrValueByIndex(":", 1).StrValueByIndex(".", 0);
    string s_dp = s_dpname.StrValueByIndex(":", 1).StrValueByIndex(".", 1);

    if (logging) { log.State("Interface " # s_iface # ", Geraet " # s_dev # ", Kanal " # s_chan # ", Datenpunkt " # s_dp # ", Wert " # src_dp.Value().ToString(0)); }

    if ((s_dp == "PROCESS") && (src_dp.Value().ToString(0) == "0")) {

        object o_chan3 = dom.GetObject(s_iface # "." # s_dev # ":3.LEVEL");
        object o_chan4 = dom.GetObject(s_iface # "." # s_dev # ":4.LEVEL");
        object o_chan5 = dom.GetObject(s_iface # "." # s_dev # ":5.LEVEL");
        object o_chan6 = dom.GetObject(s_iface # "." # s_dev # ":6.LEVEL");

        var ist_level = o_chan3.Value();
        var level4 = o_chan4.Value();
        var level5 = o_chan5.Value();
        var level6 = o_chan6.Value();

        if (logging) { log.State("Kanal 3: " # ist_level # ", Kanal 4: " # level4 # ", Kanal 5: " # level5 # ", Kanal 6: " # level6); }

        if ( (((level4 - ist_level) > 0.02) || ((ist_level - level4) > 0.02)) && (level4 >= level5) && (level4 >= level6) ) {
            if ( (((level5 - ist_level) > 0.02) || ((ist_level - level5) > 0.02)) && (((level6 - ist_level) > 0.02) || ((ist_level - level6) > 0.02)) ) {
                if (logging) { log.State("Setze " # s_iface # "." # s_dev # ":4.LEVEL" # " auf " # ist_level); }
                o_chan4.State(ist_level);
           }
        }

    }

}
Zuletzt geändert von rentier-s am 02.04.2024, 07:57, insgesamt 4-mal geändert.

Xel66
Beiträge: 14178
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 589 Mal
Danksagung erhalten: 1502 Mal

Re: HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von Xel66 » 30.03.2024, 13:35

Sprich, Du setzt die aktuelle Behanghöhe als Soll für den Kanal 4 und verzichtest somit auf die Rückkehr des Rollladens nach dem Schließen der Tür auf die vorherige Höhe. Für den Aussperrschutz an Terrassentüren etc. sicherlich zielführend und eine gute Idee. Für Fenster, die lediglich die Lüftungsstellung der Rollladen bei offenem oder gekipptem Fenster anfahren sollen, eher hinderlich. Sollte man als Nachmacher im Hinterkopf behalten und nur anwenden, wenn man simple Verknüfungen (OR, AND) der virtuellen Kanäle nutzt. Bei PLUS, MINUS, MULTI, INVERS kann das böse in die Hose gehen. Aber das nutzen vermutlich die Wenigsten und man kann es durch manuelles Setzen des Istwertes in den Kanal 4 vorher ausprobieren, ob der Rollladen sich verändert.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

rentier-s
Beiträge: 381
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

Re: HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von rentier-s » 30.03.2024, 16:30

Xel66 hat geschrieben:
30.03.2024, 13:35
Du setzt die aktuelle Behanghöhe als Soll für den Kanal 4 und verzichtest somit auf die Rückkehr des Rollladens nach dem Schließen der Tür auf die vorherige Höhe.
Der Vergleich von Kanal 4 mit Kanal 5 und 6 ziemlich am Ende des Skripts sollte dafür sorgen, dass Kanal 4 in den Fällen nicht überschrieben wird, sofern das Rollo durch Fensterkontakt oder Drehgriffsensor hoch bzw. auf Lüftungs-Höhe gefahren wurde.

Zumindest hätte ich mir das so gedacht, ausprobiert habe ich den Fall ehrlich gesagt noch gar nicht. Wenn Kanal 4 zB. auf 50% gesetzt ist und das Rollo wegen Kanal 5 auf 100% fährt, sollte level4>=level5 nicht zutreffen. Also bleibt Kanal 4 auf 50% und das Rollo sollte dort hin zurück fahren, wenn Kanal 5 auf 0% geht.

Edit: getestet und funktioniert wie erwartet. Wenn man nicht möchte, dass das Rollo beim Schließen des Fensters runter fährt, kann man einfach davor kurz auf die nach-oben-Taste am BROLL drücken, dadurch geht Kanal 4 auf 100%.

Xel66 hat geschrieben:
30.03.2024, 13:35
Sollte man [...] nur anwenden, wenn man simple Verknüfungen (OR, AND) der virtuellen Kanäle nutzt.
Ja, gut dass Du das ansprichst. Hatte ich vergessen dazu zu schreiben, ist jetzt ergänzt.


Verbesserungsvorschläge sind übrigens explizit erwünscht! Ist ja schließlich ein Forum.
Zuletzt geändert von rentier-s am 02.04.2024, 07:55, insgesamt 1-mal geändert.

Matsch
Beiträge: 5455
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von Matsch » 30.03.2024, 17:17

Hast du das praktisch schon mal probiert?
Jedes Setzen eines Kanals 4...6 triggert den Aktor und oft ruckt der Antrieb kurz, auch wenn die Position unverändert bleibt. So jedenfalls meine eigenen Erfahrungen - nicht sehr hilfreich.

rentier-s
Beiträge: 381
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

Re: HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von rentier-s » 30.03.2024, 21:46

Matsch hat geschrieben:
30.03.2024, 17:17
Jedes Setzen eines Kanals 4...6 triggert den Aktor und oft ruckt der Antrieb kurz, auch wenn die Position unverändert bleibt.
Anfangs hatte ich die Höhen gerundet, da kam es tatsächlich vor, dass der Motor nochmal kurz gezuckt hat. Deshalb habe ich sie als Float gelassen und die 2% Hysterese eingebaut, seitdem zuckt nichts mehr.

Beobachtungen haben gezeigt, der Statuskanal kann Komma-Werte annehmen, die im WebUI aber nicht angezeigt werden. Wenn man dann einen ganzzahligen Wert setzt, fährt das Rollo um die 0,xx Prozent.

Matsch
Beiträge: 5455
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von Matsch » 02.04.2024, 10:09

rentier-s hat geschrieben:
30.03.2024, 21:46
Beobachtungen haben gezeigt, der Statuskanal kann Komma-Werte annehmen, die im WebUI aber nicht angezeigt werden. Wenn man dann einen ganzzahligen Wert setzt, fährt das Rollo um die 0,xx Prozent.
Ich weiß jetzt nicht, wie du auf die Idee kommst, man könne ganzzahlige Werte setzen?
Laut Definition haben die Soll- und Istwerte des BROLL einen Wertebereich von 0,0 ... 1,02.
D.h. per se, es sind immer Float-Zahlen, anders geht es gar nicht.

Meine Beobachtungen des Anruckens trotz identisch gleicher Werte sind aber zugegeben schon ein paar Jahre her, als ich mich damit beschäftigt habe. Es kann sein, dass dieses Thema tatsächlich mal inzwischen in der Firmware geändert wurde - was mich allerdings schon verblüffen würde.
Bei einem ersten schnellen Test eben trat das mir sattsam bekannte Rucken nicht mehr auf. Bin mir aber nicht sicher, ob ich auch die korrekte Anwendungssituation getestet habe. Schau ich mir aber demnächst auch nochmal an.

rentier-s
Beiträge: 381
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

Re: HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von rentier-s » 02.04.2024, 11:13

Matsch hat geschrieben:
02.04.2024, 10:09
Ich weiß jetzt nicht, wie du auf die Idee kommst, man könne ganzzahlige Werte setzen?
Laut Definition haben die Soll- und Istwerte des BROLL einen Wertebereich von 0,0 ... 1,02.
OK, ich spezifiziere die Ausdrucksweise :roll:

Im WebUI werden ganzzahlige Prozent (0%...100%) angezeigt und man gibt Soll-Werte auch als solches ein. Technisch wird mit 0,0000...1,0200 (in der Praxis 0,0000...1,0000) gerechnet.

Dabei kann es vorkommen, dass im WebUI 83% angezeigt werden, der Kanal 3 Level Datenpunkt aber tatsächlich auf 0,8321 steht. Setzt man im WebUI nun 83%, oder im Skript 0,83, fährt der Motor die -0,21%.

Setzt man Kanal 4/5/6 per Skript auf den exakten Float Wert aus Kanal 3, passiert nichts. Trotzdem zusätzlich 2% Toleranz, weil auf 5cm hin oder her kommt es mir, im Falle von Behanghöhen bei Rollläden jedenfalls, nicht an.

Matsch
Beiträge: 5455
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: HmIP-BROLL korrekte Anzeige Behanghöhe in Kanal 4

Beitrag von Matsch » 02.04.2024, 11:37

rentier-s hat geschrieben:
02.04.2024, 11:13
Setzt man Kanal 4/5/6 per Skript auf den exakten Float Wert aus Kanal 3, passiert nichts.
Doch, bei mir ist das (bisher) so gewesen. Ich lese per Script den Datenpunkt aus Kanal 3 aus (also per se als real) und schreibe ihn so in den Sollwertkanal ein (bei mir Kanal 6) - und es ruckt.
Aber wie gesagt, noch nicht ausführlich getestet mit der aktuellen Firmware, das mache ich noch.

PS:
Habe es getestet. Tatsächlich wurde hier in der Firmware (1.10.16) zwischenzeitlich was verändert, so dass bei Gleichheit des neuen Sollwertes mit dem Istwert jetzt kein Anrucken mehr passiert (Toleranzfenster eingebaut?).

Antworten

Zurück zu „HomeMatic IP Aktoren und Sensoren“