HM Script Abfrage von Datenpunkten (RF,IP...)

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von alchy » 17.03.2016, 10:47

Ausgehend von der immer wieder aufkommenden Frage nach dem Auslesen von Datenpunkten (>letztmalig<)
per HM Script möchte ich hier mal etwas zusammenschreiben.

Die Abfrage der Datenpunkte per Script hat sich meiner Meinung nach nicht geändert
und funktioniert nach wie vor nach demselben Vorgehen.
Ob es sich um ein IP Gerät handelt oder normal Funk oder Wired spielt keine Rolle.
Auch hier gilt natürlich, viele Wege führen nach Rom. :mrgreen:

Ich habe als Beispiel den Frequenzdatenpunkt einer
RF Schalt-Mess-Steckdose HM-ES-PMSw1-Pl
Datenpunkte_rf_drainagesteckdose.jpg
und einer

IP Schalt-Mess-Steckdose HMIP-PSM
Datenpunkte_IP_fersehersteckdose.jpg
benutzt, so das jeder hoffentlich die nachfolgenden Scripte nachvollziehen kann.

Wem das zu banal ist, der liest was anderes. :!: Blöde Kommentare sind unerwünscht. :!:


Wie kann ich nun endlich die Datenpunkte per HM Script auslesen?

1. Möglichkeit: über die Seriennummer und mit sicherere Zugriffsmethode:

bei RF

Code: Alles auswählen

var rfserial = (datapoints.Get("BidCos-RF.KEQ0968370:2.FREQUENCY")).Value();
WriteLine(rfserial);
oder auch

Code: Alles auswählen

var rfserial = (dom.GetObject(ID_DATAPOINTS)).Get("BidCos-RF.KEQ0968370:2.FREQUENCY").Value();
WriteLine(rfserial);

bei IP

Code: Alles auswählen

var ipserial = (datapoints.Get("HmIP-RF.0001D3C990BFAC:6.FREQUENCY")).Value();
WriteLine(ipserial);
oder auch

Code: Alles auswählen

var ipserial = (dom.GetObject(ID_DATAPOINTS)).Get("HmIP-RF.0001D3C990BFAC:6.FREQUENCY").Value();
WriteLine(ipserial);

die Struktur bleibt dieselbe:
HmIP-RF.0001D3C990BFAC:6.FREQUENCY
Interface.Seriennummer:Kanal.DATEN


Und da wären noch die CUxD Geräte. Auch hier ändert sich daran gar nichts.

Nehmen wir ein 9001001 Gerät als Beispiel und den eingekreisten Datenpunkt
cuxd_9001001.jpg

Da auch hier die Struktur dieselbe ist

Interface.Seriennummer:Kanal.DATEN

Kann man dort dasselbe wie oben erreichen

Code: Alles auswählen

var cuxdserial = (datapoints.Get("CUxD.CUX9001001:2.TIME_OFF_24H")).Value();
WriteLine(cuxdserial);

Code: Alles auswählen

