Aktor abfragen über Variable

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Antworten
Daimler
Beiträge: 9115
Registriert: 17.11.2012, 10:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 37 Mal
Danksagung erhalten: 283 Mal

Aktor abfragen über Variable

Beitrag von Daimler » 01.10.2017, 20:17

Hallo Gemeinde,

ich habe wohl gerade ein Brett vor'm Kopf und finde keine Lösung. :twisted:
Vielleicht kann mich ja jemand auf den richtigen Weg leiten.

Ziel ist es, per Variable angegebene Aktoren in Visu abzufragen:

Syntax in HPCL ist ja 'Abfrage(Aktorname)'
Nun lege ich mir in einer Ansicht ein(e) Textobjekt / Variable mit z. B. Name 'Welcher_Aktor' an.
Diese Variable möchte ich dann nach (korrekter Bezeichnungs-) Eingabe abfragen:

Code: Alles auswählen

Abfrage(Welcher_Aktor)
Das geht aber nicht bzw. lässt sich nicht kompilieren, da in der Funktion ein tatsächlich vorhandener Gerätename geprüft wird.

Hat jemand eine Idee? :roll:
Gruß Günter

pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .

Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

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

Re: Aktor abfragen über Variable

Beitrag von Familienvater » 01.10.2017, 22:54

Hi,

es gibt keine (mir bekannte) Möglichkeit, eine Zeichenketten-Variable in einen "Objekt(referenz)"-Typ zu wandeln.

Es gibt zwei mir spontan einfallende Workarounds:
Alleabfragen(), das kostet aber je nach Größe der Anlage Zeit und vor allem DC.

Oder selbst einen XML-RPC-Request zusammenbauen (mit Seriennummer, Kanal-Nr und Datenpunkt-Name) und das ganze an den rfd als http-Request schicken, die Antwort wird an alle Abonnenten rausgehauen, wenn in HPCL ein anderer Status bekannt war, dann wird ggf. das Objekt auf Empfang oder auch auf Änderung getriggert.

Gäbe es eine "Funktion" in HPCL, die eine Zeichenkette in ein "Objekt" umwandeln könnte, dann wäre es theoretisch auf dem kurzen Dienstweg möglich. Mit einer solchen (von mir langersehnten) Funktion gäbe es aber dann das Problem, das keine explizite Typprüfung beim Kompilieren des Projektes mehr möglich wäre (z.B. vergleichbar early-binding vs. late-binding in VBA), und damit müsste es einen neuen Variablentyp geben (sowas wie Objekt), damit man so eine Referenz zwischenspeichern könnte, inkl. der Prüfung auf NULL (Name konnte nicht umgewandelt werden) usw. Das mögliche Fehlerhandling würde sich vom Kompilieren hin zur Ausführung verschieben, die Gefahr von Null-Pointer-Exceptions (damit kann der Laie nichts anfangen) steigt, man müsste selbst Fehlerbehandlungsroutinen einbauen, um auf solche Dinge zu reagieren, oder damit klarkommen, das HPCL einfach "aussteigt", wenn ein Name nicht umwandelbar wäre.
Damit würde die Codeausführung "unvorhersagbar", mit den begrenzten Debugmöglichkeiten sogar unnachvollziehbar.
Fazit: Es ist also gut, so wie es ist :-(

Der Familienvater

Daimler
Beiträge: 9115
Registriert: 17.11.2012, 10:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 37 Mal
Danksagung erhalten: 283 Mal

Re: Aktor abfragen über Variable

Beitrag von Daimler » 02.10.2017, 11:40

Hi,

danke dir für deine Antwort. :D
Familienvater hat geschrieben:Alleabfragen()
Das Thema hatten wir ja schonmal und kostete, wie du dich erinnern wirst, nicht nur DC. :wink:
Familienvater hat geschrieben:...die Gefahr von Null-Pointer-Exceptions (damit kann der Laie nichts anfangen) steigt....
Man könnte ja in HPCL ala WebUi auch einen 'Expertenmodus' - Freischaltung nur über 37 stelligen PIN - einführen. :lol:
Familienvater hat geschrieben:Fazit: Es ist also gut, so wie es ist :-(
Nö. :cry:
Familienvater hat geschrieben:Es gibt zwei mir spontan einfallende Workarounds:
Die dritte wäre, für jedes vorhandene Gerät ein sep. Taster-Makro zu schreiben - will und muss ich mir aber nicht wirklich antun.
Gruß Günter

pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .

Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

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

Re: Aktor abfragen über Variable

Beitrag von Familienvater » 02.10.2017, 12:35

Hi,
Daimler hat geschrieben:Die dritte wäre, für jedes vorhandene Gerät ein sep. Taster-Makro zu schreiben - will und muss ich mir aber nicht wirklich antun.
Es würde sogar ein Objekt vom Typ Zeichnkette reichen, getriggert auf Änderung, was den gleichen dämlichen Aufbau wie die Spezialmakros haben müsste (wenn man irgendwas sinnvolles mit dem Namen anstellen will):

Code: Alles auswählen

wenn selbst="AKTOR_A" dann
  Abfrage(Aktor_A)
  verlassen
endewenn

wenn selbst="AKTOR_B" dann
  Abfrage(Aktor_B)
  verlassen
endewenn

wenn selbst="AKTOR_C" dann
  Abfrage(Aktor_C)
  verlassen
endewenn

// Und so weiter, für Jedes Gerät bzw. Kanal, der abfragbar ist
Muss man halt an sich arbeiten, damit der Code in dem Modul immer schön aktuell und gepflegt bleibt.

Der Familienvater

Daimler
Beiträge: 9115
Registriert: 17.11.2012, 10:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 37 Mal
Danksagung erhalten: 283 Mal

Re: Aktor abfragen über Variable

Beitrag von Daimler » 02.10.2017, 13:13

Hi,
Familienvater hat geschrieben:Muss man halt an sich arbeiten, damit der Code in dem Modul immer schön aktuell und gepflegt bleibt.
That's it is - klappt nie. :lol:
Habe mal ne Mail an RK geschickt - vielleicht werden wir ja erhört.
Gruß Günter

pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .

Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Antworten

Zurück zu „homeputer CL“