Makros nur ausführen wenn bestimmte Ansicht aktiv

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

firefox_i
Beiträge: 224
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von firefox_i » 23.10.2018, 07:20

Hallo zusammen,
bin derzeit bei den ersten Schritten mit HPCL.
Ich muss zugeben: habs mir einfacher vorgestellt, aber okay....

Zur Überwachung der Status (korrekter Plural von Status 8) ) möchte ich mir 2 Ansichten definieren.
Auf einer Sicht möchte ich sehen, welche Rechner alles an sind (im Haus gibt es über 10), auf der anderen den Zustand der Infrastruktur (also sind alle Server, Drucker, Switche und APs anpingbar, steht die Verbindung ins Internet usw.....).
Nun macht es da aus meiner Sicht surchaus Sinn, diese Abfragemakros (quasi die Pings) nur dann abzusetzen, wenn auch die Ansicht aktiv ist.

Gibt es eine Möglichkeit die aktive Ansicht rauszubekommen?
Wenn nein würde ich den Ansatz wählen, dass ist eine Systemvariable definiere ich der ich die aktuelle Ansicht protokolliere.
Oder gibts da nen anderen Ansatz?

Danke
Sven
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von NickHM » 23.10.2018, 08:44

Guten Morgen

mal etwas grundsätzliches ...

Die CCU und damit auch HPCL dienen der Hausautomation. Immer wieder werden hier aber Dinge vorgestellt / erfragt, die die CCU unnötig belasten, für kurze Zeit zum Stillstand bringen und ggf. verhindern, dass andere Prozesse gestartet werden können.
Im konkreten Fall gibt es Tools zum Netzwerkmonitoring (wie z.B. Nagios / Nagvis) die genau dafür gemacht sind.

Für die CCU gibt es die Zusatzsoftware CuxD, die auch eine Gerät für einen Ping bereit stellt.

Das über einen exec Aufruf mit einem Ping Befehl in HPCL zu lösen, halte ich für sehr gefährlich.
Die Pings müssen in (für die Hausautomation) kurzen Abständen gesendet werden. Und es wird auf eine Antwort gewartet.
Kommt die Antwort nicht oder wird der Vorgang aus anderen Gründen nicht beendet hat man entweder einen Prozessleiche oder weitere Vorgänge werden nicht ausgeführt. Selbst bei Erfolg müssen alle anderen Vorgänge so lange warten. Es passiert in der CCU nichts zeitgleich.

Die meisten Vorgänge bei HM funktionieren Ereignis orientiert. Es wird also 24h gewartet ob etwas passiert und dann reagiert. Es wird nicht jede Minute ein Zustand abgefragt, nur weil der sich ein mal in der Woche ändert.

Das ist im Einzelfall evtl. nicht sofort kritisch oder als Risiko erkennbar. Diese Kleinigkeiten bei der Verwendung der CCU häufen sich aber im Laufe der Zeit und am Schluss steht hier ein Hilfeschrei im Forum, weil 3 mal die Woche die Rollladen nicht hoch gehen.

Betrachte es als gut gemeinten Hinweis. Nicht alles was mit der CCU möglich ist, ist auch sinnvoll. Dazu gehört auch die Abfrage von Wetter - oder anderen externen Webseiten, oder eben das anpingen von Geräten, wenn das nichts direkt mit der Haussteuerung zu tun hat.

firefox_i
Beiträge: 224
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von firefox_i » 23.10.2018, 09:12

Hallo Nick,
zum Hintergrund:
Es geht um die Automatisierung der Praxis meiner Frau.
Die erstreckt sich auf einem Stockwerk über 330qm.
Und da möchte ich eben ihr und den ganzen Angestellten eine möglichst einfache Möglichkeit bieten rauszubekommen, in welchen Behandlungsräumen noch Rechner an sind.
Dass es Nagios gibt ist mir sehr wohl bekannt - ich bni seit 1992 in der Netzwerkerei aktiv und habe noch mit 10MBit Netzwerken auf BNC Basis begonnen....also ein gewisser Background ist schon da.

Aber die Bedienung und interpretation, sorry, aber das ist für einen Laien unpraktikabel.
Eine Übersicht des Grundrisses mit bunten Bildchen ist das was hilfreich ist.

CuxD ist ein prima Hinweis, nur solange die CuxD Geräte nicht im HPCL verfügbar sind muss ich das mehr oder minder aufwändig über Systemvariablen austauschen....oder gibt es hier mittlerweile eine einfachere Möglichkeit?


Dass ich das über einen exec Aufruf mache war nicht vorgesehen.
Mir schwebte da eher ein PHP script vor wie z.B. bei
viewtopic.php?t=1480&p=7119

