technikkram.net
  • Home
  • smartkram
  • Themenfelder
    • Smart Home
      • Homematic & Homematic IP
      • Smart Home Zentrale
      • Home Assistant
      • MQTT & Messaging
      • Zigbee & Thread
      • Shelly Geräte
      • KNX Gebäudeautomation
      • Matter & Thread
      • Apple HomeKit
    • Server & DevOps
      • Docker & Container
      • Proxmox VE
      • Linux Administration
      • Monitoring & Observability
      • Kubernetes & K3s
      • Raspberry Pi
    • Netzwerk
      • UniFi Netzwerk
      • Netzwerk Grundlagen
      • WLAN Optimierung
      • VLAN Konfiguration
      • Firewall & Security
      • Managed Switches
    • Sicherheit
      • Überwachungskameras
      • IT-Security
      • Videoüberwachung
      • Alarmanlagen
      • Zutrittskontrolle
    • Energie & Solar
      • Energiemanagement
      • Solar & Photovoltaik
    • NAS & Storage
      • NAS Systeme
      • Backup & Recovery
      • Synology NAS
      • Storage Lösungen
  • Archiv
  • Kontakt
    • Datenschutz
    • Impressum
  • Click to open the search input field Click to open the search input field Suche
  • Menü Menü
  • Link zu Facebook
  • Link zu X
  • Link zu Mail
  • Link zu Rss dieser Seite
Werner
CCU2, CCU3, Homematic, Homematic IP, piVCCU3, Programmierung, Raspberrymatic

Code Schnipsel – Homematic Skript – Aktor Datenpunkte ermitteln, auslesen und in Systemvariablen schreiben

Code Schnipsel - Homematic Skript - Systemvariablen anlegen und löschen - Code Schnipsel 10

Alle HomeMatic oder HomeMatic IP Aktoren haben Datenpunkte, in denen die jeweiligen aktuellen Informationen gespeichert sind. Nicht alle diese Datenpunkte können mit WebUI Mitteln abgefragt werden. Anders sieht das mit der HomeMatic Skript Sprache aus. Damit können alle vorhandenen Datenpunkte bzw. deren Inhalt ausgelesen und wenn gewünscht sogar geändert werden. In diesem Artikel möchte ich euch erklären, wie ihr die jeweiligen Datenpunkte eines Aktors ermitteln könnt. Diese Information benötigt ihr, um diese Information anschließend via Skript auszulesen und beispielsweise in eine Systemvariable zu schreiben. Über diese Systemvariable könnt ihr dann Aktionen in HomeMatic auslösen.

Allgemeines

Da ich aktuell wieder einige Skripte verwendet habe, um geforderte Aktionen innerhalb von HomeMatic ausführen zu können, möchte ich die Serie Code Schnipsel hier heute mal wieder fortsetzen. Bisher gibt es aus dieser Serie bereits die folgenden Beiträge:

  • Code Schnipsel – Homematic Skript – Systemvariablen anlegen und löschen
  • Code Schnipsel – Homematic Skript – CCU Informationen auslesen
  • Code Schnipsel – Homematic Skript – Systemprotokoll via Skript löschen

Ermittlung der vorhandenen Datenpunkte

Um zu ermitteln welche Datenpunkte für den gewünschten Aktor zur Verfügung stehen, muss als erstes die Seriennummer des Aktors ermittelt werden. Dies geschieht am einfachsten in der WebUI über den Menuepunkt „Einstellungen > Geräte“. Man findet dort die folgende Anzeige:

Skript zur Ermittlung der vorhandenen Datenpunkte

Nachfolgend ist ein Skript zu sehen, mit dessen Hilfe die Datenpunkte einer bestimmten Seriennummer ermittelt werden kann. Dazu muss im Skript die Seriennummer eingetragen werden. Anschließend kann dieses Skript über „Startseite > Programme und Verknüpfungen > Programme“ der Button „Skript testen“ der Editor geöffnet werden. Dann das Skript kopieren und im oberen Fenster des Editors einfügen. Um das Skript auszuführen unten links den Button „Ausführen“ klicken.

