Listen und Sortieren

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

ahennecke
Beiträge: 55
Registriert: 03.11.2010, 15:02
Hat sich bedankt: 1 Mal

Listen und Sortieren

Beitrag von ahennecke » 19.08.2016, 14:37

Hallo allerseits, nach längerer homeputer-Abstinenz bin ich mal wieder an einem Projekt: Das Timing meiner Rollladensteuerung ist teilweise sehr kurz gewählt. Dabei kommt es immer wieder zu Kommunikationsfehlern. Zusätzlich soll es von außen so aussehen, als ob jemand durch's Haus geht und die Rollläden einzeln ansteuert. Ich denke dabei an eine Lösung, bei der die Rollläden etagenweise

- je Etage
- in einer zufälligen Reihenfolge
- mit einem zufälligen Zeitabstand, z.B. 10 sec + Zufallszeit("00:00:10") angesteuert werden sollen.

Im Forum habe ich nichts passendes zu Listen oder Sortierfunktionen gefunden.
Meine grobe Vorstellung zur Umsetzung:

- Jedem Aktor eine Zufallszahl zuweisen und in einer Liste speichern, Format: Zahl;Aktorname
- Die Liste nach der Zufallszahl sortieren.
- Ansteigende Zufallszeiten generieren und an die Aktoren in der Reihenfolge der Liste übergeben.
- Ausführen! Einzelne Makros warten jeweils die berechnete Zeit ab, bevor sie "ihren" Aktor ansteuern.

Wie würde man das prinzipiell mit der homeputer realisieren?
Man könnte den Umweg über ein Linux-Skript gehen. Das finde ich aber wenig elegant.

Und off topic: Gibt es eine Empfehlung in Bezug auf den Update von Puppy-Linux? Das ist bei mir auch schon fünf Jahre alt.

Gruß
Andreas

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Listen und Sortieren

Beitrag von Familienvater » 24.08.2016, 12:01

Hi,

mit viel Arbeit ist das wahrscheinlich möglich, richtige Listen/Arrays werden ja nicht von Homeputer unterstützt. Man kann da mit den vorhandenen Stringfunktionen teilweise ganz gute Resultate erzielen, aber ein Makro zum Sortieren einer Liste stelle ich mir gerade ziemlich aufwändig vor.
Zufallszeiten zwischen den Starts der einzelnen Rolläden würde ich mir noch gefallen lassen, aber wie würdest Du denn durch die Wohnung laufen zum Steuern der Rolläden? Doch sicher nicht von der Ost-Wand zur West-Wand, dann mal ein Rolladen auf Nord, dann wieder West, Ost.
Ich würde eher an einer Wand "entlang" gehen, und dann einen Rolladen nach dem anderen hochfahren, und dann evtl. zwischen dem Fahren einen Zufallsanteil rein. Und das ganze dann sequentiell ein einem Makro nacheinander.

Der Familienvater

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: Listen und Sortieren

Beitrag von Herbert_Testmann » 24.08.2016, 16:38

Hallo

ich habe die Rollläden in einem Makro nacheinander programmiert. So als wenn jemand Raum für Raum durch das Haus laufen würde und mit entsprechenden Pausen die Funkkollisionen berücksichtigt.
Nachteil an der Sache ... bei über 20 Fenstern dauert die ganze Aktion 10...15 min. Ausserdem nervt das Geräusch der fahrenden Rollladen immer wieder über die ganze Zeit. Schlecht für die Nachbarn und auch einen selbst, wenn das Fenster offen ist und man seine Ruhe haben will.

Mit einer virtuellen Taste kann ich alle Fenster pro Etage zeitgleich hoch oder runter fahren. Ich überlege, ob ich das auch immer morgens und abends so mache.
Ob ich (angeblich) durch das Haus laufe und alle Fenster einzeln starte oder durch einen Schalter pro Etage zu mache, kann dem Beobachter doch auch egal sein. Ich weiss nicht ob die Einzelsteuerung so viel besser eine Anwesenheit simuliert ?
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: Listen und Sortieren

