Scrady
Konstanten und Variablen funktionieren in der Domovea wie in anderen Programmiersprachen oder Skriptsprachen auch.
Hier also mal ein kleines Konstanten- und Variablen-Tutorial:
1.
alle Konstanten und Variablen sind immer global, d.h. sie gelten in allen Sequenzen. Wird eine Variable in einer Sequenz verändert, so gilt die Änderung auch in den anderen Sequenzen sofern dort diese Variable ebenfalls verwendet wird.
2.
der Inhalt von Variablen bleibt auch nach einem Neustart der Domovea erhalten.
3.
Domovea Sequenzen laufen gleichzeitig, parallel zueinander ab.
Die Variablen sind dabei nicht geschützt. Man kann zwar den Inhalt von Variablen in mehreren Sequenzen gleichzeitig auslesen, aber wenn man im gleichen Moment den Inhalt der Variable verändert, kann das zu einem Fehlerabbruch einer oder mehrerer Sequenzen führen. Es gibt Strategien, sich davor zu schützen. Wie das im Detail geht, würde hier jetzt zu weit führen.
Mit fehlerhaften Abbrüchen von Sequenzen muss man übrigens bei der Domovea immer mal rechnen. Deshalb sollten kritische Funktionen (wie Heizungssteuerung oder Alarmanlage etc.) möglichst nicht in der Domovea programmiert werden. Zumindest sollte man die Sequenzen fehlersicher programmieren und den Fehlerfall erkennen und darauf reagieren. Aber das geht jetzt zu sehr ins Detail, dass kann ich vielleicht ein andermal genauer erläutern.
4.
Alle Domovea Konstanten und Variablen haben eine interne Kennung, die ihnen direkt beim Anlegen zugewiesen wird. Damit wird in Wirklichkeit in den Sequenzen gearbeitet. Benennt man später eine Konstante oder Variable um, so wird nur der Name, aber nicht die Kennung verändert. Die Umbenennung damit automatisch gleichzeitig in allen Sequenzen statt.
Ich halte das für sehr praktisch, da man problemlos alle Konstanten und Variablen später noch umbenennen kann, ohne dabei durch jede Sequenz gehen und korrigieren zu müssen.
5.
wichtig: es gibt keine Möglichkeit zu sehen, in welcher Sequenz eine Konstante oder Variable verwendet wird.
Deshalb empfehle ich unbedingt, sich ein festes Namensschema für Konstanten und Variablen zuzulegen, so dass man sofort sieht für was sie verwendet werden. Sonst kommt es bei der Verwendung in mehreren Sequenzen ganz leicht zu Verwechslungen.
Folgendes Namensschema möchte ich empfehlen (wie man es dann macht ist jedem selbst überlassen):
1. Konstanten = <Name der Konstante> + (<Wert> + <Einheit>) Beispiel: Grenzwert PM Flur (4 Lux)
warum: will man die Konstante später einsetzen, sieht man auch gleich den Wert ohne nachschauen zu müssen. Änder sich mal der Wert, kann man einfach den Namen editieren, das steht dann ja gleich wieder richtig in allen Sequenzen.
2. Variablen = <Kürzel für Sequenz> - (<Typ>) <Name der Variablen> Beispiel: RSF - (Binär) Status Rolladen hochgefahren
Nennt man die Sequenz für die PM-Steuerung der Rolläden dann noch: "RSF - Rolladen Steuerung Flur", so ist eine eindeutige Zuordnung möglich.
Noch etwas: Es gibt in Sequenzen oft die Notwendigkeit für lokale Hilfsvariablen, die nur für Zwischenwerte benötigt werden und keine Bedeutung mehr haben, wenn die Sequenz durchlaufen wurde. Leider kennt die Domovea keine lokalen Variablen und damit entsteht eine Flut an extern nicht genutzten Globalvariablen.
Man kann sich hier mit einer speziellen Benennung helfen:
Lokalvariablen benennt man zum Beispiel so: <Kürzel für Sequenz> - (<Typ>) <Var n> Beispiel: RSF - (1 Byte) Var 1
Somit erkennt man lokale Variablen und kann sie innerhalb einer Sequenz auch mehrfach einsetzen.
Ok, ich hoffe das hilft ein wenig weiter.
Grüße, Jörg
Ankündigung
Einklappen
Keine Ankündigung bisher.
Hager Domovea - Tipps & Tricks (Version 1.0: TJA 450, TJ 701A)
Einklappen
X
-
HM... leider schnale ich das noch nicht so ganz was die Kosntanten und die variablen bewirken sollen. Dachte zuerst, dass man mit deren Hilfe irgenwas simulieren kann, aber ist anscheinend nicht der Fall.
Einen Kommentar schreiben:
-
Scrady
Ja, ganz einfach:
ich setze voraus, Du hast in der Domo eine Sequenz programmiert, die auf den Helligkeitswert reagiert ("bei jeder Änderung").
Dann vergleichst Du den Helligkeitswert mit 4 Lux und fährst entsprechend die Rolläden runter.
Merke Dir doch einfach in einer Binärvariablen (vom Typ "Wahrheitswert"), ob der Luxwert beim letzten Aufruf der Sequenz bereits unter 4 Lux war.
Nur wenn das nicht der Fall ist, fährst Du die Rolläden.
Du musst das mit der Variablen nur richtig managen, dann klappt das so.
Falls Du die Steuerung nicht über die Domovea machst, melde Dich nochmal.
Viel Erfolg,
Jörg
Einen Kommentar schreiben:
-
Hallo Leute,
ich habe an meiner Rolladensteuerung einwenig rum experementiert. Wollte folgendes erreichen. Wenn der PM im Flur einen Wert < 4Lux liefert (Istwert wird zyklisch auf den Bus gesendet) sollen die Rolladen runterfahren. Das funktioniert auch soweit. Jetzt habe ich mir mal den Gruppenmonitor angeschaut und festgestellt, dass jedes mal wenn der PM den Helligkeitswert sendet, bekommt der Rolladenaktor den Auftrag die Rolladen runterzufahren. Was auch logisch ist.
Meine Frage wäre, ob man das so programmieren kann das der Rol.aktor nur einmal den Signal bekommt?
Einen Kommentar schreiben:
-
JoergDr Vielen Dank für die ausführliche Antwort, die mich nachdenklich gemacht hat und jetzt endlich auch zur Lösung
Nachdem ich das alles was du vorgeschlagen hast gecheckt habe ist mir aufgefallen dass sich, nun warum weiss ich auch nicht
, bei der Abfrage der Flanke wohl der Fehlerteufel eingeschlichen hat ...
Unbenannt1.PNG
So geht's dann auch ... macht ja irgendwie Sinn eine fallenden Flanke zum Wert "0" zu suchen ...
Unbenannt.PNG
Ausserdem habe ich festgestellt, dass die Fensterkontakte immer noch alle 30sec. den Staus schicken ... ist noch der "schnelle Fehlersuche Wert". Das habe ich dann auch noch schnell bereinigt.
Nach dieser Änderung hat es dann auch "wieder" funktioniert. Ich kann mich noch wage daran erinnern mal etwas an der Alarmquittierung geändert zu haben, ist wohl dabei irgendwie passiert ...
-------
Aber dein Punkt mit dem cache hört sich interessant an. Das ist wohl wieder eines dieser nicht dokumentieren Features. Kann man damit was besonderes anstellen? Wofür soll das gut sein ?
Vielen Dank!
Einen Kommentar schreiben:
-
Scrady "Home Status umbenennen": ts, ts, da habe ich wieder was dazugelernt.
azzkikrboy
Zwei Ursachen kann ich mir vorstellen:
1. Es kann ein Fehler vorliegen. Dass es mal geht und später nicht mehr, kenne ich von der Domo eigentlich nicht.
Ein tückischer Fehler sind falsche Datentypen.
Schau doch mal bitte, ob die Datentypen von allen verwendeten Gruppenadressen in der Sequenz wirklich stimmen.
Wenn zum Beispiel bei den Auslösern einer von allen Auslösern den falschen Typ hat, wird nicht ausgelöst.
Dann würde ich auch mal testweise eine Fehlerbehandlung einbauen, also eine Sequenz rufen die eine Mail oder ein Popup auslöst.
Und ruf diese Melde-Sequenz auch mal manuell auf, damit Du siehst ob sie funktioniert.
2. ich würde die Speicherung von Zuständen bei den Auslösern mal ausschalten
Klicke auf einen Eintrag in der Liste der Auslöser und dann etwas weiter oben auf "ignorieren", so dass dort dann "speichern" steht. Damit wird das Caching der Zustände deaktiviert, wenn ich das richtig interpretiert habe.
Ich habe mehrere Sequenzen, die per Flanke ausgelöst werden, vor allem um Alarme zu bearbeiten. Bei mir funktioniert das mit abgeschaltetem Caching einwandfrei.
Dazu noch eine Vermutung:
Die Domovea löst auch dann einen Fehler aus, wenn eine Gruppenadresse einen undefinierten Zustand hat, d.h. seit längerem nicht mehr upgedatet wurde. Wenn also das Caching aus ist, oder Caching ein und längere Zeit der Status der GA nicht mehr upgedatet wurde, so kann das einen Fehler ergeben und damit wird die Sequenz nicht mehr ausgelöst.
Der Zustand der Fenstersensoren sollte also zyklisch gesendet werden, vielleicht so alle 10 Minuten. Zusätzlich sollte er auch abfragbar sein.
Ich glaube irgendwo hier müsste das Problem liegen.
---
Zum Thema Hager und Domovea Support wurde hier ja schon einiges geschrieben.
Hager ist eine große Firma und da zählt vermutlich mehr der Massenumsatz. Auch der Support läuft entlang der Vertriebswege, gegenüber dem Endkunden ist dann letztendlich der Systempartner oder Elektriker der Ansprechpartner. Und das kann dann genau das Problem sein, denn da hängt es von verschiedenen Faktoren ab, ob man eine kompetente Hilfestellung erhält.
Nachdem es anfangs mit Anfragen beim Domovea Support noch ganz gut geklappt hat, habe ich seit einem Jahr nur noch pauschale Aussagen erhalten, dass bald eine neue Version erscheint mit der alle Probleme behoben sein werden.
Ich kann nicht beurteilen, ob der Einzelkunde, der sich für sein System selbst interessiert, eine nur unerhebliche Randgruppe darstellt. Vielleicht ist die Zielgruppe bei Hager eher der Industriekunde? Allerdings erhält man -denke ich- doch eher von den Leuten, die sich mit dem Gerät auseinandersetzen, ein qualifiziertes Feedback.
Dass es anders auch besser geht, hat AVM mit der Fritzbox eindrucksvoll gezeigt. Dieser Router ist ja inzwischen das beliebteste Endkundengerät in diesem Segment auf dem Markt. Da hat ganz sicher auch die Kommunikation mit den Kunden, die Umsetzung von Wünschen und eine permanente Weiterentwicklung dazu beigetragen.
Die Domovea ist ein Gerät mit einem sehr guten Preis-/Leistungsverhältnis. Es wäre schade, wenn es hier nicht weiterginge.
Schönes WE,
Jörg
Zuletzt geändert von JoergDr; 03.03.2018, 11:09.
Einen Kommentar schreiben:
-
JoergDr
Danke
In der ETS sehe ich die Nachrichten richtig ankommen ... und innerhalb der Sequenz kann ich auch damit arbeiten. Es ist eben nur das AUSLÖSEN der Sequenz die NICHT MEHR geht (es ging vorher ...).
Habe auch schon eine Test Sequenz gebastelt, ohne ODER Verknüpfung. Also einfach nur ein Fensterkontakt. Bei fallender Flanke sende Pop-Up ...
Die Domo startet die Sequenz nicht ... Die Statusänderung (1->0) kommt aber an, denn in der Visu ändert sich der Fensterkontakt ...
Komme da nicht mehr weiter ... bleibt mir wohl nichts anders über als deinen Workaround anzuwenden.
Sehr schade, dass Hager die Domo so sehr vernachlässigt. Das ist für den Preis eigentlich eine SUPER Machine
Einen Kommentar schreiben:
-
Hallo Jorg,
vielen Dank für dein Tip! Es funktioniert...
Status "Abend", da habe ich einfach den Status Manuel umbenannt :-)
Einen Kommentar schreiben:
-
Hallo Scrady,
Dein Auslöser den Du spezifiziert hast, setzt voraus dass die Variable "Variable - 001" von irgendetwas gesetzt wird.
Ich sehe aber keine Sequenz, die das macht.
Gehe einen anderen Weg, der müsste funktionieren:
1. wähle links oben bei den Sequenzen den Reiter "Home Status"
img_002.jpg
2. bei dem gewünschten Home Status (hier als Beispiel: "Abwesend") gibst Du an, was passieren soll
(hier zum Beispiel Aufruf einer Sequenz "Abwesenheitssimulation"):
img_003.jpg
3. Du kannst genau angeben, was jeweils passieren soll:
img_004.jpg
Somit wird Deine Sequenz jetzt gerufen, wenn der Home Status "Abwesend" aktiviert oder deaktiviert wird.
Jetzt kannst Du innerhalb der Sequenz abfragen, ob der Home Status auf "Abwesend" steht oder nicht und
entsprechend reagieren, also zum Beispiel den Präsenzmelder sperren oder freigeben.
Grüße,
Jörg
P.S. einen Home Status "Abend" kenne ich nicht. Wie kommt das zustande?
Einen Kommentar schreiben:
-
Ja, relativ einfach:
Eine Sequenz einrichten, die auf Änderungen des Homestatus reagiert.
---
Zuerst eine Lösung, die den Home Status numerisch auf den Bus gibt (das geht über das geforderte hinaus):
Achtung: die Auslösung der Sequenz über "Liste Auslöser - Home Status - bei jeder Änderung" geht meines Wissens (immer noch) nicht in der domovea.
Stattdessen unter "Automation - Home Status" die Sequenz bei jedem Home Status Event als Aktion eintragen.
Jetzt eine Variable "Home Status (numerisch)" anlegen und am Anfang der Sequenz mit "0" belegen.
Danach nach folgendem Schema alle Varianten durchgehen:
Wenn Variable "Home Status (numerisch) = 0" und "Home Status = x" mit x = Ferien, Nacht, etc.
dann setze Variable "Home Status (numerisch)" auf 1, 2, 3, ...
Die numerischen Werte kann man dabei beliebig > 0 vergeben.
Zum Schluss der Sequenz noch:
Wenn GA a/b/c <> "Home Status (numerisch)" dann sende GA a/b/c = Variable "Home Status (numerisch)"
Somit wird der neue Status nur bei Änderung gesendet.
GA a/b/c ist dabei die zusetzende Gruppenadresse. Den Datentyp kann man an den jeweiligen Bedarf anpassen.
---
Hier die einfachere Lösung, die nur den Status Anwesend / Abwesend sendet (wie gefordert):
Auch hier unter "Automation - Home Status" die Sequenz aber nur bei den Home Status Events "Zu Hause" und "Abwesend" als Aktion eintragen.
Diesmal eine binäre Variable (Wahrheitswert) setzen und bei Änderung auf den Bus senden.
Viel Erfolg!
Jörg
[/QUOTE]
Unbenannt.PNG
Unbenannt1.PNG
Hallo Jorg,
ich versuche es die ganze Zeit nach deiner obenstehender Anleitung eine Sequenz zu basteln. Komm leider irgendwie nicht weiter. Kannst du bitte schauen, was ich verkehrt mache?
Folgendes soll erreicht werden.
bei Statusaktivierung "Abend" soll Präsenzmelder gesperrt werden, also ein Sperrobjekt gesendet werden.
Vielen Dank im Voraus
Einen Kommentar schreiben:
-
Hallo azzkikrboy,
Du kannst erstens versuchen, die Signale über den ETS Gruppenmonitor zu verfolgen und auch zu simulieren.
Eigentlich sollte die Domovea das mit der steigenden Flanke richtig machen.
Es kann aber sein, dass durch die ODER Verknüpfung eine weitere Auslösung nicht funktioniert, weil ein weiterer Kontakt
auch bereits eine "1" gesendet hat. Keine Ahnung, ob die Domovea dann erst wieder auslöst, wenn alles auf "0" steht.
Das wäre zwar falsch, aber wundern würde es mich nicht wenn das nicht richtig funktioniert...
Ansonsten versuch doch mal die Sequenz einfach über einen Timer, zum Beispiel alle 10 Minuten zu rufen.
So habe ich das bei gleicher Aufgabe bei mir gemacht. So zeitlich exakt muss die Warnung ja nicht kommen.
In einer Variable kannst Du Dir merken, ob der Zustand bereits vorher auf "Alarm" stand und nur einen Alarm senden,
wenn das nicht der Fall war. Die Abfrage nach dem Kontaktzustand (auf / zu) innerhalb der Sequenz funktioniert?
Grüße, Jörg.
Einen Kommentar schreiben:
-
Ja, aber ...
ich habe das im Binäraktor invertiert. Also er sendet "1" wenn OFFEN und "0" wenn ZU.
Da die Fenster ja meistens ZU sind, sind auch nicht ständig alle LEDs am Aktor an ;-)
Einen Kommentar schreiben:
-
Ist der Zustand 1 für offen den richtig. Ein Binärkontakt ist meistens geschlossen, wenn das Fenster zu ist (Ruhestromkontakt).
Gruß
Florian
Einen Kommentar schreiben:
-
Hallo Leute,
hab mal wieder eine Frage zur guten alten Domovea.
Ich habe in meiner Domo Sequenzen um die Temperatur in den Zimmern (beim Lüften im Winter ;-) ) zu überwachen ...
Wenn Fenster offen und Außentemperatur < x° usw ... dann Alarm wenn innen Temp < 20°. Das ganze wird dann noch über meine Fensterkontakte gesteuert.
Einen Alarm bzw. die Status Meldungen schicke ich dann zusätzlich auch noch an meine Gira Display2.0 die dann auch anfangen wild zu piepen wenn es zu kalt wird.
Das ganze hat bis vor einiger Zeit perfekt funktioniert. Nun habe ich aber das Problem, dass die Sequenz um den "aktiven" Alarm zu "deaktivieren" wenn das Fenster geschlossen wird (z.B. im OG, das Gira Display2.0 ist im EG) nicht mehr gestartet wird.
Bis jetzt wurde diese Sequenz immer so gestartet (also mit fallender Flanke des Fensterkontaktes (1->0, offen -> zu).
(die beiden Fensterkontakte sind mit ODER verknüpft)
Bildschirmfoto 2018-02-24 um 15.30.02.png
Keine Ahnung warum die Domo das jetzt auf einmal nicht mehr macht ...
Hat einer von euch da eine Idee oder ein ähnliches Problem?
Danke
Frank
Einen Kommentar schreiben:


Einen Kommentar schreiben: