Skript-Programmierung

Themen, die in keine andere Kategorie passen

Moderator: Co-Administratoren

Antworten
Cosi
Beiträge: 39
Registriert: 04.11.2019, 16:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Skript-Programmierung

Beitrag von Cosi » 18.05.2020, 08:16

Hallo,
ich bin noch nicht sehr gut in Skript-Programmierung und habe hierzu eine Frage:
Jedes HM-Gerät hat ein oder mehrere Kanäle. Leider habe ich bisher keine Kanalliste gefunden.
Diese Kanäle haben auch Bezeichnungen.
Man braucht diese Angaben, um die Geräte im Skript verwenden zu können.
Von einem Gerät habe ich die Angaben dazu gefunden. Hier das Beispspiel (auch im Anhang):

var a = dom.GetObject("BidCos-RF.KEQ193878:1.BRIGHTNESS").Value();

KEQ193878 ist die Seriennr meines Bewegungsmelders
1 = Kanalnummer, BRIGHTNESS = Kanalbezeichnung oder Kanalname

Die Seriennr eines jeden Gerätes ist bekannt
Mir fehlen zu meinen übrigen Geräten die betreffenden Kanalnummern und Kanalbezeichnungen
Wo gibt es dazu eine Liste oder vielleicht ein Skript, um für jedes Gerät an diese Daten zu gelangen???
Gruß
Cosi
Helligkeit auslesen.jpg

JensDev
Beiträge: 20
Registriert: 10.03.2020, 11:12
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal

Re: Skript-Programmierung

Beitrag von JensDev » 18.05.2020, 08:31

Geht z.B. so:

Code: Alles auswählen

string dpID;
string channelID; 
var channels = dom.GetObject(ID_CHANNELS);
foreach(channelID,channels.EnumUsedIDs()) {
    var channel = dom.GetObject(channelID);
    WriteLine("Kanal: " # channelID # " " # channel.Name() # " " # channel.TypeName() # " " # (dom.GetObject(channel.Device())) );
    var dps = channel.DPs();
    foreach(dpID,dps.EnumUsedIDs()) {
       var dp = dom.GetObject(dpID);
       WriteLine(" DP: " # dpID # " " # dp.Name() # " " # dp.ValueType());
    }
}
Ergibt dann eine lange Liste in der Form:

Code: Alles auswählen

Kanal: 1270 Wohnzimmer Thermostat CHANNEL Thermostat Wohnzimmer
 DP: 1277 BidCos-RF.LEQ0848701:4.CONTROL_MODE 16
 DP: 1278 BidCos-RF.LEQ0848701:4.FAULT_REPORTING 16
 DP: 1273 BidCos-RF.LEQ0848701:4.BATTERY_STATE 4
 DP: 1313 BidCos-RF.LEQ0848701:4.VALVE_STATE 16
 DP: 1275 BidCos-RF.LEQ0848701:4.BOOST_STATE 16
 DP: 1271 BidCos-RF.LEQ0848701:4.ACTUAL_TEMPERATURE 4

Gerti
Beiträge: 3075
Registriert: 28.01.2016, 18:06
System: CCU
Wohnort: Hürth
Hat sich bedankt: 16 Mal
Danksagung erhalten: 282 Mal

Re: Skript-Programmierung

Beitrag von Gerti » 18.05.2020, 08:52

Hi!

Ich würde die XML-Api installieren. Dort kannst du unter statelist.cgi alle Kanäle sehen.

Gruß
Gerti

dtp
Beiträge: 10685
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 507 Mal

Re: Skript-Programmierung

Beitrag von dtp » 18.05.2020, 08:57

Im Übrigen steht vor jedem Gerät ein kleines Pluszeichen. Wenn du darauf klickst, öffnet sich die zugehörige Kanalliste und das Pluszeichen verwandelt sich in ein Minuszeichen.
2020-05-18_08h56_14.png
Hier sollte man auch die entsprechenden Raum- und Gewerkzuordnungen für jeden einzelnen Kanal erzeugen. Zudem würde ich auch die Kanäle analog den Gerätenamen umbenennen, wobei im Falle von mehreren Kanälen unterschiedliche Namen vergeben werden müssen. Hat das Gerät nur einen einzigen Kanal, dann kann man beiden durchaus den identischen Namen geben. Willst du auf Nummer Sicher gehen, dann kannst du auch hier den Kanal unterschiedlich zum Gerät benenenn, z.B. durch eine angefügte Nummer oder Kurzbeschreibung.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
Black
Beiträge: 5552
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 435 Mal
Danksagung erhalten: 1097 Mal
Kontaktdaten:

Re: Skript-Programmierung

Beitrag von Black » 18.05.2020, 09:26

Geräte und Kanalnamen gleich benennen geht, birgt aber bei nicht gradlinigem Vorgehen z.b. bei EInsatz des einfachen dom.GetObject ("Name"); die Gefahr, dass bei Namensgleichheit von 2 Objekttypen das Objekt mit der niedrigeren ID gegriffen wird, und dass ist sogut wie immer die ID des Device.

Natürlich lässt sich jede Information der Rega über Scripte abgreifen und darstellen, es gibt allerdings auch komfortablere und schnellere Möglichkeiten mit externen programmen.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

dtp
Beiträge: 10685
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 507 Mal

Re: Skript-Programmierung

Beitrag von dtp » 18.05.2020, 09:34

Black hat geschrieben:
18.05.2020, 09:26
...bei EInsatz des einfachen dom.GetObject ("Name"); die Gefahr, dass...
Da gebe ich dir selbstverständlich Recht. Daher sollte man auch immer mit dom.GetObject("ID_CHANNELS").Get("Name") arbeiten.

Wenn ich etwas von @BadenPower gelernt habe, dann das. 8)
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
robbi77
Beiträge: 13919
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 749 Mal

Re: Skript-Programmierung

Beitrag von robbi77 » 18.05.2020, 10:08

BRIGHTNESS = Kanalbezeichnung oder Kanalname
DATENPUNKT nicht Kanal. Oder liege ich falsch?
Nur das man vom gleichen redet ...

Antworten

Zurück zu „OffTopic“