Der Hinweis mit dem Problem des Lockings ist gut, verstanden und wird berücksichtigt.
Und gerade deshalb (!) möchte ich ja diese Funktion nur dann ausführen, wenn eine entsprechende Ansicht aktiv ist.
Dass ich den Ping hier als Beispiel udn Begründung genommen habe....okay....aber es gibt bestimtm auch andere Anwendungsfälle in denen gewisse makris nur dann ausgeführt werden sollen, wenn eine Ansicht aktiv ist.

Deshalb zurück zur Frage:
Gibt es eine Möglichkeit ein Makro nur dann auszuführen wenn eine Ansicht aktiv ist?
Ist der Ansatz über das Setzen eine Systemvariablen ain praktikabler Weg?


Gruß
S.
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von NickHM » 23.10.2018, 09:43

Hallo

Der Austausch von Informationen zwischen der Logikschicht der CCU und HPCL über SysVar geht zwar, muss aber aktiv angestossen also gepollt werden.
SetSysVar
GetSysVar

Sollen Änderungen von Hpcl sofort registriert werden dann bieten sich virtuelle Tasten als Trifger an. Diese können dann ein Makro starten.

Hast Du mal in der Hilfe zu HPLC oder VisuWin wegen der Ansichten nachgesehen ?
Oder schreib eine Mail an cl-control. Antwort kommt immer recht schnell.

Ich denke aber das Problem ist (mal wieder) , dass verschiedene VisuWin Clients zur gleichen Zeit verschiedene Ansichten offen haben könnten. Da die aber auf die gleiche CCU zugreifen, wer entscheidet dann, welche Makros gebraucht werden. Da müsste so eine Art Oder Verknüpfung rein.

firefox_i
Beiträge: 224
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von firefox_i » 23.10.2018, 10:03

Hallo Nick,
Hilfe hab ich schon geschaut ja, aber nichts brauchbares gefudnen.

Ich denke ich werde folgenden Ansatz wählen:
- Ich nutze den Ping von cuxd, der funktioniert zuverlässig seit längerer Zeit

Und dann eben 2 mögliche Varianten:
- Innerhalb der WEBUI setze ich bei einer Änderung über ein TCL script die Werte der Anzeigeobjekte innerhalb HPCL
- Ich simuliere eine virtuelle Taste über die dann HPCL ein Makro anstößt und lese dann innerhalb dieses Makros mit GetSysVar die Werte aus.

Das ist aus meiner Sicht erstmal der vielversprechendste Ansatz.


Gruß
S.
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

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

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von Familienvater » 23.10.2018, 12:15

Hi,

ich würde von SysVars die Finger lassen, die SysVar ist ein "Krücke", die nur die "Krücke" Rega braucht. In HPCL kann man sich eigene "virtuelle" Objekte anlegen, und diese in HPCL nutzen. Deshalb der Ratschlag: Bleib in einer Welt, je mehr man sich an externe Dinge hängt, desto eher gibt es Probleme (und die Nutzung von SysVars in HPCL sind als Quelle für Instabilitäten bekannt).

Das Problem, wenn Du das Ping-Device von cuxd nutzt, um das Event letztendlich an HPCL zu senden, ist einfach, das cuxd und die Rega dabei involviert sind. Ich würde mir ein Shell-Script schreiben, was die Pings macht, das ganze auswertet, und über "definierte"/dokumentierte Wege in HPCL einsteuert, damit ist man zwar ziemlich LowLevel dabei, aber es gibt keinen Ärger.

Wenn Du warten kannst, es soll "demnächst" eine Unterstützung für LUA in HPCL kommen, LUA ist eine Programmiersprache, mit der man dann ggf. solche Dinge im HPCL-Kontext machen könnte.

Mir ist auch keine Möglichkeit bekannt (ich habe noch nicht intensiv danach gesucht), die aktive Ansicht in der Visu rauszufinden, einfach weil die Visu bei mir nur kurzzeitig eher zu Debugzwecken aktiv ist.

Der Familienvater

firefox_i
Beiträge: 224
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von firefox_i » 23.10.2018, 12:47

Hallo Familienvater,
okay danke für die Einschätzung.
Dann also Pfoten weg von den Sysvars.

LUA klingt jetzt mal nicht so falsch - auch hier danke für den Hinweis.
Ich möchte allerdings ungern so lange warten.

Offen gesagt bin ich nun etwas ratlos.
Ich bin kein Vollblut-Programmierer und mit Shell Scripten habe ich noch nie was gemacht.
Oder meintest Du ein Script auf dem Rechner auf dem VisuWin läuft ?



Wäre denn das übertragen nach folgender Methode okay?
viewtopic.php?f=28&t=20291&p=169074&hil ... 2A#p169074

Ich dachte - naiverweise - dass ich mit dem CuxD eben das Thema vereinfachen kann und dann über o.g. Methode die Daten an HPCL übergebe....

Ein PHP Script in HPCL ist dann ja wohl auch "böse" oder ?

Gruß
Sven
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

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

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von Familienvater » 23.10.2018, 14:00

