Ergänzung nach Hinweis von Jerome & jmaus:
- Das Skript ist nur funktional auf einer Raspberrymatik.
- das Unterdrücken der Fehlermeldung passiert nur bin der Rega/der webui
- die funkmodul led wird vom schnittstellenprozess bedient, für den ist der fehler aber trotz abwahl existent, heisst led leuchtet
- Middlewares, die direkt auf den rpc aufsetzen, werden auch weiterhin einen fehler melden, hier muss in der middleware noch zusätzlich gefiltert werden
- Tinymatic sollte es bei verwendung der xml API nicht betreffen, diese benutzt ja die rega
----------------------------------------------------------------
Dazu dient dieses kleine Skript.
eigentlich selbsterklärend:
sGewerk beschreibt das Gewerk, welches einen Kanal (geschickterweise z.b. der Kanal 0) des zu aktivierenden / deaktivierenden Gerätes enthält
bMeldungAktiv = true: Servicemeldungen werden eingeschaltet
bMeldungAktiv= false: Servicemeldungen werden ausgeschaltet.
Code: Alles auswählen
! Geräte in einem Gewerk von Servicemeldungen ab/anmelden
! by Black in Nov.2023
! published in Homematic-Forum
! https://homematic-forum.de/forum/viewtopic.php?f=31&t=80690
! ---------------------------------------
! Script written with SDV V5.03.01D
!
string sGewerk= "SommerGeräte"; ! Gewerk, welches die zu bearbeitenden Geräte enthält
boolean bMeldungAKtiv= false; ! Servicemeldungen aktivieren/ deaktivieren
!-------------------------------------------
! Ab hier FINGER WEG
string sTag= "enabledServiceMsg";
string sChan;
object oFunc= dom.GetObject(ID_FUNCTIONS).Get(sGewerk);
if (oFunc) {
Write ("Im Gewerk \""#sGewerk#"\" werden die Servicemeldungen ");
string sMeldungAktiv = bMeldungAKtiv.ToString();
if (bMeldungAKtiv) {
WriteLine ("aktiviert");
} else {
WriteLine ("deaktiviert");
}
WriteLine ("Geräteliste:\n--------------");
foreach (sChan,oFunc.EnumUsedIDs()) {
object oChan=channels.Get(sChan);
if (oChan) {
if (oChan.Type()==OT_CHANNEL) {
object oDev= devices.Get(oChan.Device());
boolean bSuccess= oDev.MetaData(sTag,sMeldungAktiv);
if (!bSuccess) {
oDev.AddMetaData(sTag,sMeldungAktiv);
}
WriteLine (oDev.Name());
} else {
WriteLine ("Objekt mit ID "#sChan#" ist nicht vom Type OT_CHANNEL");
}
} else {
WriteLine ("Kanal mit ID "#sChan#" gibts nicht");
}
}
} else {
WriteLine ("Fehler: Unbekanntes Gewerk");
}
Black