Klarname zu dom.GetObject($src$)

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Klarname zu dom.GetObject($src$)

Beitrag von dtp » 25.06.2019, 09:16

Hallo,

wie erhalte ich in einem Skript den Klarnamen eines auslösenden Geräts, wenn

Code: Alles auswählen

dom.GetObject($src$)
mir den Datenpunkt des zugehörigen Kanals, also z.B. "JEQxxxxxxx:1.STATE" liefert?

Irgendwie stehe ich gerade auf dem Schlauch. Am liebsten wäre mir ein Einzeiler.

Gruß,

Thorsten
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.

Matthias K.
Beiträge: 1172
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 226 Mal

Re: Klarname zu dom.GetObject($src$)

Beitrag von Matthias K. » 25.06.2019, 12:31

Das kommt drauf an was der Auslöser ist.
Ist es ein Gerät, bringt dich

Code: Alles auswählen

(dom.GetObject(dom.GetObject(dom.GetObject("$src$"))).Channel()).Name()
zum Ziel, bei einer Sysvar reicht

Code: Alles auswählen

dom.GetObject("$src$").Name()
Wenn beides der Auslöser sein kann könnte man das Ganze dann noch mit einem if auf den TypeName() aufdröseln, ungefähr so:

Code: Alles auswählen

object src = dom.GetObject("$src$");
if (src) {
    ! Gerät
    if(src.TypeName() == "HSSDP") {
        string sourcename = (dom.GetObject(dom.GetObject(src)).Channel()).Name();
    } else {
        ! SysVar
        if(src.TypeName() == "VARDP") {
            string sourcename = src.Name();
	} else {
	    string sourcename = "Weder Device noch SysVar.";
	}
    }
    WriteLine("Source name: " # sourcename);
} else {
    WriteLine("Keine source, ggf. Skript manuell gestartet?");
}
Die Infos hab ich mir vor einiger Zeit auch mal im Forum zusammengesucht, müsste also auch irgendwo schon zu finden sein. :wink:
Bestimmt in einem von Alchy's großartigen Skripten.

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

Re: Klarname zu dom.GetObject($src$)

Beitrag von Black » 25.06.2019, 12:44

und mit CALENDARDP könnte esdann auch noch ein Zeitmodul gewesen sein
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

Benutzeravatar
stan23
Beiträge: 2042
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 586 Mal
Danksagung erhalten: 337 Mal
Kontaktdaten:

Re: Klarname zu dom.GetObject($src$)

Beitrag von stan23 » 25.06.2019, 12:50

alchy hat doch eine tolle Vorlage geliefert:
Auslöser eines Programmes finden und loggen
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Matthias K.
Beiträge: 1172
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 226 Mal

Re: Klarname zu dom.GetObject($src$)

Beitrag von Matthias K. » 25.06.2019, 12:59

stan23 hat geschrieben:
25.06.2019, 12:50
alchy hat doch eine tolle Vorlage geliefert:
Auslöser eines Programmes finden und loggen
Dann hab ich mein Wissen wohl da her. Sag ich doch, war irgendwas von Alchy... :D

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Klarname zu dom.GetObject($src$)

Beitrag von dtp » 25.06.2019, 12:59

scorpionking hat geschrieben:
25.06.2019, 12:31
Ist es ein Gerät, bringt dich

Code: Alles auswählen

(dom.GetObject(dom.GetObject(dom.GetObject("$src$"))).Channel()).Name()
zum Ziel,
Danke, so klappt es. Ich hatte da einen Fehler in der Klammersetzung:

Code: Alles auswählen

message = dom.GetObject(dom.GetObject(dom.GetObject("$src$")).Channel()).Name();
Deshalb ging es bei mir nicht.
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.

Antworten

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