Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
Moderator: Co-Administratoren
Re: Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
Hallo,
super Beitrag, Danke.
Ich habe aber noch eine Frage/Problem und brauche eure Hilfe. Ich möchte bei meinem Bewegungsmelder (HmIP-SMI) einen "Reset Status" per Skript ausführen. Manuell funktioniert dies wunderbar über die WebUI unter "Status und Bedingungen" -> "Geräte" mit dem Button unten rechts "Reset Status".
Allerdings per Skript bekomme ich dies leider nicht hin. Die Kanäle auslesen ist kein Problem, aber wie kann ich den Reset per Skript anstoßen?
Bitte um Hilfe.
super Beitrag, Danke.
Ich habe aber noch eine Frage/Problem und brauche eure Hilfe. Ich möchte bei meinem Bewegungsmelder (HmIP-SMI) einen "Reset Status" per Skript ausführen. Manuell funktioniert dies wunderbar über die WebUI unter "Status und Bedingungen" -> "Geräte" mit dem Button unten rechts "Reset Status".
Allerdings per Skript bekomme ich dies leider nicht hin. Die Kanäle auslesen ist kein Problem, aber wie kann ich den Reset per Skript anstoßen?
Bitte um Hilfe.
- spooner.arthur
- Beiträge: 93
- Registriert: 08.07.2013, 15:42
- Danksagung erhalten: 1 Mal
Re: Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
Morgen Zusammen,
ich stehe im Moment leider auf dem Schlauch.
Ich hatte bisher nur alte Bewegungsmelder, also keine HmIP und da hatte ich ein Script, das mir per Mail mitgeteilt hat, welcher BWM ausgelöst hat.
Aber ich bin zu blöd meinen HmIP-SMO in das Srcipt zu integrieren:
Oder besser eine eigenes Script dafür bauen?
Gruß spooner
ich stehe im Moment leider auf dem Schlauch.
Ich hatte bisher nur alte Bewegungsmelder, also keine HmIP und da hatte ich ein Script, das mir per Mail mitgeteilt hat, welcher BWM ausgelöst hat.
Aber ich bin zu blöd meinen HmIP-SMO in das Srcipt zu integrieren:
Code: Alles auswählen
WriteLine("Start Script");
dom.GetObject("EmailEmpfaenger").State(Dest);
dom.GetObject("EmailBetreff").State(Betr);
var sec=dom.GetObject("Sicherheit");
! Bewegungsmelder Systemvariable leeren
dom.GetObject('Bewegungsmelder').Variable();
string i;
string list;
list="";
WriteLine("vor foreach");
foreach(i,sec.EnumUsedIDs())
{
WriteLine("in foreach");
var item=dom.GetObject(i);
if(item.IsTypeOf(OT_CHANNEL))
{
var dev=dom.GetObject(item.Device());
if(dev.HssType()=="HM-Sen-MDIR-O-2")
{
var state=item.DPByHssDP("MOTION");
if(state.Value())
{
list=list+dev.Name();
}
}
}
}
if(list!="")
{
Write("ausloesender Melder: " # list # " !");
! Bewegungsmelder Systemvariable füllen
dom.GetObject('Bewegungsmelder').State(list);
! Mail-Text zusammensetzen
string Nachricht;
string sDate = system.Date("%d.%m.%Y-%H:%M");
string ex;
Nachricht = " \r\n Ein Bewegungsmelder meldet einen Alarm um " # sDate # "! \r\n";
Nachricht = Nachricht # "\r\n Es ist der Melder: "# list # " \r\n";
Nachricht = Nachricht # "\r\n Eventuelle Bewegung vorhanden! ";
dom.GetObject("EmailText").State(Nachricht);
ex = "/etc/config/addons/email/email " # Tmpl;
system.Exec(ex, &stdout, &stderr);
}
WriteLine("Ende Script");
Gruß spooner
-
- Beiträge: 14165
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1500 Mal
Re: Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
Lieg wohl an den falschen Gerätetypen (device.HssType().Find("MDIR") >= 0) || (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0) und dem falschen Datenpunkt item.DPByHssDP("PRESENCE_DETECTION_STATE").Value()
Gruß Xel66
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
- spooner.arthur
- Beiträge: 93
- Registriert: 08.07.2013, 15:42
- Danksagung erhalten: 1 Mal
Re: Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
hab das Script angepasst, aber leider immer einen Fehler:
Fehlerprüfung:
Error 1 at row 40 col 52 near ^ (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)
Error 1 at row 40 col 52 near ^ (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)
Error 1 at row 40 col 52 near ^ (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)
Code: Alles auswählen
var dev=dom.GetObject(item.Device());
if(device.HssType().Find("MDIR") >= 0) || (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)
{
var state=item.DPByHssDP("MOTION") || item.DPByHssDP("PRESENCE_DETECTION_STATE").Value();
Error 1 at row 40 col 52 near ^ (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)
Error 1 at row 40 col 52 near ^ (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)
Error 1 at row 40 col 52 near ^ (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)
-
- Beiträge: 14165
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1500 Mal
Re: Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
Um die if-Abfrage fehlen die Klammern und die Unterscheidung auf MOTION und PRESENCE_DETECTION_STATE ist auch in eine if-clause umzuwandeln, sonst wirft es Dir den nächsten Scriptfehler.
Gruß Xel66
Code: Alles auswählen
if ((device.HssType().Find("MDIR") >= 0) || (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0)){
if ((item.DPByHssDP("MOTION").Value()) || (item.DPByHssDP("PRESENCE_DETECTION_STATE").Value())){
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
- spooner.arthur
- Beiträge: 93
- Registriert: 08.07.2013, 15:42
- Danksagung erhalten: 1 Mal
Re: Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
OK, danke, jetzt sind keine Fehler mehr vorhanden, aber ich denke ich hab noch einen Fehler.
Er wird mir jetzt in der Mail nicht den Bewegungsmelder ausspucken, weil ich die Variable state nicht mehr versenden:
Oder hab ich wieder einen Denkfehler?
Er wird mir jetzt in der Mail nicht den Bewegungsmelder ausspucken, weil ich die Variable state nicht mehr versenden:
Code: Alles auswählen
WriteLine("Start Script");
dom.GetObject("EmailEmpfaenger").State(Dest);
dom.GetObject("EmailBetreff").State(Betr);
var sec=dom.GetObject("Sicherheit");
! Bewegungsmelder Systemvariable leeren
dom.GetObject('Bewegungsmelder').Variable();
string i;
string list;
list="";
WriteLine("vor foreach");
foreach(i,sec.EnumUsedIDs())
{
WriteLine("in foreach");
var item=dom.GetObject(i);
if(item.IsTypeOf(OT_CHANNEL))
{
var dev=dom.GetObject(item.Device());
if ((device.HssType().Find("MDIR") >= 0) || (device.HssType().Find("SMI") >= 0) || (device.HssType().Find("SPI") >= 0))
{
if ((item.DPByHssDP("MOTION").Value()) || (item.DPByHssDP("PRESENCE_DETECTION_STATE").Value()))
{
{
list=list+dev.Name();
}
}
}
}
if(list!="")
{
Write("ausloesender Melder: " # list # " !");
! Bewegungsmelder Systemvariable füllen
dom.GetObject('Bewegungsmelder').State(list);
! Mail-Text zusammensetzen
string Nachricht;
string sDate = system.Date("%d.%m.%Y-%H:%M");
string ex;
Nachricht = " \r\n Ein Bewegungsmelder meldet einen Alarm um " # sDate # "! \r\n";
Nachricht = Nachricht # "\r\n Es ist der Melder: "# list # " \r\n";
Nachricht = Nachricht # "\r\n Eventuelle Bewegung vorhanden! ";
dom.GetObject("EmailText").State(Nachricht);
ex = "/etc/config/addons/email/email " # Tmpl;
system.Exec(ex, &stdout, &stderr);
}
WriteLine("Ende Script");
-
- Beiträge: 14165
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1500 Mal
Re: Datenpunkte des Bewegungsmelders HmIP-SMI ablesen
Du weist mit "var dev=dom.GetObject(item.Device());" den Devicenamen der Variable "dev" zu. Meine Beispielabfragen enthalten aber die in meinem Script verwendete Bezeichnung "device".
Gruß Xel66
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
- spooner.arthur
- Beiträge: 93
- Registriert: 08.07.2013, 15:42
- Danksagung erhalten: 1 Mal