NAME und Raum des auslösenden Geräts herausfinden

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

NAME und Raum des auslösenden Geräts herausfinden

Beitrag von duffy6 » 13.03.2023, 12:18

Hallo zusammen,

ich möchte benachrichtigt werden, welcher meiner Wassermelder ausgelöst hat. Dafür habe ich folgenden Codeschnipsel gefunden, der sehr gut funktioniert:

https://www.christian-luetgens.de/homem ... melden.htm

Code: Alles auswählen

object o_dp = dom.GetObject ("$src$");
if (o_dp) {
  if (o_dp.Value()) {
    object o_channel = dom.GetObject (o_dp.Channel());
    dom.GetObject ("Telegram").State ("Bewegung: " # o_channel.Name());
  }
}


Ich bekomme nun den Namen des KANALs gemeldet.

Wie kann ich jedoch den Namen des GERÄTES und den zugeordneten RAUM herausfinden?
Unbenannt.PNG
Unbenannt.PNG (10.5 KiB) 815 mal betrachtet
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von jp112sdl » 13.03.2023, 13:08

duffy6 hat geschrieben:
13.03.2023, 12:18
Ich bekomme nun den Namen des KANALs gemeldet.
In der Skript Doku https://www.eq-3.de/downloads/download/ ... l_v1.2.pdf steht:
Bildschirm­foto 2023-03-13 um 13.05.35.png
o_channel.Device() liefert dir also die ID des Geräts, dessen Namen du dann ja wiederum mit dom.GetObject(ID).Name() abfragen kannst.

Bei den Räumen sagt die Script Doku:
Bildschirm­foto 2023-03-13 um 13.07.36.png
duffy6 hat geschrieben:
13.03.2023, 12:18
Wie kann ich jedoch den Namen des GERÄTES und den zugeordneten RAUM herausfinden?
Wichtig: Es sind immer nur Kanäle zugeordnet, nicht das Gerät.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Benutzeravatar
Baxxy
Beiträge: 10850
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von Baxxy » 13.03.2023, 14:16

duffy6 hat geschrieben:
13.03.2023, 12:18
den Namen des GERÄTES und den zugeordneten RAUM
So ginge das auf RaspberryMatic.
Falls du inzwischen auf CCU gewechselt bist musst du gucken ob das so läuft.

Code: Alles auswählen

object o_dp = dom.GetObject ("$src$");
if (o_dp) {
  if (o_dp.Value()) {
    object o_channel  = dom.GetObject (o_dp.Channel());
    string dev_name   = (dom.GetObject(o_channel.Device())).Name();
    string room_name  = (dom.GetObject(o_channel.ChnRoom())).Name();
    string output_txt = "Bewegung: "# dev_name #" / im Raum: "# room_name;
    dom.GetObject ("Telegram").State (output_txt);
  }
}

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von [sprotte80] » 13.03.2023, 20:08

Hi,
Baxxy hat geschrieben:
13.03.2023, 14:16

Code: Alles auswählen

string room_name  = (dom.GetObject(o_channel.ChnRoom())).Name();
Das ist schlecht und funzt nur wenn nur ein Raum zugeordnet ist.
Liegt daran weil in dem Beispiel von Baxxy das ChnRoom() falsch verwendet wird.

Es gibt nicht die 'ID vom Raum' zurück sondern einem String mit ner Liste von IDs die mit Tabulator getrennt sind.

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

MichaelN
Beiträge: 9685
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von MichaelN » 13.03.2023, 20:28

Baxxy verarbeitet da doch einen String. Wo soll da das Problem sein?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von [sprotte80] » 13.03.2023, 20:36

Hi
MichaelN hat geschrieben:
13.03.2023, 20:28
Baxxy verarbeitet da doch einen String. Wo soll da das Problem sein?
Yo, er verarbeitet nen String und geht davon aus das nur eine ID drin steht.
Also '1234'
ChnRoom gibt aber ne mit Tabs getrennte Stringliste der IDs zurück.
Es könnte dort '1234t1235' drin stehen.
Und dann stimmts Ergebnis halt nicht.

Aber was solls wird schon nur ein Raum-ID drin stehen. Wer kommt schon auf die Idee zwei und mehr Räume zu hinterlegen!

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

MichaelN
Beiträge: 9685
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von MichaelN » 13.03.2023, 20:43

OK, jetzt sehe ich es auch.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Baxxy
Beiträge: 10850
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von Baxxy » 13.03.2023, 21:02

[sprotte80] hat geschrieben:
13.03.2023, 20:36
Wer kommt schon auf die Idee zwei und mehr Räume zu hinterlegen!
Genau, und das vor allem bei einem Bewegungsmelder. :roll:

Aber anstatt hier rumzulamentieren wäre ein korrektes Beispiel viel wünschenswerter. :twisted:

Nächster Versuch.

Code: Alles auswählen

object o_dp = dom.GetObject ("$src$");
if (o_dp) {
  if (o_dp.Value()) {
    object o_channel  = dom.GetObject (o_dp.Channel());
    string dev_name   = (dom.GetObject(o_channel.Device())).Name();
    string roomlist   =  dom.GetObject(o_channel).ChnRoom();
    string rooms; string room_name;
     foreach(rooms, roomlist) { room_name  = dom.GetObject(rooms).Name() #" / "# room_name; }
      string output_txt = "Bewegung: "# dev_name #" / im Raum: "# room_name;
      dom.GetObject ("Telegram").State (output_txt);
  }
}

MichaelN
Beiträge: 9685
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von MichaelN » 13.03.2023, 21:05

oder so

Code: Alles auswählen

object o_dp = dom.GetObject ("$src$");
if (o_dp) {
  if (o_dp.Value()) {
    object o_channel  = dom.GetObject (o_dp.Channel());
    string dev_name   = (dom.GetObject(o_channel.Device())).Name();
    string output_txt = "Bewegung: "# dev_name #" / im Raum: ";
    string index;
	foreach(index,o_channel.ChnRoom() )
	{
     output_txt = output_txt # dom.GetObject(index).Name() # " ";
	}
    dom.GetObject ("Telegram").State (output_txt);
  }
}                 
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: NAME und Raum des auslösenden Geräts herausfinden

Beitrag von [sprotte80] » 13.03.2023, 21:14

Hi
Baxxy hat geschrieben:
13.03.2023, 21:02
Aber anstatt hier rumzulamentieren wäre ein korrektes Beispiel viel wünschenswerter. :twisted:
Du machst einen Fehler und pöpelst die an wo dir zeigen das da nen Fehler ist.
Das das so sitte in dem forum ist hab ich schon oft gelesen.
Du wirst ja schon zum Black oder jmaus.

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“