NEWS
[Vorlage] Generisches Fensteroffenskript + Vis
-
@AxelF1977 Ein Raum namens undefined läßt auf einen nicht zugeweisen Raum, aber zugeordnetem Verschluss schließen. Um mehr zu sagen mußt mir die Infos geben die ich jedem immer aus der Nase ziehen muß.
Was steht im Skriptlog? Wie sieht die Zuordnung der Funktion und Räume in der Objektliste aus? Welche Einstellungen sind im Skript? Wann tritt der Fehler auf, bei Start oder wenn ne Nachricht geschickt wird?
Du kannst versuchsweise mal den kompletten Skriptchannel löschen. Wird er wieder mit nem undefined Raum angelegt, dann kontrollier Deine Raumzuweisungen. Wenn Du der Meinung bist das da alles paßt, dann melde Dich mit obengenannten Infos wieder. -
@Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Um mehr zu sagen mußt mir die Infos geben die ich jedem immer aus der Nase ziehen muß.Was steht im Skriptlog?
Musst Du doch gar nicht, stand doch schon weiter oben
Log vom Script (unterhalb)
@Pittini ich bekomme im Script folgende Fehlermeldungen
20:27:29.302 error javascript.0 (23702) at ReplaceChars (script.js.Fenster.Alle.Fensteroffenerkennung:339:32)
20:27:29.302 error javascript.0 (23702) at CreateOverviewTable (script.js.Fenster.Alle.Fensteroffenerkennung:309:219)
20:27:29.302 error javascript.0 (23702) at ReplaceChars (script.js.Fenster.Alle.Fensteroffenerkennung:339:32)
20:27:29.302 error javascript.0 (23702) at CreateOverviewTable (script.js.Fenster.Alle.Fensteroffenerkennung:309:219)
20:27:29.302 error javascript.0 (23702) at main (script.js.Fenster.Alle.Fensteroffenerkennung:198:5)
20:27:29.302 error javascript.0 (23702) at Object.<anonymous> (script.js.Fenster.Alle.Fensteroffenerkennung:161:13)Im Script selber habe ich nichts verändert, außer in Zeile 22 UseSay zu deaktiveren.
Vor 5 min auf Git gezogen
Daher sehe ich nichts in VIS, und aktualisieren tut er Stati auch nicht
@Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
@AxelF1977 Ein Raum namens undefined läßt auf einen nicht zugeweisen Raum, aber zugeordnetem Verschluss schließen. Um mehr zu sagen mußt mir die Infos geben die ich jedem immer aus der Nase ziehen muß.
Was steht im Skriptlog? Wie sieht die Zuordnung der Funktion und Räume in der Objektliste aus?@Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Welche Einstellungen sind im Skript?
Im Script selber habe ich nichts verändert, außer in Zeile 22 UseSay zu deaktiveren. Der Fehler tritt im Log laufend auf, also immer wenn das Script durch läuft.
Der Raum namens undefines kann 2 Gründe haben. Einmal gibt es eine Dachlucke, wo ich den State per Skript erzeuge, aus der Prozentangabe des Schalters, der ein Rolladenschalter ist, de rhat von hause aus keinen state (false/true), sondern level 0-100%
Der Raum Küche heißt einmal Küche, einmal Kitchen. Wegen einem anderen Skript, muss ich das leider so beibehalten. Zumindest bis ich das Script Heizung gegen den Adapter tausche.
Das ist die Lage
-
@AxelF1977 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Musst Du doch gar nicht, stand doch schon weiter oben
Log vom Script (unterhalb)Da muß doch mehr stehen als diese 6 Zeilen, ich brauch das ganze Log, nicht nur den Fehlerteil. Am besten das Log beim Skriptstart. Und wenn da was rotes oder gelbes auftaucht (was ja der Fall ist), das Iobroker Log dazu.
Der Raum namens undefines kann 2 Gründe haben. Einmal gibt es eine Dachlucke, wo ich den State per Skript erzeuge, aus der Prozentangabe des Schalters, der ein Rolladenschalter ist, de rhat von hause aus keinen state (false/true), sondern level 0-100%
Ist dem Skript egal wie der State erzeugt wird. Wohin schreibt das Skript denn den Wert? Is das eingesonderter DP im javascript.0 channel? Wenn ja, zeig mal das ganze als Screenshot inkl. des/der darüberliegenden Channels und inkl. der rechten Spalten mit Bleistift/Mülleimer/Schraubenschlüssel, ich hab so den Verdacht dasses da hängt.
Und wenn Du schon selber sagst dasses zwei Gründe haben kann, dann verifizier das doch mal indem Du einen mal den "Verschluss" wegnimmst und dann dem 2ten. Wo der Fehler dann weg ist, das ist der Bösewicht und man kann da gezielter Ursachenforschung betreiben.
-
@Pittini danke für die Ausführliche Antwort. Ich werde alles nach dem Feierabend einstellen.
Danke
-
@Pittini ich habe jetzt mal alle Räume und Funktionen bereinigt.
Das war alles murks. Da ich nun auf den Heatingcontroll Adapter umgestiegen bin, der jetzt läuft, konnte ich die Benennung von Küche und Kitchen ändern. Ich habe die Funktionen teils über den ganzen Raum gehabt, anstatt nur bei dem einzelnen Datenpunkt.
Nachdem das alles geschehen war, läuft das Script.
Danke für die Denkanstöße und die unermüdliche Hilfe.
-
@Pittini habe eben den JS Adapter upgadeted und seit dem kommen die Öffnungszeiten anders als früher:
neu
früher
-
@kilasat sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
habe eben den JS Adapter upgadeted und seit dem kommen die Öffnungszeiten anders als früher:
Ja, normal wenn die Fenster bei Skriptstart schon offen waren nimmt er den Zeitstempel und macht seine 3 Meldungen oder was Du halt eingestellt hast mit den korrekten Daten. Its not a Bug, its a Feature.
-
@Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
@kilasat sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
habe eben den JS Adapter upgadeted und seit dem kommen die Öffnungszeiten anders als früher:
Ja, normal wenn die Fenster bei Skriptstart schon offen waren nimmt er den Zeitstempel und macht seine 3 Meldungen oder was Du halt eingestellt hast mit den korrekten Daten. Its not a Bug, its a Feature.
Ja perfekt. Hat brav aufgehört und läuft wie ein Uhrwerk.
-
@Pittini
Moin Moin,
ich lese gerade dieses Script von Beitrag 1 bis jetzt 167 durch.
Habe selbst dieses Script noch in Testnutzung. Testnutzung weil ich eigentlich zwei Bereiche separat abdecken möchte:
1x Obergeschoss und 1x ALLE Kontakte zusammen.
Heißt Script1 nur die OG's und Script2 alle Kontakte (EG, OG, Anbauten, Garage etc etc) - genutzt werden ausschließlich die Kontakte von Homematic.
Das Script1 (OG) funktioniert nun endlich... Ich musste jeden Kontakt im ioBorker von Hand anpassen, da die Räume immer Chanel-weise zugeordnet wurden und nicht nur der eigentliche Kontakt - egal sei's drum Script1 = OKNun zum Problemkind Script2
Hier wird immer ein altes CuxD-Gerät gemeldet, welches sich weder auf der CCU3 noch im ioBroker-Adapter von Homematic zu finden lässt.2.6.2020, 14:09:31.389 [info ]: javascript.0 (840) script.js.home.Fensterscript-v2-all: getObject(id=hm-rpc.1.CUX2801002.13, enumName=rooms) => does not exist 2.6.2020, 14:09:31.391 [error]: javascript.0 (840) script.js.home.Fensterscript-v2-all: script.js.home.Fensterscript-v2-all:103 2.6.2020, 14:09:31.391 [error]: javascript.0 (840) at script.js.home.Fensterscript-v2-all:103:57
Wie gesagt es gibt kein CUX2801002.xx-Gerät.
Zu meinem Aufbau:
- Kontakte im OG gehören den Räumen TFK-OG und TFK-Alle an
- Kontakte im EG gehören den Räumen TFK-EK und TFK-Alle an
- ioBroker läuft in ESXi-VM mit 8GB auf nem Intel i3
- Homematic in eine RaspberryMatic auf CCU3-Basis
Frage:
Kann ich überhaupt zwei Script-Instanzen diese Scriptes laufen lassen?
Wieso könnte sich das Script an einem nicht vorhandenen Gerät aufhängen?Grüße al-79
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich musste jeden Kontakt im ioBorker von Hand anpassen, da die Räume immer Chanel-weise zugeordnet wurden und nicht nur der eigentliche Kontakt - egal sei's drum Script1 = OK
- Die Räume dürfen natürlich channelweise zugeordnet sein, der ganze Kontakt befindet sich ja in einem Raum. Nur die Funktion Verschluss oder Fenster etc. darf nicht dem ganzen channel, sondern nur dem Schalt Datenpunkt zugeordnet sein.
Hier wird immer ein altes CuxD-Gerät gemeldet, welches sich weder auf der CCU3 noch im ioBroker-Adapter von Homematic zu finden lässt.
- Sowas hatte ich auch schon mal. Das passiert scheinbar wenn man ein Gerät löscht ohne vorher dessen Raum und Funktionszuordnung zu löschen. Bei mir war die Lösung, in die Aufzählungen zu gehen, auf den Raum bzw. die Funktion zu gehen welche das Gerät mal hatte und das dort tatsächlich noch aufgeführte Gerät zu löschen.
Kann ich überhaupt zwei Script-Instanzen diese Scriptes laufen lassen?
- Ist eigentlich nicht vorgesehen, sollte aber machbar sein. Wird aber auf jeden Fall Anpassungen im Skript brauchen, anderes Skriptverzeichnis, anderen Namen für die Funktion. Was es mit Deinen seltsamen Raumzuordnungen auf sich hat erschliesst sich mir allerdings nicht und wird zu seltsamen Meldungen führen, wie "Fenster TFK-OG geschlossen" führen, was iwie sinnfrei ist.
Edit:
Wieso könnte sich das Script an einem nicht vorhandenen Gerät aufhängen?
- Siehe .2, aaber ich vermute da evtl. noch eine falsche Raum oder Funktionszuweisung Deinerseits. Das Skript geht die Aufzählung der Funktionen durch, findet es eine passende, sucht es sich dazu den Raum raus und ermittelt dann den Namen. Eine "Leiche" gemäß .2 sollte da kein Problem machen außer es ist iwo ein ganzer Channel der Funktion zugeordnet.
-
Sorr ymeint nicht Räume sondern Gewerke / Funktion ...
-
@al-79 Siehe Edit im letzen Post.
-
@Pittini
Nabend,
nun habe ich doch nur ein Script erst einmal versucht.
ioBroker, Javascript & VM wurden bereits mehrfach neugestartet aber ich bekommen nun das Script nicht mehr zu laufen. Es werden ein paar Punkte abgearbeitet aber die Tabelle wird nicht mehr erzeugt.Hier ein Auszug aus dem Fehler-Log...
javascript.0 2020-06-03 20:20:46.523 error (25674) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2020-06-03 20:20:46.523 error (25674) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) javascript.0 2020-06-03 20:20:46.523 error (25674) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-06-03 20:20:46.523 error (25674) at (anonymous function).get (/opt/iobroker/node_modules/iobroker.objects-redis/index.js:1:93703) javascript.0 2020-06-03 20:20:46.523 error (25674) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1910:38 javascript.0 2020-06-03 20:20:46.523 error (25674) at Object.<anonymous> (script.js.home.Fensterscript-v2-OG:164:13) javascript.0 2020-06-03 20:20:46.523 error (25674) at main (script.js.home.Fensterscript-v2-OG:201:5) javascript.0 2020-06-03 20:20:46.523 error (25674) at CreateOverviewTable (script.js.home.Fensterscript-v2-OG:312:219) javascript.0 2020-06-03 20:20:46.523 error (25674) at ReplaceChars (script.js.home.Fensterscript-v2-OG:342:32) javascript.0 2020-06-03 20:20:46.523 error (25674) Error in callback: TypeError: Cannot read property 'replace' of undefined
Ich weiß Glaskugeln sind mangelware.... aber wat könnte dies sein?
Javascript ist 4.6.17Grüße
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich weiß Glaskugeln sind mangelware.... aber wat könnte dies sein?
Iwo kein Raum zugeordnet aber ne Funktion vermut ich mal. Zeig doch mal nen Screenshot von der Objektliste wie Du das gesetzt hast.
-
Klar kein Problem.
-
soo hab's mit deiner Frage bzgl Raum nun nochmal getestet... ich muss dem .STATE direkt den Raum UND die Funktion zuweisen... In der Beschreibung im GIThub steht es reicht den Raum dem Gerät zuzuweisen nicht dem .STATE....
Nun funktionierts....
Ist evtl nur ne Eigenart von Homematic-Sensoren ?Wie aufwendig wäre es das Script für mehrere Etage umzuschreiben?
Grüße
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
oo hab's mit deiner Frage bzgl Raum nun nochmal getestet... ich muss dem .STATE direkt den Raum UND die Funktion zuweisen... In der Beschreibung im GIThub steht es reicht den Raum dem Gerät zuzuweisen nicht dem .STATE....
Nun funktionierts....
Ist evtl nur ne Eigenart von Homematic-Sensoren ?Wozu mach ich in der Anleitung extra nen Screenshot dazu? Wozu schreib ich Dir das in der Antwort oben unter .1 extra nochmal?
Ist in Deinem Screenshot immer noch falsch an sich. Der Raum wird dem GANZEN GERÄT zugeordnet, weil das das ganze Gerät sich ja physikalisch in einem Raum befindet. Die Funktion wird nur dem einen bestimmten Datenpunkt zugeordnet weil ein Gerät ja mehrere Funktionen haben kann. Is doch eigentlich logisch oder?Wie aufwendig wäre es das Script für mehrere Etage umzuschreiben?
Hab ich Dir auch schon oben unter .3 beantwortet. Der Aufwand das zu testen is normal 5 Minuten. Zwei Skriptvariablen ändern im Einstellungsbereich und ne Extra Funktion anlegen und zuweisen. Letzteres hast ja glaub ich eh schon gemacht.
-
Sorry mit der Nutzung für mehrer Etagen habe ich gedacht du meintest es müssen im Script function.() angepasst / geändert werden... Du meintest aber die Funktion am Sensor... ja die habe ich schon zugewiesen.
Die zwei scriptvariablen sind ja "nur" der javascript.pfad und die Funktion des Melders....
-
Ich hab auch 2 Versionen des Scriptes laufen, das funktioniert problemlos wenn man die beiden Sachen anpasst. Das erste nutze ich zur Kontrolle und Anzeige welche Fenster im Haus offen/geschlossen sind und das 2te verwende ich für meine Heizungssteuerung. Ich nutze 2 Scripte weil ich bei der Heizungssteuerung einen Fensterkontakt nicht nutzen möchte, diesen aber für meine Kontrolle angezeigt bekommen möchte.
-
soo nachdem ich das Script nun für drei Etagen fertig hatte, musste ich heute feststellen, dass sich ioBroker die Räume nicht gemerkt hat und dann logischerweise das Script nicht mehr funktioniert.
Hat das schon jemand gehabt? - also dass ioBroker die Räume & Funktionen nicht dauerhaft behält.
Ich habe schon folgendes probiert:- Räume & Funktionen angepasst - dann nichts weiter gemacht - Zuweisung bleibt dann einige Zeit.
- Räume & Funktionen angepasst - dann ioBroker neu gestartet - Zuweisung bleibt auch einige Zeit.
- Räume & Funktionen angepasst - dann ESXi-VM neu gestartet - Zuweisung bleibt auch einige Zeit.
Ich habe keinen Hinweis dazu gefunden, wann bzw durch was, genau die Zuweisung wieder Rückgängig gemacht wird.
Grüße