var cuxdserial = (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX9001001:2.TIME_OFF_24H").Value();
WriteLine(cuxdserial);



2. Möglichkeit über den Kanalnamen, wie schon oben aufgeführt.

bei RF

Code: Alles auswählen

var rfname = (dom.GetObject(ID_CHANNELS)).Get("Drainagesteckdose:2").DPByHssDP("FREQUENCY").Value();
WriteLine(rfname);
bei IP

Code: Alles auswählen

var ipname =(dom.GetObject(ID_CHANNELS)).Get("Fernsehersteckdose:6").DPByHssDP("FREQUENCY").Value();
WriteLine(ipname);

3. Möglichkeit
über die ISE_ID, lass ich hier aber erstmal weg, wenn es wer wissen will, nachfragen.
4. Möglichkeit
hab ich noch nicht drüber nachgedacht.

Das sollte nun für jeden nachvollziehbar sein :?:

Nun geht es aber auch noch darum, die vorhandenen Datenpunkte erstmal herauszubekommen.
Und das ist ja manchmal viel wichtiger. :D

Auch dazu gibt es wieder unterschiedliche Möglichkeiten.
Eine davon ist das Lesen, Verstehen und Anwenden der veröffentlichten Dokus, wie sie auch oben gepostet wurde.
Eine Weitere wäre das Verwenden von Tools / Addons wie z.B. >> xmlapi <<, was dann stellvertretend so was
Datenpunkte_xmlapi.jpg
ergibt.

Aber für alle die, die keine addons installieren wollen gibt es noch die Möglichkeit das alles per kleinen Script zu machen.
[EDIT]
Hier also jetzt ein schnelles Miniscript, auszuführen in Script Executer oder unter Script testen.
Erste Zeile einfach die Seriennummer des Gerätes eingeben, damit man nicht ewig scrollen muss.
Ducrch den EQ-3 Bug muss an für die virtuellen Tasten der CCU nicht die Seriennummer sondern
HmIP-RCV-1 für die virtuellen IP Tasten der CCU3 eingeben bzw. BidCoS-RF für die RF Tasten.
Also das was in der Klickibunti eben für die Seriennummer drin steht :roll:

Wenn man nix einträgt, sollten alle Datenpunkte ausgegeben werden.
Hab das nur schnell zusammengetütelt, sollte bei IP und auch bei RF funktionieren.
Bei vielen angemeldeten Geräten dauert die Ausführung eine Weile, da ich keinerlei Vorselektierung mache,
Keinerlei Schnickschnack nur die Funktion zählt.

Code: Alles auswählen

string auswahl = "KEQ0968370";
! +++++++++++++++++++
string index;
string liste = dom.GetObject(ID_DATAPOINTS).EnumUsedNames();
foreach (index, liste) {
var sserial = (index.StrValueByIndex(":",0).StrValueByIndex(".",1));
if (sserial == auswahl) {
Write(index #"\n");
}
}
[/EDIT]
Datenpunke_script.jpg
Wenn Bedarf besteht, bitte melden, dann erweitere ich diese Infos.


Alchy
Zuletzt geändert von alchy am 04.07.2017, 14:32, insgesamt 3-mal geändert.

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Highfly78
Beiträge: 65
Registriert: 21.03.2015, 13:08
Wohnort: Ruhrpott
Danksagung erhalten: 2 Mal

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von Highfly78 » 18.03.2016, 13:50

Sorry, Alchy.

Kannst du das letzte Skript nochmal einstellen? Auf dem Bildschirmfoto kann ich zwar den Output erkennen aber nicht das Skript selbst. Das spart dann wohl in aller Regel die Suche in der 2xx Seiten starken Datenpunktesammlung von Eq-3.

Danke und Gruß
--------------------------------------------
349 Kanäle in 110 Geräten und 116 CUxD-Kanäle in 23 CUxD-Geräten
--------------------------------------------

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von alchy » 18.03.2016, 19:14

Entschuldige vielmals, hab ich doch glatt vergessen ein Script einzufügen. :cry:
War nicht mit Absicht, habe es jetzt oben auf die Schnelle nachgeholt.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Highfly78
Beiträge: 65
Registriert: 21.03.2015, 13:08
Wohnort: Ruhrpott
Danksagung erhalten: 2 Mal

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von Highfly78 » 18.03.2016, 20:02

Super. Danke!
--------------------------------------------
349 Kanäle in 110 Geräten und 116 CUxD-Kanäle in 23 CUxD-Geräten
--------------------------------------------

Gerhard
Beiträge: 42
Registriert: 08.04.2014, 13:11

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von Gerhard » 09.12.2016, 12:42

Hallo Alchy,

ich möchte heute nichts, wollte nur mal Danke sagen.
Habe das Script für die Datenpunkte heute erst gesehen.


Gruß

Gerhard
341 Kanäle in 119 Geräten und 49 CUxD-Kanäle in 19 CUxD-Geräten:
CCU2 - RaspMatic - CUxD - ModBus - EnOcean - FS20 - IRTrans - Mediola - Anel - HomeStatus

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von alchy » 09.12.2016, 14:47

Bitteschön, keine Ursache.

Damit hast du den Thread zumindest wieder aus der Versenkung geholt, er scheint sehr schwer zu finden zu sein, wenn ich mir die Fragen im Forum so ansehe.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Pezi1978
Beiträge: 18
Registriert: 27.11.2017, 21:59
Hat sich bedankt: 1 Mal

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von Pezi1978 » 27.11.2017, 22:17

Hallo alchy,

ich habe gerade vor unser neues Haus mit Homematic (vorwiegend IP) auszustatten.
Die übergeordnete VISU soll über eine Creston CP3e erfolgen die mit mehreren TSW Touchpanels verbunden ist.
Diese Variante ist für so wichtig, da ich die TSW Touchpanel sowie die CP3e geschenkt bekommen habe und damit aktuell auch unsere ganzes Heimkino betreibe.

Nun soll aber die Beleuchtung und Fussbodenheizung über HM IP eingebunden werden. Steuerung über Port 8181 über z.B. folgende Befehle:

Crestron Befehl...

Code: Alles auswählen

GET /x.exe?WZ_Thermostat=dom.GetObject('HmIP-RF.000A9709A0D4C6:0.ACTUAL_TEMPERATURE').State() HTTP/1.0\x0D\x0A\x0D\x0A
im Browser...

Code: Alles auswählen

http://192.168.178.240/:8181/test.exe?WZ_Thermostat=dom.GetObject("HmIP-RF.000A9709A0D4C6:1.ACTUAL_TEMPERATURE").State()
Crestron Befehl...

Code: Alles auswählen

GET /x.exe?WZ_Thermostat=dom.GetObject('HmIP-RF.000A9709A0D4C6:1.SET_POINT_TEMPERATURE').State(25.0) HTTP/1.0\x0D\x0A\x0D\x0A
im Browser...

Code: Alles auswählen

http://192.168.178.240/:8181/test.exe?WZ_Thermostat=dom.GetObject("HmIP-RF.000A9709A0D4C6:1.SET_POINT_TEMPERATURE").State(22)
Das funktioniert auch alles sauber.

Aber wie frage ich über die Crestron oder über den Browserdiesen Wert
BOOST_TIME_PERIOD für ein HmIP-WTH-2 ab und wie setze ich ihn bei Bedarf?

Channel configuration parameters (laut HmIP_Device_Documentation.pdf)
6.3.2.2.706.
Parameter BOOST_TIME_PERIOD
INTEGER - read&write
Min: 0 und Max: 30

Grüße Pezi und vielen Dank für diesen Thread (hat mir sehr geholfen)
Zuletzt geändert von alchy am 25.02.2019, 22:05, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

lutzi
Beiträge: 5
Registriert: 24.09.2018, 21:52

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von lutzi » 23.02.2019, 23:32

Danke, danke, danke :D
Esst mehr Tomaten.

ckohrt
Beiträge: 43
Registriert: 27.09.2018, 13:05
Hat sich bedankt: 2 Mal

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von ckohrt » 30.03.2019, 18:25

Hallo Alchy,
vielen Dank schon mal für deine Erklärung.

Ich würde gerne verstehen was der Unterschied und wann ich welche Variante nehme aus:
a)

Code: Alles auswählen

var rfserial = (datapoints.Get("BidCos-RF.KEQ0968370:2.FREQUENCY")).Value();
WriteLine(rfserial);
b)

