NEWS
Servicemeldungen - All inclusive für Homematic -
-
@sigi234 nein. Es ist zu lang. Die ersten Versionen hatte ich ja imForum. Nach der Umstellung konnte ich es dann nicht mehr einfügen.
Mir gefällt es in giuthub aber mittlerweile auch besser, da es so einfacher ist das Script zu pflegen (incl Versionierung).
-
@cash sagte in Servicemeldungen - All inclusive für Homematic -:
@Steff Ja das ist richtig. Es wird nur beim auftreten der Servicemeldung etwas gemeldet. Die Beseitigung wird nur im log protokolliert.
Ah OK, danke für die Rückmeldung.
Werde die neue Version später noch testen.Danke nochmals,
Gruß Steffen -
Danke für deine Mühe! Ein unverzichtbares Tool, wie ich finde.
Ich nutze es mit Telegram und hätte dazu eine Bitte: wäre es möglich, die Telegram-Nachrichten nur an einen bestimmten User zu senden (und das im Config-Bereich einzustellen)? Meine Frau möchte die Service-Meldungen nicht unbedingt sehen...müsste vermutlich so aussehen?
function send_telegram (_message) { sendTo('telegram.0', { text: _message, user: 'UserName', parse_mode: 'HTML' }); }
-
Kein Problem. User kann ich einbauen. Mache ich ja bei pushover auch.
-
von mir "gelöscht"
-
meine CCU hat grad die Meldung, dass ein Update verfügbar ist. Das Script greift die Meldung der CCU aber nicht ab oder?
-
Eine neue Firmware ist keine Servicemeldung. Die neue Firmware erscheint nur auf der Startseite der ccu nicht im Punkt Servicemeldunden. Also nein aber möglich wäre es, da wir die Firmware als Datenpunkt in iobroker haben. Man müsste aslo nur den Server von eq3 abfragen. Ich befürchte das hierfür meine Script Kenntnisse nicht ausreichen
-
@cash
Also ich habe die neue Firmware (2.41.8) installiert, bis jetzt ist alles Ok.
Ist eine kleine, aber wichtige Änderung wegen Sicherheit....Changelog 2.41.8 Fehlerbehebungen [HMCCU-153] Security Update des Web Session Managements der CCU (Unberechtigtes Login durch Manipulation mit der SessionID) Risiko: Angriffsmöglichkeit bestand - aus dem Internet: Wenn Port Forwarding eingerichtet war (siehe Warnung oben) - aus dem LAN: Wenn unsichere / nicht vertrauenswürdige Systeme Zugang zum LAN haben
-
mir ging es darum eine Nachricht ebzusetzen wenn eine neue Firmwareversion zur Verfügung steht.
Zur Zeit steht bei mir die Info, das eine neue Version zur Verfügung steht in der CCU. Die Frage ist nun
wie bekomme ich die Information von der CCU in iobroker... -
Aha, jetzt verstehe ich was du meinst...
Muss mal überlegen... -
Hätte noch ein paar Geräte einzupflegen:
HM-LC-Sw1-SM --- Batterietyp fehlt im Script
HM-LC-Sw1-SM --- Batterietyp fehlt im Script
HM-LC-Sw4-SM --- Batterietyp fehlt im Script
HM-LC-Sw4-SM --- Batterietyp fehlt im Script
HM-LC-Sw4-SM --- Batterietyp fehlt im Script
HM-Sys-sRP-Pl --- Batterietyp fehlt im ScriptDas sind allesamt Geräte an 230V, also ohneBatterie.
Vielen Dank für das Skript!
-
Hallo ich habe bislang noch das Script von paul53 und pix am laufen, zusätzlich teste ich gerade mit diesem Script.
Ist es möglich auch ein Fenster mit allen anstehenden Meldungen anzeigen zu lassen, so ähnlich war es in dem Vorgänger Script.
Habe an folgenden Stellen ein wenig gespielt.
//Variablen für Servicemeldung in Objekt schreiben // Wenn einer Meldung auftritt wird diese in ein Textfeld geschrieben. Auf dieses kann man dann reagieren //und z. B. die Nachricht per Telegram verschicken oder in vis anzeigen var write_message = true; // true schreibt beim auftreten einer Servicemeldung die Serviemeldung in ein Objekt var id_Text_Servicemeldung = 'MeineObjekte.0.TEST.NEU'/*Test neu*/;
In dem TAG wird die meldung geschrieben, wenn sie allerdings nicht mehr ansteht, wird diese Meldung auch nicht gelöscht.
//Ergebnis in Datenfelder schreiben var 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 = ''; var id_IST_LOWBAT = 'Systemvariable.0.Servicemeldungen.Anzahl_LOWBAT'/*Anzahl LOWBAT*/; var id_IST_LOW_BAT = ''; //var id_IST_G_LOWBAT = ''; var id_IST_UNREACH = "Systemvariable.0.Servicemeldungen.Anzahl_UNREACH"/*Anzahl_UNREACH*/; var id_IST_STICKY_UNREACH = "Systemvariable.0.Servicemeldungen.Anzahl_STICKY_UNREACH"/*Anzahl_STICKY_UNREACH*/; var id_IST_CONFIG_PENDING = ''; var id_IST_UPDATE_PENDING = ''; var id_IST_DEVICE_IN_BOOTLOADER = ''; var id_IST_ERROR = ''; var id_IST_ERROR_NON_FLAT_POSITIONING = ''; var id_IST_ERROR_CODE = ''; var id_IST_FAULT_REPORTING = ''; var id_IST_SABOTAGE = 'MeineObjekte.0.TEST.TABLE'/*Test neu*/; var id_IST_Gesamt = "Systemvariable.0.Servicemeldungen.Anzahl_GESAMT"/*Anzahl_GESAMT*/;
Hier habe ich auch gespielt, aber in der TEST.TABLE wird nichts geschrieben, wo im ioBroker findet man Systemvariable.0, konnte das nirgendwo finden.
-
@zahnheinrich Danke habe ich in der nächsten Version ergänzt.
@mike2712 Ich verstehe Deine Fragen nicht so ganz?
Das Script zeigt fast alle Servicemeldungen von allen Homematic Geräten, auch von Fenstern. Eine Servicemeldung wäre z. B. Batterie leer oder Sabotage.
Eine Servicemeldung wird nicht erzeugt beim öffnen eines Fensters.Der Umstand das das Feld id_Text_Servicemeldung nicht gelöscht wird wenn die Meldung weg ist ist mir bekannt. Ist historisch gewachsen und störte bisher nicht weil das Feld benutzt wurde um darüber z. B. etwas per Telegram zu verschicken. Ich werde das in einer der nächsten Versionen anpassen.
Meine eigenen Objekte führe ich unter Systemvariable.0
Du Deine anscheinend unter MeineObjekte.0Wenn Du das Script so laufen läßt wie gezeigt sollte es ein paar Fehler im Log bringen, da es bei Dir ja meine Felder nicht gibt?
Also am Besten die nicht benötigen Felder leeren mit ''Danach sollte es im Log keine Fehler geben. Aber es sollten dort viele Infos auftauchen zumindest wenn onetime =true...
-
@cash
danke für die Antwort,Ich würde gerne ein Fenster anzeigen lassen in dem alle anstehenden Meldungen stehen, dieses Beispiel ist blöd da nur eine vorhanden ist, wenn die Meldung nicht mehr vorhanden ist soll sie weg gehen, so war das in dem alten script.
-
@mike2712 sagte in Servicemeldungen - All inclusive für Homematic -:
Ich würde gerne ein Fenster anzeigen lassen in dem alle anstehenden Meldungen stehen, dieses Beispiel ist blöd da nur eine vorhanden ist, wenn die Meldung nicht mehr vorhanden ist soll sie weg gehen, so war das in dem alten script.
Ich würde mich auch freuen, wenn das gehen würde.
-
@cash
Folgende Meldungen habe ich im LOG
Variablen habe ich komplett angepasst
//Ergebnis in Datenfelder schreiben var 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 = ''; var id_IST_LOWBAT = 'MeineObjekte.0.Service.Meldungen.LOWBAT'/*Lowbat*/; var id_IST_LOW_BAT = ''; //var id_IST_G_LOWBAT = ''; var id_IST_UNREACH = 'MeineObjekte.0.Service.Meldungen.UNREACH'/*Unreach*/; var id_IST_STICKY_UNREACH = 'MeineObjekte.0.Service.Meldungen.STICKY_UNREACH'/*Sticky unreach*/; var id_IST_CONFIG_PENDING = ''; var id_IST_UPDATE_PENDING = ''; var id_IST_DEVICE_IN_BOOTLOADER = ''; var id_IST_ERROR = ''; var id_IST_ERROR_NON_FLAT_POSITIONING = ''; var id_IST_ERROR_CODE = ''; var id_IST_FAULT_REPORTING = ''; var id_IST_SABOTAGE = 'MeineObjekte.0.Service.Meldungen.SABOTAGE'/*Sabotage*/; var id_IST_Gesamt = 'MeineObjekte.0.Service.Meldungen.TOTAL'/*Total*/;
Welche Datentypen müssen hier angeben werden, ich habe überall Meldung Wrong Type... habe es mit Zahl und String versucht.
Wrong type of MeineObjekte.0.Service.Meldungen.No_UNREACH: "number". Please fix, while deprecated and will not work in next versions.
-
Gibt es eine Möglichkeit, einzelne Geräte von Meldungen auszuschliessen, weil sie vorübergehend ausser Betrieb sind?
-
@mike2712 die Objekte müssen vom Typ Zahl sein. Damit gibt es bei mir keine Meldungen. Ich nutze latest bei den Instanzen?
Dieses Script unterstützt das nicht mit alle Meldungen in einen Fenster. Das Script hat einen anderen Ansatz und dieser heißt wenn eine Meldung auftritt werde ich direkt benachrichtigt per Push. Generell würde ich diesen Ansatz auch gerne ermöglichen aber dazu müsste ich das komplette Script umschreiben und auf viele anderen Funktionen verzichten.
-
@zahnheinrich Gibt es diese Funktion nicht teilweise auf der ccu selber? Ich weiß nicht wie da der Stand der Dinge ist (zumindest war das in Planung). In meinen Script habe ich das nicht vorgesehen. Bei mir steckt eine Steckdose die ich nicht brauche trotzdem in der Steckdose somit habe ich damit keine Probleme.
-
@sveni_lee @sigi234 könntet Ihr mal dieses Script testen und im log schauen. Es sollte überprüfen ob Eure Firmware aktuell ist. Ob ich es in dieses Script einbaue oder ein sep. mache weiß ich aber noch nicht. Erst mal gucken ob es läuft. Bei mir kommt das meine Version nicht aktuell ist was auch stimmt. Ihr müsst im Script den Datenpunkt anpassen wo die aktuelle Firmware Version in Biobroker hinterlegt ist. Das ist irgendwo als Objekt im Rega.Adapter zu finden. Und Ihr müsst wählen ob Ihr eine ccu2 oder ccu3 habt.
var logging = true; var debugging = false; var CCU_Version = 2; //Hier die nr der CCU eintragen 2 = CCU2 oder 3 = CCU3 //Datenpunkt auswählen wo die installierte Version ersichtlich ist (aus Homematic.Rega Adapter) var id_Version_installiert = "hm-rega.0.MEQ0228930.0.FIRMWARE_VERSION"/*hm-rega.0.MEQ0228930.0.FIRMWARE_VERSION*/; //Eigentliches Script var ccu2 = 'http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345'; var ccu3 = 'http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU3&serial=12345'; var ccu; if(CCU_Version == 3){ccu = ccu3;} else{ccu = ccu2;} var request = require('request'), url = ccu; request({url : url}, function (error, response, body) { var Version_installiert = getState(id_Version_installiert).val; var Version = body.split("'"); if(error){ log('error: ' + error); } else{ if(Version_installiert == Version[1]){ if(logging){ log('Installierte Version der CCU ist aktuell'); } } else{ if(logging){ log('Version ist nicht aktuell. Installiert: ' +Version_installiert +' --- Verfügbare Version: '+Version[1]); } } if(debugging){ log('body: ' + body); log('Länge ' + Version.length + ' --- Version: ' + Version[1]); log('response: ' + JSON.stringify(response)); } } } );