NEWS
Servicemeldungen - All inclusive für Homematic -
-
@Dominik-F Wenn ich das nächste mal den Laptop anmache schicke ich Dir Script per PM. Kann aber ein paar Tage dauern, weil ich den Laptop derzeit eher selten nutze (keine Lust)...
-
Vielen Lieben dank
-
ich habe da zwei Fragen:
Pushover
Du hast 4 Instanzen.
Der Pushover Adapter kennt jedoch nur 3 Prio's (quit, default, high-priority)
Mir ist nicht so ganz klar, wie du die 4 Instanzen auf die 3 Prio's aufteilst.Bei Deinen Instanzen denke ich mal, du hast Group Key und Token überall identisch und nur die Prioritäten verändert, richtig?
Was genau macht "let _device = 'All'; " das kann ich doch (alternativ) auch über die Gruppe in der App festlegen, oder?
Ich habe das bei mir nun mal installiert, bekomme aber folgende Fehler:
1/1/2020, 5:46:13 PM.478 [info ]: javascript.0 (1940) Stop script script.js.common.ServicemeldungenHomematic 1/1/2020, 5:46:21 PM.382 [info ]: javascript.0 (1940) Start javascript script.js.common.ServicemeldungenHomematic 1/1/2020, 5:46:23 PM.515 [info ]: javascript.0 (1940) script.js.common.ServicemeldungenHomematic: Bitte melden: HM-LC-Sw4-DR-2 Gartenbewässerung (PEQ0085117) --- HM-LC-Sw4-DR-2 --- Batterietyp fehlt im Script 1/1/2020, 5:46:23 PM.515 [info ]: javascript.0 (1940) script.js.common.ServicemeldungenHomematic: Es gibt: 2 Geräte mit dem Datenpunkt LOWBAT. 1/1/2020, 5:46:23 PM.521 [warn ]: javascript.0 (1940) at Servicemeldung (script.js.common.ServicemeldungenHomematic:749:21) 1/1/2020, 5:46:23 PM.521 [warn ]: javascript.0 (1940) at script.js.common.ServicemeldungenHomematic:2075:5 1/1/2020, 5:46:23 PM.544 [info ]: javascript.0 (1940) script.js.common.ServicemeldungenHomematic: Es gibt: 40 Geräte mit dem Datenpunkt LOW_BAT. 1/1/2020, 5:46:23 PM.548 [error]: javascript.0 (1940) script.js.common.ServicemeldungenHomematic: script.js.common.ServicemeldungenHomematic:891 1/1/2020, 5:46:23 PM.549 [error]: javascript.0 (1940) at script.js.common.ServicemeldungenHomematic:891:29 1/1/2020, 5:46:23 PM.550 [error]: javascript.0 (1940) at Servicemeldung (script.js.common.ServicemeldungenHomematic:875:21) 1/1/2020, 5:46:23 PM.550 [error]: javascript.0 (1940) at script.js.common.ServicemeldungenHomematic:2075:5
-
@f0rd42 Es gibt die Prio -2 bis 3 das sind also 5 Priostufen. Die habe ich aufgeteilt auf die Instanzen. Das hat den Vorteil das ich schon am Icon erkenne wie wichtig die Pushmeldung für mich ist (bei den Servicemeldungen also eher unwichtig).
Mit device steuere ich wer eine Push bekommt. All für meine Frau und ich ansonsten halt den Devicenamen. Klar das geht auch anders aber als ich mit ioBroker angefangen hat war das für mich ein logischer Weg. Aus heutiger Sicht nicht perfekt aber ändern würde ich es auch nicht mehr.
-
wo stellt du denn die Pro -2 bis 3 ein? Im Adapter selbst gibt es ja nur die 3 zum auswählen?
-
@f0rd42 In den Servicemeldungen nutze ich die nicht. Aber Du kannst die doch nutzen in den Zeilen 101 bis 111 kannst Du je nach Servicemeldung eine Prio eingeben. Also auch die -2
-
Aha, in deinem Adapter selbst (also in der Instanz) steht also immer "Default" als Prio und die eigentliche Priorität wird durch das Script übergeben?
Hast Du eine Idee zu den o.g. Fehlermeldungen (hatte meinen Beitrag editiert)
Danke
-
der Fehler ist irgendwie zusammenhängend mit no_observation.search(id_name)
da meckert er im Editor immer: gibbet nicht! -
Ich nutze nach Crash's Vorbild für das Script 2 Pushover instanzen. Eine für wichtige z.B. Sabotage und eine für weniger wichtige wie Lowbat. Jede Instanz hat sein eigenes Symbol um die wichtigkeit einfach sofort erkennen zu können. Ist einfach eine hübsche Spielerei finde ich. In Crash's erstem Post, müsste es glaube ich sein, siehst du wie er die verschiedenen Instanzen nutzt.
-
@f0rd42 Der Fehler erscheint wenn das Script einige Daten nicht komplett ermitteln kann. Meistens weil in der Instanz Geräte sind die es nicht mehr gibt oder nie gab. Manchmal hilft es einfach alle Datenpunkte der Instanz unter den Objekten zu löschen und danach die Geräte mit der Instanz wieder neu einzulesen. Ansonsten muss man tiefer eingreifen um zu sehen welches Gerät das Problem verursacht. Evtl hilft es schon wenn man show_each_device mal auf true zu stellen um zu sehen bei welchen Gerät der Fehler auftritt.
-
Ich bin gerade dabei, das Skript zu implementieren. Ich habe mir das aktuelle Skript von GitHub gezogen und meine Anpassungen vorgenommen (Datenpunkte für Servicemeldungen angelegt und im Skript hinterlegt). Das funktiert auch soweit und die Zählung wird aktualisiert, sobald ich testweise manuell einen Fehler erzeuge. Siehe folgendes Log:
3.1.2020, 15:40:43.966 [info ]: javascript.0 (21626) script.js.Anzeige.Servicemeldungen-Homematic: Neue Servicemeldung: BA_HM-Sec-SCo OEQxxxxxxx (OEQxxxxxxx) --- HM-Sec-SCo--- Typ: LOWBAT_ALARM --- Status: 1 Batterie niedrig 3.1.2020, 15:40:43.989 [warn ]: javascript.0 (21626) at Servicemeldung (script.js.Anzeige.Servicemeldungen-Homematic:1111:21) 3.1.2020, 15:40:43.989 [warn ]: javascript.0 (21626) at Object.<anonymous> (script.js.Anzeige.Servicemeldungen-Homematic:2058:9) 3.1.2020, 15:40:45.325 [info ]: javascript.0 (21626) script.js.Anzeige.Servicemeldungen-Homematic: Servicemeldung aufgehoben: BA_HM-Sec-SCo OEQxxxxxxx (OEQxxxxxxx) --- HM-Sec-SCo--- Typ: LOWBAT_ALARM --- Status: 2 Batterie ok 3.1.2020, 15:40:45.350 [warn ]: javascript.0 (21626) at Servicemeldung (script.js.Anzeige.Servicemeldungen-Homematic:1111:21) 3.1.2020, 15:40:45.350 [warn ]: javascript.0 (21626) at Object.<anonymous> (script.js.Anzeige.Servicemeldungen-Homematic:2058:9)
Allerdings bekomme ich keine Meldungen per Telegram. Ich habe es schon mit Klarnamen und Nummer bei user_telegram versucht. Nichts funkioniert. Kann mir hier jemand weiterhelfen?
-
@brain Wie sieht denn Zeile 142 bei Dir aus? In Zeile 1111 wird id_IST_STICKY_UNREACH befüllt. Und da gibt es ein Problem?
-
OK, danke! Ich werde das mal beobachten. Denke da handelt es sich um ein paar HMIP-PSM, die nicht in der Steckdose stecken.
-
@cash Zeile 142 ist wie folgt:
const id_IST_STICKY_UNREACH = 'javascript.0.HomeMatic-Servicemeldungen.Anzahl_STICKY_UNREACH'/*Anzahl_STICKY_UNREACH*/;
Den entsprechenden Datenpunkt habe ich manuell erstellt:
-
@f0rd42 Nein daran kann es nicht liegen. Die Geräte gibt es ja nur eben mit einer Servicemeldungen...
-
@brain Kommt es immer noch zu Warnings im Log? Oder war das nur erstmalig und die angelegten Objekte hatten dort noch keinen Inhalt?
Zu Telegram kann ich nichts sagen da ich es nicht nutze. Kannst Du Dir denn per anderen Script Telegram Nachrichten schicken?
-
@cash Im laufenden Betrieb treten keine Fehler o.Ä. auf. Die obigen Meldungen kommen lediglich zu Stande, wenn es eine neue Meldung durch HomeMatic gibt (oder ich eine erzeuge). Ich denke aber, die Warnungen könnten ignoriert werden.
Das Problem ist also vielmehr, dass mir keine Telegram-Nachrichten geschickt werden. Warum das so ist weiß ich nicht. Der Versand funktioniert mit anderen Scripten (Blockly) einwandfrei.
-
@brain Die Warnungen sind nicht normal und sollten eher nicht ignoriert werden. Da es eben Warnungen sind und keine Hinweise.
Zeig mal Deine Config bzw eine Push wird nur versand wenn ein Fehler länger nicht vorliegt also nicht sofort sondern mit einer Verzögerung von einer Minute, da Dein Fehler aber nicht so lange anhält sendet er auch keine Nachricht. Wenn in der Config anders konfiguriert wird ebenfalls keine Nachricht verschickt. Hast Du einen Drehgriffsensor? Dort kann man wunderbar die Sabotage meldung erzeugen...
-
@cash
Hmmm... Nun bin ich mir unsicher, ob ich richtig getestet habe. Zum Testen habe ich einfach einen LOWBAT-Datenpunkt auf 1 gesetzt. Daraufhin haben sich die von mir erzeugten Zählvariablen geändert, aber es wurde keine Nachricht verschickt.
Zum Testen habe ich nun noch einen Datenpunkt für die Anzeige in VIS erstellt. Dieser wird auch mit der Statusmeldung befüllt.
Hier auf jeden Fall mal meine Config, falls du diesen Teil des Skripts meinstconst Version = 1.63; const logging = true; //Sollte immer auf true stehen. Bei false wird garnicht protokolliert const debugging = false; //true protokolliert viele zusätzliche Infos const find_bug = false; //erhöht das Logging wird nur verwendet wenn ein aktulles Bug gesucht wird const show_each_device = false; //zeigt alle verfügbaren Datenpunkte je Device const autoAck = true; //Löschen bestätigbarer Kommunikationsstörungen (true = an, false = aus) const observation = true; //Dauerhafte Überwachung der Geräte auf Servicemeldungen aktiv (true = aktiv // false =inaktiv) const onetime = false; //Prüft beim Script Start ob derzeit Geräte eine Servicemeldung haben const with_time = false; //Hängt die Uhrzeit an die Serviemeldung //Geräte die nicht überwacht werden sollen. Komma getrennt erfassen const no_observation = 'LEQ092862x9, XXX'; //Instanz Cuxd ausschließen. Instanz als Zahl z. B. '1' oder bei Nichtnutzung hohe Nr eintragen z. B. '9' const CUXD = '9'; //pro Fehlertyp kann eine andere Prio genutzt werden const prio_LOWBAT = 0; const prio_UNREACH = 0; const prio_STICKY_UNREACH = 0; const prio_CONFIG_PENDING = 0; const prio_UPDATE_PENDING = 0; const prio_DEVICE_IN_BOOTLOADER = 0; const prio_ERROR = 0; const prio_ERROR_CODE = 0; const prio_FAULT_REPORTING = 0; const prio_SABOTAGE= 0; const prio_ERROR_NON_FLAT_POSITIONING = 0; //Variablen für Servicemeldung in Objekt schreiben // Wenn einer Meldung auftritt wird diese in ein Textfeld geschrieben. z. B. für vis const write_message = true; // true schreibt beim auftreten einer Servicemeldung die Serviemeldung in ein Objekt const id_Text_Servicemeldung = 'javascript.0.HomeMatic-Servicemeldungen.Text'; // Objekt wo die Servicemeldung hingeschrieben werden soll //Variablen für Pushover const sendpush = false; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt const pushover_Instanz0 = 'pushover.0'; // Pushover instance für Pio = 0 const pushover_Instanz1 = 'pushover.1'; // Pushover instance für Pio = 1 const pushover_Instanz2 = 'pushover.2'; // Pushover instance für Pio = 2 const pushover_Instanz3 = 'pushover.3'; // Pushover instance für Pio = -1 oder -2 let prio = -2; //nicht verändern die höchste Prio nach Fehlertyp wird verwendet let titel; let message; let device = 'TPhone'; //Welches Gerät soll die Nachricht bekommen //let _device = 'All'; //Variablen für Telegram const sendtelegram = true; //true = verschickt per Telegram Nachrchten // false = Telegram wird nicht benutzt const user_telegram = 'brain'; //User der die Nachricht bekommen soll //Variable zum verschicken der Servicemeldungen per eMail const sendmail = false; //true = verschickt per email Nachrchten // false = email wird nicht benutzt //Ergebnis in Datenfelder schreiben const write_state = true; //Schreibt die Ergebnisse der Servicemeldungen in Datenfelder. (true = schreiben, false, kein schreiben) //nicht benutzte Felder einfach leer lassen --> var id_IST_XXX = ''; const id_IST_LOWBAT = 'javascript.0.HomeMatic-Servicemeldungen.Anzahl_LOWBAT'/*Anzahl LOWBAT*/; const id_IST_LOW_BAT = ''; const id_IST_UNREACH = 'javascript.0.HomeMatic-Servicemeldungen.Anzahl_UNREACH'/*Anzahl_UNREACH*/; const id_IST_STICKY_UNREACH = 'javascript.0.HomeMatic-Servicemeldungen.Anzahl_STICKY_UNREACH'/*Anzahl_STICKY_UNREACH*/; const id_IST_CONFIG_PENDING = ''; const id_IST_UPDATE_PENDING = ''; const id_IST_DEVICE_IN_BOOTLOADER = ''; const id_IST_ERROR = ''; const id_IST_ERROR_NON_FLAT_POSITIONING = ''; const id_IST_ERROR_CODE = ''; const id_IST_FAULT_REPORTING = ''; const id_IST_SABOTAGE = ''; const id_IST_Gesamt = "javascript.0.HomeMatic-Servicemeldungen.Anzahl_GESAMT"/*Anzahl_GESAMT*/;
-
@brain sieht so weit gut aus. Bei dem Test kann keine Push kommen, da der von Dir veränderte Wert zu schnell wieder korrigiert wird. Du kannst Batterien entfernen oder eine Zwischensteckdose rausziehen. Dann musst Du aber ggf länger warten bis die CCU mal wieder nach dem Gerät fragt. Am Einfachsten sind eigentlich die Sabotagemeldungen.
Dein Test hat erstmal nur gezeigt das das Script grundsätzlich läuft und im Falle einer Servicemeldung richtig reagiert. Der Test zeigt aber auch das irgend etwas noch nicht passt und deshalb die Warnings kommen.