Richtige Verwendung von $src$

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

musicmaker201
Beiträge: 96
Registriert: 30.01.2013, 15:10

Richtige Verwendung von $src$

Beitrag von musicmaker201 » 03.08.2018, 17:22

Hallo Zusammen,

ich plage mich jetzt schon länger mit einem kleinen Skript herum.

Es soll durch eine Änderung der Ventilposition eines HM-CC-RT-DN getriggert werden. Das Skript soll dann die Ventilposition des auslösenden Aktors auslesen und in eine SysVar schreiben, welche unter anderem den Namen des auslösenden Gerät enthält.

Das Skript sieht folgendermaßen aus:

Code: Alles auswählen

var ausloeser=dom.GetObject("$src$");
var vp=ausloeser.DPByHssDP("VALVE_STATE").Value();
var device=dom.GetObject(ausloeser.Device());
var name=device.Name();
WriteLine(vp);
WriteLine(device);

string sysVarName="VP" # " "# name;
var sysVar=dom.GetObject(sysVarName);
if(sysVar)
{
sysVar.State(vp);
}
Wenn ich statt $src$ den Kanalnamen eingebe, funktioniert es tadellos. Nur eben nicht mit dem $scr$, was ich ja benötige damit das Skript für alle Stellantriebe funktioniert. Wo liegt mein Fehler?

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

Re: Richtige Verwendung von $src$

Beitrag von NickHM » 03.08.2018, 18:42

Guten Abend

wie probierst Du das Script denn aus ?
Die Funktion geht nur, wenn das Script innerhalb eines WebUi Programms läuft und durch das entsprechende Gerät ausgelöst wird.

In Script testen oder bei manueller Auslösung des Programms in der WEbUi geht das nicht.

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

Re: Richtige Verwendung von $src$

Beitrag von Black » 03.08.2018, 18:44

unter script testen kannst du die ID eines Kanalnamens eingeben und damit testen. dann wird beim testaufruf $src$ durch die ID ersetzt.
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

musicmaker201
Beiträge: 96
Registriert: 30.01.2013, 15:10

Re: Richtige Verwendung von $src$

Beitrag von musicmaker201 » 03.08.2018, 18:59

Getestet habe ich das gesamte Programm, also das Triggern durch verstellen der Soll-Temperatur erzwungen. Der SA war also in jedem Fall der Trigger, §src§ sollte also definiert sein.

Wenn ich statt dem "$src$" ein "SA Marco:4" (Das ist der Name von Kanal 4 von "SA Marco", die :4 gehört mit zum Kanalnamen) eingebe, läuft das Skript einwandfrei. Mit dem "$src$" aber eben nicht mehr.

Habe ich das irgendwie falsch verwendet? Eigentlich müsste mir "dom.GetObject("§src§");" doch das gleiche liefern wie "dom.GetObject("SA Marco:4");", da "SA MArco:4" auch der Kanal ist, der den Trigger auslöst.

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

Re: Richtige Verwendung von $src$

Beitrag von Black » 03.08.2018, 19:01

die anleitung sagt, $src$ liefert die den DATENPUNKT, welcher das Programm getriggert hat, net den channel.

dein DPByHssDP("VALVE_STATE") ist da zu viel.

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

musicmaker201
Beiträge: 96
Registriert: 30.01.2013, 15:10

Re: Richtige Verwendung von $src$

Beitrag von musicmaker201 » 03.08.2018, 19:03

Also würde ich über

Code: Alles auswählen

ausloeser.value();
bereits die Ventilposition bekommen, wenn dieses auch Trigger war?

Sorry, die Scriptsprache ist noch komplett neu für mich.

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

Re: Richtige Verwendung von $src$

Beitrag von Black » 03.08.2018, 19:08

jo... dem is so... das wird dir den Datenpunkt direkt liefern.

da haste aber direkt den nächsten Fehler, mit .Device() kommste bei einem Datenpunkt nicht auf das Device, sondern zu einem ScriptRuntimeerror.

auf die schnelle gehts so

Code: Alles auswählen

object oChan= ausloeser.Channel ();
object oDevice= oChan.Device ();
das sollte dann gehen
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

musicmaker201
Beiträge: 96
Registriert: 30.01.2013, 15:10

Re: Richtige Verwendung von $src$

Beitrag von musicmaker201 » 03.08.2018, 19:09

Danke, ich probiere mal weiter aus :)

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

Re: Richtige Verwendung von $src$

Beitrag von Black » 03.08.2018, 19:18

Da war ich zu schnell.

oChan=dom.GetObject (ausloeser.Channel () );

Dito bei device
.

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

musicmaker201
Beiträge: 96
Registriert: 30.01.2013, 15:10

Re: Richtige Verwendung von $src$

Beitrag von musicmaker201 » 03.08.2018, 19:33

Mit

Code: Alles auswählen

var ausloeser=dom.GetObject("$src$");
var vp=ausloeser.Value();
var chan=dom.GetObject(ausloeser.Channel());
var device=dom.GetObject(chan.Device());
var name=dom.GetObject(device.Name());
WriteLine(vp);
WriteLine(name);

string sysVarName="VP" # " "# name;
var sysVar=dom.GetObject(sysVarName);
if(sysVar)
{
sysVar.State(vp);
}
scheint es jetzt zu laufen. Vielen Dank an euch :)

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“