Code: Alles auswählen

var rfserial = dom.GetObject("BidCos-RF.KEQ0968370:2.FREQUENCY").Value();
WriteLine(rfserial);
Ich hab schon ca. 1h geschaut aber nichts passendes gefunden, was mir mehr Infos dazu geben könnte. Bisher habe ich immer Variante b) verwendet.

Eine "wilde" Vermutung wäre, dass man bei datapoints (a) auf die Datenpunkte zugreift und nur dann ein Befehl zum Device gesendet wird, wenn tatsächlich erforderlich. Wohingegen könnte ein Aufruf nach b) IMMER einen Aufruf zur Folge haben....

VG
Christian
Zuletzt geändert von ckohrt am 30.03.2019, 22:36, insgesamt 1-mal geändert.

alchy
Beiträge: 10744
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 671 Mal

Re: HM Script Abfrage von Datenpunkten (RF,IP...)

Beitrag von alchy » 30.03.2019, 21:15

datapoints.Get() greift nur auf die Datenpunkte direkt zu - dom.GetObject() ist der allgemeine Objektzugriff egal welcher Art von Objekt.
Trägst du bei letzteren einen korrekten Datenpunktnamen ein, dann wird auch mit dom.GetObject() auf den Datenpunkt zugegriffen.
Bei Datenpunkten ist dies i.d.R. nicht so schlimm, da wahrscheinlich niemand den Namen eines Datenpunktes doppelt vergibt.
Aber wenn du ein Programm Anwesenheit, eine Variable Anwesenheit, ein Gewerk usw. hast und mittels dom.GetObject("Anwesenheit"); darauf zugreifst, wird eben auf das zu erst angelegte bzw. zuerst gefundene Objekt mit den Namen Anwesenheit zugegriffen. Und das ist vielleicht von dir nicht gewünscht. :wink:

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“