! Information welche Datenpunkte für ein HomeMatic Gerät existieren
! © Werner Weber 07.2019 Version 4.0
! Seriennummer eintragen
string aktor = "KEQ1041684";
! =============================================================================
string index;
string datenpunkte = dom.GetObject(ID_DATAPOINTS).EnumUsedNames();
foreach (index, datenpunkte) 
{
var sserial = (index.StrValueByIndex(":",0).StrValueByIndex(".",1));
if (sserial == aktor) 
{
Write(index #"\n");
}
}

Ergebnis / Ausgabe des Skriptes

Nachfolgend ist das Ergebnis der Skript-Ausführung zu sehen (Erscheint im unteren Fenster des Editors und kann kopiert und beispielsweise in einem Word-Dokument gespeichert werden). Ich habe das so gemacht, um die ausgewerteten Datenpunkte farblich „rot“ zu markieren.

Skript zum Auslesen des Ventil Öffnungsgrades und schreiben in Systemvariable und Systemprotokoll

Nachfolgend ist das Skript zu sehen, mit dessen Hilfe ein bestimmter Datenpunkt ausgelesen wird. Zusätzlich werden die notwendige Systemvariable automatisch angelegt, wenn noch nicht vorhanden und mit dem aktuellen Wert beschrieben.  Beim Anlegen der Systemvariable vom Typ ZAHL wird auch das „Protokollieren“ eingeschaltet. Dadurch wird jede Änderung der Systemvariablen auch im Systemprotokoll festgehalten. Detailliert habe ich das im Artikel Code Schnipsel – HomeMatic Skript – Systemvariablen anlegen und löschen beschrieben.

Erstmalig kann/sollte wie oben bereits beschrieben über „Startseite > Programme und Verknüpfungen > Programme“ der Button „Skript testen“ der Editor geöffnet werden. Dann das Skript kopieren und im oberen Fenster des Editors einfügen. Um das Skript auszuführen unten links den Button „Ausführen“ klicken. Beim ersten Durchlauf des Skriptes wird die Variable angelegt und mit dem Wert „100“ gefüllt.

! Auslesen des Ventilöffnungsgrades und in Systemvariable sowie in Systemprotokoll schreiben
! (c) W. Weber 07.2019, Version 4.0
! Kontrolle ob die Systemvariable bereits existiert
object oVariable = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Ventil Küche Öffnungsgrad");
if (oVariable) 
{
! Die Systemvariable existiert und wird mit aktuellen Werten gefüllt
string ventilkueche = "";
var VALVE_STATE = dom.GetObject("BidCos-RF.KEQ1041684:4.VALVE_STATE").Value();
ventilkueche = ("" # VALVE_STATE);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Ventil Küche Öffnungsgrad").State(ventilkueche);
} 
else 
{
! Die Systemvariable existiert nicht, wird definiert und mit Startwert 100 gefüllt
! Dieser Teil des Skriptes läuft nur einmalig
string  svName = "Ventil Küche Öffnungsgrad";
object  svObj  = dom.GetObject(svName);
if (!svObj){   
object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
svObj = dom.CreateObject(OT_VARDP);
svObjects.Add(svObj.ID());
svObj.Name(svName);   
svObj.ValueType(ivtFloat);
svObj.ValueSubType(istGeneric);
svObj.DPInfo("Ventil Küche Variablentyp Zahl");
svObj.ValueUnit("");
svObj.ValueMin(0);
svObj.ValueMax(100);
svObj.DPArchive(true);
svObj.State(100);
svObj.Internal(false);
svObj.Visible(true);
dom.RTUpdate(false);
}
}

Skript zum Auslesen der aktuelle Temperatur und schreiben in Systemvariable und Systemprotokoll

Nachfolgend ist das Skript zu sehen, mit dessen Hilfe ein bestimmter Datenpunkt ausgelesen wird. Zusätzlich werden die notwendige Systemvariable automatisch angelegt, wenn noch nicht vorhanden und mit dem aktuellen Wert beschrieben.  Beim Anlegen der Systemvariable vom Typ ZAHL wird auch das „Protokollieren“ eingeschaltet. Dadurch wird jede Änderung der Systemvariablen auch im Systemprotokoll festgehalten. Detailliert habe ich das im Artikel Code Schnipsel – Homematic Skript – Systemvariablen anlegen und löschen beschrieben.

Erstmalig kann/sollte wie oben bereits beschrieben über „Startseite > Programme und Verknüpfungen > Programme“ der Button „Skript testen“ der Editor geöffnet werden. Dann das Skript kopieren und im oberen Fenster des Editors einfügen. Um das Skript auszuführen unten links den Button „Ausführen“ klicken. Beim ersten Durchlauf des Skriptes wird die Variable angelegt und mit dem Wert „100“ gefüllt.

! Auslesen der aktuellen Temperatur und in Systemvariable sowie in Systemprotokoll schreiben
! (c) W. Weber 07.2019, Version 4.0
! Kontrolle ob die Systemvariable bereits existiert
object oVariable = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Ventil Küche Aktuelle Temperatur");
if (oVariable) 
{
! Die Systemvariable existiert und wird mit aktuellen Werten gefüllt
string ventilkueche = "";
var ACTUAL_TEMPERATURE = dom.GetObject("BidCos-RF.KEQ1041684:4.ACTUAL_TEMPERATURE").Value();
ventilkueche = ("" # ACTUAL_TEMPERATURE);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Ventil Küche Aktuelle Temperatur").State(ventilkueche);
} 
else 
{
! Die Systemvariable existiert nicht, wird definiert und mit Startwert 100 gefüllt
! Dieser Teil des Skriptes läuft nur einmalig
string  svName = "Ventil Küche Aktuelle Temperatur";
object  svObj  = dom.GetObject(svName);
if (!svObj){   
object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
svObj = dom.CreateObject(OT_VARDP);
svObjects.Add(svObj.ID());
svObj.Name(svName);   
svObj.ValueType(ivtFloat);
svObj.ValueSubType(istGeneric);
svObj.DPInfo("Ventil Küche Variablentyp Zahl");
svObj.ValueUnit("");
svObj.ValueMin(-30);
svObj.ValueMax(100);
svObj.DPArchive(true);
svObj.State(100);
svObj.Internal(false);
svObj.Visible(true);
dom.RTUpdate(false);
}
}

Screenshots der Systemvariablen und des Systemprotokolls

In diesem Abschnitt schauen wir uns die Informationen über die Systemvariablen und das Systemprotokoll an:

Hier sehen wir wie die Systemvariablen vom Skript definiert wurden.
Hier ist zu sehen, wann die Systemvariablen mit welchen Wert gefüllt wurden.
Hier die Informationen im Systemprotokoll.

Zyklisches Ausführen des Skriptes über ein WebUI Programm

Im ersten Durchlauf des Skriptes wird die Systemvariable erstellt und mit einem Startwert beschrieben. Zu diesem Zweck reicht es, wie beschrieben das Skript über die „Skript testen“ Funktion zu starten.

Wenn wir aber den aktuellen Wert eines Datenpunktes zyklisch auslesen wollen, müssen wir ein entsprechendes WebUI Programm erstellen.

In dem folgenden Screenshot ist ein solches Programm zu sehen. Es wird im Zyklus von 15 Minuten der Datenpunkt ausgelesen und über Skript in die Systemvariable geschrieben.

Wenn euch der Ausdruck des WebUI Programmes gefällt, Informationen dazu findet ihr hier.

WebUI Programm starten aufgrund von Systemvariable (Schnittstelle)

Nachdem die gewünschten Werte in bestimmten Zyklen in Systemvariablen geschrieben werden, ist damit die eigentliche Schnittstelle zwischen Skript und WebUI realisiert. Es kann nun bei Veränderungen des Inhalts der Systemvariable über ein WebUI Programm die gewünschte Aktion ausgeführt werden.

In dem nachfolgenden Testprogramm wird eine Schaltsteckdose eingeschaltet und zusätzlich ein bestimmter Rollladen auf 50% geschlossen.

WICHTIG

In dem oben beschriebenen Beispiel wird ein HomeMatic Aktor ausgewertet. Wenn HomeMatic IP oder HomeMatic wired Aktor ausgewertet werden soll, müssen die Aktoren anders angesprochen werden:

HomeMatic Funk Aktor:

BidCos-RF.KEQ1041684:0……….

HomeMatic IP Funk Aktor:

HmIP-RF.000AD709A594AE:0………

HomeMatic wired:

BidCos-Wired.OEQ0861981:0……….

HomeMatic IP wired:

HmIP-RF.001658A98F5F22:0……….

Der Grund dafür ist die unterschiedliche Schnittstelle. Beim Auslesen welche Datenpunkte existieren, reicht die Seriennummer. Bei Auslesen bestimmter Datenpunkte muss immer wie oben beschrieben abgefragt werden.

Fazit

Da alle Aktoren auf die gleiche Art und Weise ausgewertet werden können wie in dieser Dokumentation beschrieben, ist es möglich die Skripte einfach anzupassen und weitere eigene Vorstellungen zu realisieren.

Viel Spaß beim Ausprobieren.

Das könnte dich auch interessieren

  • KNX-Integration in Home Assistant über ETS-Projekt einrichten – Docker Exit Code 125 Fehler - Container startet nicht wegen Konfigurationsproblem
    Docker Command Container startet nicht - Exit Code…
    4. April 2026 Docker Exit Code 125 Fehler – Container startet nicht wegen Konfigurationsproblem Exit Code 125 bedeutet: Docker kann den Container gar…
  • Homematic Thermostat Temperaturwerte werden nicht an Home Assistant übertragen – Homematic Thermostat zeigt 21°C während Home Assistant Dashboard veraltete 18°C Temperatur anzeigt
    Homematic Thermostat Temperaturwerte werden nicht an…
    3. April 2026 Das kennst du bestimmt auch: Das Thermostat zeigt 21°C, aber Home Assistant hängt bei 18°C fest Du kennst das Problem…
  • Nas selber bauen 2026 – NAS Selbstbau 2026 Titelbild mit Intel N100 Mini-PC, vier NAS-Festplatten, 2,5GbE Switch und USV
    NAS selber bauen 2026: Die vollständige Anleitung…
    12. Juni 2026 Ein selbst gebauter NAS auf Intel N100-Basis mit vier CMR-Festplatten, 2,5GbE-Switch und USV — das Fundament für ein zuverlässiges Heimnetz-NAS…
  • Smart Home Sicherheitssystem für Einsteiger ohne Vorkenntnisse aufbauen – Smart Home Sicherheitssystem Dashboard auf Tablet mit Home Assistant Interface, Kamera-Feeds und Sensor-Status
    Smart Home Sicherheitssystem für Einsteiger ohne…
    6. April 2026 Professionelles Smart Home Sicherheitssystem Dashboard mit Live-Kamera-Feeds und Sensor-Status-Übersicht Ein Smart Home Sicherheitssystem für Einsteiger ohne Vorkenntnisse ist wie ein…
  • Homematic CCU3 Backup erstellen und wiederherstellen – CCU3 Homematic Zentrale mit HTTP 500 Backup-Fehler im WebUI und Smart Home Geräte-Verbindungen
    CCU3 Backup schlägt mit HTTP 500 Fehler fehl -…
    31. März 2026 CCU3 Homematic Zentrale zeigt HTTP 500 Internal Server Error beim Backup-Versuch mit verbundenen Smart Home Geräten Wenn deine CCU3 beim…
  • Homematic CCU2 komplett auf CCU3 migrieren ohne Geräteverlust – Homematic CCU2 kaufen zu CCU3 Migration - Beide Zentralen nebeneinander mit Migrationspfeil
    Homematic CCU2 kaufen auf CCU3 migrieren: Komplette…
    3. April 2026 Die CCU2 zu CCU3 Migration erfordert eine systematische Herangehensweise, um Geräteverluste zu vermeiden Die Homematic CCU2 zu CCU3 Migration kaufen…
30. Juli 2019/3 Kommentare/von Werner
Schlagworte: CCU2, CCU3, Homematic, piVCCU, Programmierung, RaspberryMatic
Eintrag teilen
  • Teilen auf Facebook
  • Teilen auf X
  • Teilen auf WhatsApp
  • Teilen auf Pinterest
  • Teilen auf LinkedIn
  • Per E-Mail teilen
https://technikkram.net/wp-content/uploads/2019/01/Code-Schnipsel-10.jpg 298 856 Werner https://technikkram.net/wp-content/uploads/2019/05/technikkram_transparent.png Werner2019-07-30 14:00:002019-07-30 21:55:32Code Schnipsel – Homematic Skript – Aktor Datenpunkte ermitteln, auslesen und in Systemvariablen schreiben
3 Kommentare
  1. Antonio B
    Antonio B sagte:
    24. Juni 2024 um 8:52

    Sehe ich genauso, möchte ein Wochenprogramm auslesen und finde keine hilfreiche Doku dazu – auch wenn eine schier endlose Liste an Datenpunkten für den hmIPW-DRD3 existiert. Sehr schade.

    Antworten
  2. Roland
    Roland sagte:
    10. März 2020 um 9:27

    In HmIP_Device_Documentation.pdf sind wohl alle Datenpunkte aufgeführt. Es sind jedoch nicht alle erreichbar. Die „Channel configuration parameters“ können mit den oben dargestellten Objekten nicht erreicht werden. Es muss da noch mehr geben.

    Auch sind die Datenpunkte nur aufgeführt aber nicht in ihrer Dunktion und Bdeutung beschrieben. Leider!!

    Antworten
  3. Harry
    Harry sagte:
    30. Juli 2019 um 18:10

    Danke, ich lese die Datenpunkte über IOBroker aus.
    Das größte Problem bei EQ3 ist jedoch die mangelnde Doku.
    So gibt es jetzt zum Beispiel beim IP Wired Jalousienaktor z.B. auf Kanal 1 ein „LEVEL“ und ein „LEVEL_2“, außerdem „SECTION“, dann noch jeweils einen STATUS dazu.
    Und nirgendwo ist beschrieben, was diese Datenpunkte bewirken.

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

  •  
Smartkram Shop

Kategorien

Allgemein Apple Apps CCU2 CCU3 Charly debmatic EQ-3 Firmware Foto und Video Gadgets Gaming Geschenke Hardware Hausinstallation Haussicherheit HB-RF-USB Homematic Homematic IP Homematic IP Access Point Homematic IP wired iOS KNX Media Center Mediola Mobile Multimedia Netzwerk Neuigkeiten Nützliches Online Services piVCCU piVCCU3 Provider Rabatte & Co Raspberrymatic Security smarte Beleuchtung Smart Home Software & Co Testberichte Tipps & Tricks Wearables Windows Zubehör
© Copyright - technikkram.net -
  • Link zu Facebook
  • Link zu X
  • Link zu Mail
  • Link zu Rss dieser Seite
Nach oben scrollen Nach oben scrollen Nach oben scrollen