NEWS
Servicemeldungen - All inclusive für Homematic -
-
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)); } } } );
-
@cash sagte in Servicemeldungen - All inclusive für Homematic -:
@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.
In der CCU gibt´s das nicht.
Wohl dagegen im dort verbreiteten Skript von Alchy.
Ich praktisch, wenn einzelne Aktoren, wie z.B. Funksteckdosen nur temporär in Gebrauch sind. -
@cash Ich benutze eigentlich auch latest
mit Zahl habe ich versucht und bekomme auch die Warnmeldungen, ich habe gesehen das es sowohl mit Zahl als auch String funktioniert, es werden jeweils die States beschrieben wenn ich das Script ausführe. -
funktioniert bei mir... (nachdem ich den State zur installierten Firmware angepasst habe)
Danke... ich könnte mit einem separaten script leben. einmal oder zweimal am tag das script starten lassen und gut... -
@sveni_lee was heißt es funktioniert? Wie sieht das Log aus? Hast Du dort auch eine Leerzeile erhalten? Ich vermute dort noch einen Fehler in einem Adapter?
-
@mike2712 komisch. Werde ich nochmal prüfen.
-
@zahnheinrich dann gibt es die Möglichkeit evtl bei Rasperymatic... Wie gesagt ich lasse ich die Steckdose einfach in einer normalen Steckdose somit kriege ich keine Meldung.
Für Unreach könnte ich das evtl einbauen. Muss ich mir aber genauer angucken...
-
na ich bekomme folgende Meldung im log
20:13:39.376 [info] javascript.0 Stop script script.js.common.Servicemeldung_CCU_Update 20:13:39.391 [info] javascript.0 Start javascript script.js.common.Servicemeldung_CCU_Update 20:13:39.391 [info] javascript.0 script.js.common.Servicemeldung_CCU_Update: registered 0 subscriptions and 0 schedules 20:13:39.443 [info] javascript.0 script.js.common.Servicemeldung_CCU_Update: Version ist nicht aktuell. Installiert: 2.41.5 --- Verfügbare Version: 2.41.8
EDIT:
ja im "richtigen log" ist eine Leerzeilejavascript.0 2019-03-07 20:13:39.442 info --- Verfügbare Version: 2.41.8 javascript.0 2019-03-07 20:13:39.442 info javascript.0 2019-03-07 20:13:39.442 info script.js.common.Servicemeldung_CCU_Update: Version ist nicht aktuell. Installiert: 2.41.5 javascript.0 2019-03-07 20:13:39.388 info script.js.common.Servicemeldung_CCU_Update: registered 0 subscriptions and 0 schedules javascript.0 2019-03-07 20:13:39.382 info Start javascript script.js.common.Servicemeldung_CCU_Update javascript.0 2019-03-07 20:13:39.375 info Stop script script.js.common.Servicemeldung_CCU_Update
-
Ok Genau wie bei mir. Nun ist die Antwort von sigi noch interessant weil er ja die aktuelle Version schon installiert hat und somit sollte er einen anderen Text kriegen. Danach guck ich mal weiter...
-
versuch mal folgendes:
var Version_installiert = (getState(id_Version_installiert).val).trim();
-
@cash sagte in Servicemeldungen - All inclusive für Homematic -:
Ok Genau wie bei mir. Nun ist die Antwort von sigi noch interessant weil er ja die aktuelle Version schon installiert hat und somit sollte er einen anderen Text kriegen. Danach guck ich mal weiter...
Was brauchst du von mir?