Beitrag von Homoran » 24.08.2016, 16:43

Hallo Herbert,
Was die Anwesenheitssimulation angeht, bin ich der Meinung, dass meine Rollläden automatisiert sind kann jeder ruhig sehen.
Sie verhalten sich aber genau so, ob ich zu Hause bin, oder nicht.

Daher ist für einen "Beobachter" anhand der Fahrzeiten nicht zu erkennen, wenn ich nicht zu Hause bin.

Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

ahennecke
Beiträge: 55
Registriert: 03.11.2010, 15:02
Hat sich bedankt: 1 Mal

Re: Listen und Sortieren

Beitrag von ahennecke » 24.08.2016, 21:54

Hallo Rainer, hallo Herbert,

danke für die sachdienlichen Hinweise. Ich werde es dann wohl ähnlich machen, und eine sequentielle Reihenfolge von Hand programmieren. Wobei ich schon denke, dass die Rollläden gestaffelt auch parallel fahren dürfen, z.B. alle fünf Sekunden einer. Dann würde ich damit rechnen, dass die Kommunikationsausfälle überschaubar sind. Bei mir fahren ca. 20 Rollläden nach einer Zufallszeit 0...20 sec gestaffelt und ca. einmal die Woche fährt mal einer nicht.

Ich probiere eine feste Reihenfolge mit dem Fahrkommando gestaffelt alle 5 Sekunden und werde berichten.

Viele Grüße
Andreas

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: Listen und Sortieren

Beitrag von Herbert_Testmann » 25.08.2016, 19:18

Hallo

wenn Du alle 5 sec startest und eine Fahrzeit von 20 sec hast, dann gibt es nach dem vierten Start eine Kollision mit der ersten "bin unten" Rückmeldung. Ganz so einfach ist das nicht :)
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

ahennecke
Beiträge: 55
Registriert: 03.11.2010, 15:02
Hat sich bedankt: 1 Mal

Re: Listen und Sortieren

Beitrag von ahennecke » 04.09.2016, 21:15

Hallo allerseits, vielen Dank für die Anregungen und Antworten. Ich habe jetzt folgende Lösung als Test implementiert:

Die Rollladen werden jeweils über ein eigenes Makro angesteuert.
Die Rollladenmakros werden in einer festen Reihenfolge aufgerufen.
Wenn dieses einen "Fahrbedarf" erkennt, dann holt es sich eine Wartezeit nach dem im Code gezeigten Rezept.
Die Wartezeiten sind stetig steigend zwischen 1 und 5 Sekunden.

Es handelt sich um eine Integer Variable namens "RollladenZeitVerz", die sich selbst bei jedem Aufruf neu setzt:

Code: Alles auswählen

//! ============================================================
//! VARIABLENDEFINITIONEN
//! ============================================================
//! NAME                TYP                 STARTWERT
//! ------------------------------------------------------------
//! debug               Zeichen
//! delay               Uhr                 00:00:00
//! ii                  Uhr


// Erzeugt stetig steigende Abfahrtszeiten für Rollläden
// Wird aus *_ROL_MAC heraus aufgerufen

wenn schaltdauer(RollladenZeitVerz) > 10 und delay > "00:00:00" dann
  delay := "00:00:00"
sonst
  ii := zufallszeit("00:00:20")
  ii := ii / 5
  delay := delay + ii + "00:00:01"
endewenn

RollladenZeitVerz := delay

debug := debug + "delay/ii/RollladenZeitVerz: " + delay + "/" + ii + "/" + RollladenZeitVerz + " at: " + uhrzeit + "; "
schreibedatei ("flashdrive/sonne.txt", debug, 2)
debug := ""
Nach zwei Versuchen heute abend kommen alle Rückmeldungen sauber zurück. Ich werde mögliches Fehlverhalten beobachten und berichten.

Gibt es mittlerweile einen Weg in Homematic, den Status "Rollladen in Fahrt" abzufragen? Dafür habe ich mir eine eigene Routine geschrieben, die jetzt ebenfalls getestet wird.

Viele Grüße
Andreas

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: Listen und Sortieren