Hi,

in Deinem Beispiel ist halt sowohl cuxd als auch die Rega involviert. cuxd ist eigentlich "Rocksolid", aber an der Rega (und auch mal an der Remote-Script Einbindung) wird gehobelt, und oft genug sind dabei Späne geflogen, mit dem Ergebnis, das z.B. Sysvars in HPCL nicht mehr funktionierten, oder Shell-Aufrufe aus der Rega zu Instabilitäten der Rega selbst führen.

Bitte nicht falsch verstehen:
Wenn man kein Vollblut-Programmierer ist, sollte man sich aber vielleicht auch nur mit Dingen in seiner Schuhgröße beschäftigen, zusammen gegoogelte Programme/Routinen, die man Copy/Paste übernimmt und nicht versteht, fliegen einem früher oder später um die Ohren, und das immer im ungünstigsten Moment.

Ich kenne Nagios nur vom Namen her, aber Netzwerküberwachung würde ich in einem dafür angelegten Tool machen, und wenn das Tool "Probleme" feststellt, dann darf es die gerne an HPCL melden, z.B. über das ClWebI-Interface (z.B. Abfrage der HPCL-Uhr mit http://IpDerCCU/addons/contronics/CLWeb ... YNAME1&UHR, setzen eines Objekts mit SETVARBYNAME, ob der Addon-Pfad so noch stimmt weiß ich nicht 100%, es kann sein, das der z.B. auf der CCU3 von contronics zu clcontrol oder so geändert wurde). Damit hat man in meinen Augen eine sinnvolle Trennung, und die Visu macht auch nur die Visualisierung, und der Netzwerkmonitor macht das Monitoring.

Der Familienvater

firefox_i
Beiträge: 224
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von firefox_i » 23.10.2018, 18:26

Hallo Familienvater,
bitte auch nicht falsch verstehen, aber ich denke zwischen einem Vollblut-Softie und einem völligen DAU liegen schon Welten.
Ich trau mir schon zu gewisse mit eine rguten Erklärungsbasis anzupassen.
Wenn ich einen Codeschnipsel (wie die verlinkten) als Basis habe und eine gute Beschreibung bekomme ich das schon hin.
Und glaugb mir, als Ingenieur hab ich defintiv den Anspruch zu verstehen was ich mache und wenn ich das nicht tu lass ich die Finger davon.
Eben deshalb frag ich ja auch hier so nervig nach :mrgreen:

Vergesst doch bitte mal das Beispiel der Netzwerküberwachung.
Das ist doch nur ein Nebenkriegsschauplatz.

Aktuell habe ich z.B. innerhalb eines WEBUI Programms eine automatisierte Türöffnung realisiert, die einige Systemvariablen vewendet.
Angezeigt wird aktuell das Ganze über eine LED16 Anzeige.
Also möchte ich auch hier, einige der Systemvariablen ins HPCL bringen um dort eben Anzeigen zu machen.

Innerhalb eines HPCL Markos GetSysvar oder SetSysvar aufzurufen ist böse, das hab ich verstanden.

Aber mal ganz losgelöst von der Netzwerküberwachungsthematik:

a) Ist das hier verlinkte denn nun okay oder nicht:
viewtopic.php?f=28&t=20291&p=412199

b) Ist es denn legitim innerhalb eines WEBUI Programmes die CMD_SETS und CMD_RUNS von CuxD zu verwenden und damit einen HTTP Aufruf an das HPCL-Webinterface zu machen?

Wie gesagt:
Es geht in erster LInie darum, dass ich aus einem WEBUI Programm/Script raus Objekte vo HCPL ansoprechen kann.

Sorry dass ich so penetrant nachfrage ;-)

S.
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Makros nur ausführen wenn bestimmte Ansicht aktiv

Beitrag von NickHM » 23.10.2018, 18:43

Hallo

im Fall der LED 16 Anzeige hättest Du die Zustände ja schon mal direkt in HPCL.

Mit GetSysVar gab es in der Vergangenheit zwar Probleme, aber das sehe ich nicht soooo kritisch. Ich verwende diese Funktion zwar recht sparsam, aber es funktioniert zuverlässig.
Wie Familienvater schon sagt, ist es am besten , in einem System zu bleiben. Also die Funktionen, die in HPCL angezeigt werden sollen auch dort zu programmieren. Da HPCL Makros viel einfacher und leistungsfähiger sind als die WebUI benutze ich die WEbUI auch nur vereinzelt.

Um das mal noch zu ergänzen ...
man kann auch die Werte von Systemvariablen in ein Textfile auf den USB Stick schreiben und von HPCL aus wieder auslesen.
Aber genau wie die virtuellen Tasten sind das alles nur Krücken.

Was in HPCL angezeigt werden soll, in HPCL programmieren und fertig.

Antworten

Zurück zu „homeputer CL“