Die Programmierung einer Rolladen-Steuerung auf der Homematic CCU2 lernen - Grundlagen und praktisches Beispiel
Achim hat eine Frage zur automatischen Steuerung seiner Rolladen. Sie sollen morgens zu einer bestimmten Zeit hochfahren und abends erst nach Sonnenuntergang herunterfahren, wenn eine bestimmte Temperatur unterschritten wurde. Die Beantwortung dieser Frage nehme ich zum Anlass, meine Art der praxistauglichen Programmierung der CCU2 zu erklären und an diesem Beispiel vorzuführen!
Transcript:
Achtung! Es folgt eine Dauerwerbesendung mit Produktplatzierungen und Produkthilfe! Moin, Hallo und herzlich Willkommen! Ich bin der dicke Dirk und du guckst eine neue Folge aus dem Bereich Smart Home / Homematik. Heute geht es um die Programmierung der Homematic. Es gibt verschiedene Möglichkeiten, die CCU2 zu programmieren. Zum einen hat sie ja diese grafische Programmieroberfläche und zum anderen hat sie ja diese Skriptsprache, die ziemlich nahe an c angelehnt ist. Ist auch kein Wunder, die CCU2 ist ja letztendlich ein Unix Rechner. Meine Art zu programmieren auf der CCU2 ist über die grafische Oberfläche, weil ich möchte gerne, dass du diese Programmierung leicht nachvollziehen kannst. Wenn man erst Programmieren lernen muss, um ein Smart Home-Gerät oder die Homematic zu programmieren, dann ist es schwierig und wahrscheinlich nicht für jeden etwas. Ich versuche dir hier eine einfache Möglichkeit über die grafische Oberfläche zu zeigen, die CCU2 zu programmieren, so dass sie, ich sag mal so 80 Prozent dessen abdecken kann, was man eigentlich so von der automatischen Haussteuerung möchte. Aber das ist meine Art. Meine Art basiert auf über 20 Jahren Programmiererfahrung, meine Art basiert darauf, zu gucken, dass Programme pflegbar sind. Natürlich können wir bei der CCU2 verschachtelte Programme aufbauen! Wir können das auch auf der grafischen Oberfläche sehr sehr groß und sehr umfänglich aufbauen, aber das ist dann sehr schlecht zu warten! Denn was passiert, wenn so ein Programm ein halbes Jahr durchläuft und dann fällt ihr ein: Och, ich möchte etwas ändern oder du veränderst ein Gerät oder fügst was hinzu? Dann musst du dich erst wieder rein denken! Was habe ich mir damals überlegt? Warum habe ich das gemacht? Ich versuche dir eine Möglichkeit zu zeigen, einfach und unkompliziert und vor allen Dingen gut pfleg- und wartbar kleine Programme zu schreiben, die miteinander vernetzt sind, verknüpft sind und so die Bedürfnisse und Wünsche abdecken, die du an die CCU2 oder an Hausautomation an sich hast! Und wie geht das so einfach? Na ja, einfach halt! Es gibt dann drei verschiedenen Strukturen: Die erste Struktur, das sind die Triggerprogramme, also die Programme, die etwas auslösen sollen, die auf bestimmte Situationen reagieren, auf bestimmte Temperaturen zum beispiel oder auf bestimmte Zeiten oder ähnliches. Dann brauchen wir eine Schnittstelle, weil das Triggerprogramm soll nicht die ganze Aktion ausführen. Die Schnittstelle sind die System- variablen. Das sind in aller Regel boolsche Variablen und die nehmen genau zwei Werte an. Und dann gibt es noch die Arbeiter. das sind die Programme, die die boolschen Variablen abfragen und daraufhin die ganze Arbeit erledigen. Wir machen das jetzt an einem praktischen Beispiel von Achim. Achim möchte nämlich erstens, dass seine Rollos zu einer definierten Uhrzeit morgens hochfahren und zweitens möchte er gerne, dass seine Rollos nur runter fahren, wenn die Astrozeit, also Abends erreicht ist und wenn eine bestimmte Temperatur unterschritten wird. Wenn die Temperatur nicht unterschritten wird, sollen die Rollos offen bleiben. Und das programmieren wir jetzt so jetzt! Jetzt sind wir auf unser Arbeitsoberfläche und dann geht's los! Zuerst brauchen wir die Systemvariablen! Also Einstellungen-> Systemvariablen. Jetzt legen wir eine neue Systemvariable an und die nennen wir TestRolloZustand. Naja und die Beschreibung ist: Sie beschreibt halt den Rollozustand. Ok! Als Wertebezeichnung wählen wir einmal hoch für hochgefahren und einmal runter für runtergefahren. Ok! Gespeichert! Jetzt können wir loslegen mit unserem programm! Wir brauchen drei Programme, die die Variablen triggern. Also auf "neu" klicken Das erste Programm nennen wir TestRollosMorgensHoch. Achim hatte ja gesagt: Zu einer bestimmten Uhrzeit sollen die Rollos morgens hochgefahren werden. Kurze Beschreibung dazu, ich mache das auch nur einmal und nicht bei jedem Programm, aber es hilft halt enorm, wenn man längere Zeit später hat die Programme noch mal anguckt eine Beschreibung zu haben, die sagt, was es tut. Dieses hier fährt morgens das Rollo hoch. Jetzt kommt die Bedingung! Achim hatte gesagt: Zu einer definierten Uhrzeit soll das passieren! Also Zeitsteuerung-> Zeitmodul, dann den Zeitpunkt anklicken die Uhrzeit wählen. Ich sag mal 8 Uhr und bestätigen. Alles andere können wir so lassen und es soll zu dem Zeitpunkt auslösen. So, was soll passieren? Unsere Systemvariable, systemzustand-> Systemvariable, dann die Variable auswählen, soll sofort auf den Zustand "hoch" gesetzt werden! TestRolloMorgensHoch, Zeitsteuerung, zum Zeitpunkt 8 Uhr auslösen, unsere Systemevariable sofort auf "hoch" setzen! Ok und speichern mit ok. So, jetzt kommen die nächsten zwei Programme und die sind ein kleines bisschen trickyger. Hier unten ist unser Programm von eben. Jetzt einmal auf "neu". So, jetzt brauchen wir ein Programm, Achim hatte gesagt, die Rollos sollen runter fahren, wenn "abends" erreicht ist und dann nur runter fahren wenn eine bestimmte Temperatur erreicht ist. Also: wir gehen wieder auf Zeitsteuerung-> Astrofunktion->Nachts. Alles andere lassen wir es ist! Täglich ist sowieso eingestellt, jeden Tag ist sowieso eingestellt, Gültigkeitsdauer beginnt heute. So, täglich, Zeitsteuerung täglich nachts beginnend am und jetzt "zu Zeitpunkten auslösen" nämlich eben nachts und jetzt kommt die zweite Bedingung, dass geht um die Temperatur und jetzt brauchen wir noch ein Thermometer! Also "Geräteauswahl", dann suchen wir das Thermometer raus. So da ist unser Außenthermostat bei, Temperatur ist richtig, jetzt aber nicht "im Wertebereich" sondern "kleiner als". Achim, ich nehme einfach mal 20 Grad. Du kannst dann ja gerne etwas anderes hier eintragen. Kleiner 20 Grad! Ok, und jetzt aber nicht "bei Änderung auslösen", sonst hätten wir hier zwei Trigger, die etwas auslösen. Wir wollen hier gerne prüfen! Also, wenn der Zustand zuerst eintritt, dass abends ist, aber die Temperatur noch nicht 20 Grad unterschritten hat, dann wollen wir da nur prüfen! Jetzt kommt die Aktivität, nämlich unsere System- variable TestRollo sofort in den Zustand "runter" versetzen. So, noch mal eben: Zeitsteuerung "nachts" zu Zeitpunkt auslösen, Geräteauswahl Thermo Ost, die Temperatur kleiner als 20 Grad, aber hier nur "prüfen". Also, wenn die Situation eintritt: Es ist nachts, dann wird geprüft: ist die Temperatur kleiner 20 Grad. Wenn nicht, passiert nichts! Wenn doch, wird der Systemzustand sofort auf "runter" gesetzt. Ok, und das ganze speichern! Jetzt wieder ab nach unten. Da unten ist unser Programm uhrzeitgesteuert oder uhrzeitgetriggert. Jetzt machen wir folgendes: Wir machen uns das Leben einfach! Wir öffnen es noch einmal und speichern es sofort als neues Programm! Mir passiert es nämlich andauernd, dass ich sonst die Programme überschreibe. Man erkennt es mit an der 1 am Ende. Jetzt ändern wir den Namen, weil es jetzt nicht uhrzeitgetriggert ist, sondern temperaturgetriggert ist, auf "runter temperatur". Hier verändern wir nur auf "nur prüfen", ob Nacht ist und "bei Änderung", also wenn es kleiner 20 Grad ist, soll ausgelöst werden. Also, angenommen es war Nacht und noch keine 20 Grad, dann passiert nichts. Jetzt ist 20 Grad unterschritten, unser Programm springt an, prüft ob Nacht ist und würde jetzt unseren systemzustand sofort auf "runter" setzen und mit ok bestätigen. Fertig! Das sind die drei Triggerprogramme, die unsere variable TestRolloZustand steuern. Jetzt brauchen wir noch die Arbeiter! Also einmal auf "neu", ein neues Programm und zwar brauchen wir eins, dass die Rollos hochfährt. Das nenne ich TestWohnzimmer, weil wir das hier pro Raum machen können! RollosRunter ... Na gut, fangen wir mit dem Runter-Programm an! Wir prüfen unseren Systemzustand unserer Systemvariablen. Da ist sie "Auswahl", darunter "Bei Änderung auslösen". Das heißt, wenn der Systemzustand von "hoch" auf "runter" umschaltet, dann soll das Programm starten. Nicht "bei Aktualisierung"! Es kann öfter passieren, dass es mit "runter" aktualisiert wird. Wir wollen dass Veränderung, also wenn es um schaltet von "hoch" auf "runter". So, dann, und jetzt wählen wir unsere Rollladen- Schaltaktoren aus. In diesem Fall für's Wohnzimmer, das müsste ungefähr hier sein, so, wohnzimmertür-> sofort-> Behanghöhe und jetzt 0 Prozent herunterfahren. So, dann haben wir ein zweites Rollo im wohnzimmer: Geräteauswahl, jetzt geht es wieder los, das Rollo suchen ... irgendwo hier unten, Wohnzimmerfenster und jetzt nicht "sofort" sondern "verzögert um zehn Sekunden", damit der Anlaufstrom aller Rollos nicht gleichzeitig das Wohnzimmer belastet. Behanghöhe 0% und wir haben ein drittes Rollo im Wohnzimmer! Wieder auf "Geräteauswahl" und wieder runter "Wohnzimmer kleines Fenster", diesmal verzögert um 20 sekunden und wieder die Behanghöhe auf 0 Prozent! So, das war's schon! Also, wenn der Systemzustand unserer System- Variablen auf "runter" switched, von "hoch" auf "runter", dann wäre dieses kleine Programm abgespult und alle drei werden runtergefahren, mit ok bestätigen. So, jetzt machen wir uns das Leben wieder einfach: Wir nehmen wieder unser Programm von eben, dass die Rollos runter fährt, bearbeiten das, speichern das sofort als neues Programm gehen wieder ganz nach unten in unserer Liste. Da steht es dann mit der 1 am Ende und bearbeiten es wieder und jetzt benennen wir es schnell um und nennen es nicht "runter", sondern "hoch" So, jetzt gucken wir Systemzustand unser Systemvariablen diesmal nicht bei "runter", sondern bei "hoch"; das heißt, wenn es umswitched von "runter" auf "hoch", dann soll die Behanghöhe verändert werden. Wir brauchen nicht alles neu programmieren; wir brauchen jetzt nur die 100% eingeben für komplett hochfahren und fertig! Damit haben wir das Wohnzimmer gesteuert und so können wir das für alle anderen Räume auch machen und EINZELNE Programme dafür anlegen. Dann können wir hinterher auch EINZELNE Programme verändern. Dreimal Triggerprogramm, die Schnittstelle ist die System- variable und zweimal Arbeitsprogramm. Und das können jetzt Arbeitsprogramme werden, so viel wie es Räume sind und man kann zusätzlich Arbeitsprogramme, zum Beispiel für die Beleuchtung einbauen. Alle greifen auf den auf die System- variable des Rollozustands zu und wir haben in jedem Programm jeden Befehl nur einmal drin. Vielen Dank, dass du zu geschaut hast! So Programmiervideos sind ja immer so ein bisschen trocken. Danke, dass du durch gehalten hast! Ich hoffe, es hat dir geholfen! Ich hoffe, du kannst mit dieser Art zu programmieren, relativ einfach gute Programme erstellen, die sich auch hinterher super pflegen lassen, so dass du dich nicht irgendwann darüber ärgern musst, eine Homematik CCU2 oder wie auch immer das Smart-Homesystem heißt, zu nutzen und wir haben den Vorteil: Wir können das ohne irgendwelche Programmiersprachenkenntnisse machen, sondern klickern uns das einfach auf der grafischen Oberfläche zusammen. Wenn es dir gefallen hat, würde ich mich über den Daumen hoch freuen, wenn du jemanden kennst, der das vielleicht auch wissen möchte: Teile doch einfach das Video und ansonsten würde ich sagen: Vielen Dank für deine Zeit, Moin, Tschüß und bis bald! Das war eine Dauerwerbesendung mit Produktplatzierungen und Produkthilfe!