Beitrag von Herbert_Testmann » 05.09.2016, 12:42

[quote="ahennecke"
Gibt es mittlerweile einen Weg in Homematic, den Status "Rollladen in Fahrt" abzufragen?

Andreas[/quote]

Hallo

Meinst Du "Homematic" oder "Homeputer" ?
In der Homematic sollten die Geräte einen Datenpunkt "Working" haben.
Aus Homeputer kommst Du da so einfach nicht ran.
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Listen und Sortieren

Beitrag von Familienvater » 05.09.2016, 13:06

Hi,

wie Herbert schreibt, aktuell einfach nur über WebUI/Homematic-Script.
Mit der seit "Quartalen" versprochenen Homeputer-Funktion "Holewert" wäre es kein großes Problem.

Workarounds:
1. Solange es um "normale" Vollfahrten Auf/Zu geht, kann man selbst die Zeit ungefähr mitrechnen. Aber das ist ggf. mehr Aufwand als es nutzen bringt.
2. Da auf den WORKING-Datenpunkt laut Doku per Event zugegriffen werden kann, könnte man da eine "Pseudo-Kommunikation" zwischen WebUI und HPCL hinfummeln, und die WebUI z.B. per virtuellen Tastendrücken in HPCL Events auslösen lassen, verbraucht aber min. eine komplette virtuelle Taste pro Rolladen (z.B. lang -> WORKING=TRUE, kurz -> WORKING=false).

Der Familienvater

ahennecke
Beiträge: 55
Registriert: 03.11.2010, 15:02
Hat sich bedankt: 1 Mal

Re: Listen und Sortieren

Beitrag von ahennecke » 17.09.2016, 19:42

Hallo allerseits,

danke für das Update auf Rollladenfahrten. Im Syslog war mir ein Eintrag bei Rollladen aufgefallen, der den Status "aktiv" darstellen könnte.

Das Thema Fahrt abschätzen habe ich mir auch überlegt und recht trivial gelöst. Fährt ein Rollladen los, ob händisch oder automatisch in Gang gesetzt, setze ich eine Variable. Das Automatik-Skript:

Code: Alles auswählen

wenn EG_AK_ROL_AINH = 0 dann  // Auto Inhibit!
  aufrufen(EG_AK_ROL_MAC)
sonst
  wenn schaltdauer (EG_AK_ROL_AINH) > 60 dann
    debug := debug + "EG_AK_ROL_AINH => reset: " + schaltdauer (EG_AK_ROL_AINH) + "; "
    EG_AK_ROL_AINH := 0
    aufrufen(EG_AK_ROL_MAC)
  endewenn
endewenn
Diese Unterdrückung funktioniert. Sie funktioniert dann aber auch, wenn man den Rollladen sofort ein zweites Mal über die Automatik fahren will. Dann wird das auch unterdrückt.

Ein Update auf die zeitliche Staffelung: Das funktioniert "ziemlich" gut. 20 Rollladen erhalten ihre Kommandos in ca. 90 Sekdunen. Beobachtung: Alle zwei Tage kommt es vor, dass die Rückmeldung vom Rollladen über das Ende der Fahrt nicht im Homeputer ankommt. Das ist aber unabhängig von der Anzahl Rollladen die fahren. Beispielsweise wenn nur ein oder zwei Rollladen fahren. Es scheint auch sonst reichlich Kolllisionen zu geben. Deswegen wurden die neueren Rollladenaktoren vermutlich in die Lage versetzt mehrfach zu senden, was aber auch nicht wirklich hilft bei einer Physik, die Kolllisionen nicht erkennen kann. Schade.

Wenn man den Wert aus dem Gerät direkt pollen könnte, könnte man einen Work-Around schreiben. Gefällt mir aber nicht: Auf dem Applikation Layer Funktionen des Kommunikationslayers implementieren... :( Schade.

Viele Grüße
Andreas

PS: Vielleicht sollten wir das Thema des Threads um das Wort Rollladen ergänzen, damit man's leichter zuordnen kann.

Antworten

Zurück zu „homeputer CL“