Listen und Sortieren
Moderator: Co-Administratoren
Listen und Sortieren
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
- 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
-
- Beiträge: 7151
- Registriert: 31.12.2006, 15:18
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Rhein-Main
- Danksagung erhalten: 35 Mal
Re: Listen und Sortieren
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
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
- Herbert_Testmann
- Beiträge: 11062
- Registriert: 17.01.2009, 11:30
- Danksagung erhalten: 7 Mal
Re: Listen und Sortieren
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 ?
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
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig
Re: Listen und Sortieren
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
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!
Re: Listen und Sortieren
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
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
- Herbert_Testmann
- Beiträge: 11062
- Registriert: 17.01.2009, 11:30
- Danksagung erhalten: 7 Mal
Re: Listen und Sortieren
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
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
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig
Re: Listen und Sortieren
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:
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
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 := ""
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
- Herbert_Testmann
- Beiträge: 11062
- Registriert: 17.01.2009, 11:30
- Danksagung erhalten: 7 Mal
Re: Listen und Sortieren
[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.
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
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig
-
- Beiträge: 7151
- Registriert: 31.12.2006, 15:18
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Rhein-Main
- Danksagung erhalten: 35 Mal
Re: Listen und Sortieren
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
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
Re: Listen und Sortieren
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:
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.
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
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.