Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fehler mit JS-Controller Version 2.0.2 Beta #81

Closed
sigi2345 opened this issue Sep 19, 2019 · 95 comments
Closed

Fehler mit JS-Controller Version 2.0.2 Beta #81

sigi2345 opened this issue Sep 19, 2019 · 95 comments
Labels
bug Something isn't working

Comments

@sigi2345
Copy link

Screenshots & Logfiles
Screenshot (4139)_LI

Screenshot (4137)

Versions:

  • Adapter version: 0.2.4
  • JS-Controller version: 2.0.2
  • Node version: 10.16.3
  • Operating system: Windows

Additional context
Neuer Beta JS-Controller installiert, seit dem funktioniert der Adapter nicht mehr Richtig.
Die UI wird geöffnet, aber es kommen keine Daten mehr und man kann auch keine Geräte mit den Icon Bleistift bearbeiten.
Sigi

@Apollon77
Copy link
Contributor

Anything in the log?

@Apollon77
Copy link
Contributor

maybe when you start adapter in debug mode?

@Apollon77
Copy link
Contributor

PS: Debug mode can be nowe changed on the floy: system.adapter.NAME.X.logLevel :-)

@sbormann
Copy link
Owner

Hi Sigi,
bitte mal posten, was bei geöffneter Entwicklerkonsole (F12) gemeldet wird, sowohl in der Admin-Oberfläche, als auch im Frontend. Ist bestimmt irgendwas mit dem socket... LG

@sbormann sbormann added the bug Something isn't working label Sep 20, 2019
@Apollon77
Copy link
Contributor

Wenn Socket dann sollte der controller 2.0 aber raus sein ... ... we will see :-)

@sbormann
Copy link
Owner

Ja, bin mal auf die Fehlermeldungen gespannt. Hatte noch keine Gelegenheit den 2.0 Controller zu testen - das mit dem Socket war nur so ein Gefühl ;)

@sigi2345
Copy link
Author

Screenshot (8)

@Apollon77
Copy link
Contributor

Und im normalen log ist nix? Port 8091 wird von wem bereitgestellt?

@sigi2345
Copy link
Author

sigi2345 commented Sep 20, 2019

Und im normalen log ist nix? Port 8091 wird von wem bereitgestellt?

Adapter WEB , diesen habe ich umgestellt weil ich ja 2 Installationen habe.
Log per Mail gesendet.

@Apollon77
Copy link
Contributor

Du rennst denke ich auch in den Bug rein der im Forum berichtet wurde:

2019-09-20 20:39:45.438 - error: host.Medion(iobroker) TypeError: Cannot read property 'admin.admin' of undefined
at ObjectsInMemoryServer._readDir (C:\Program Files\iobroker\iobroker\node_modules\iobroker.js-controller\lib\objects\objectsInMemFileDB.js:584:50)
at checkFileRights (C:\Program Files\iobroker\iobroker\node_modules\iobroker.js-controller\lib\objects\objectsInMemFileDB.js:683:33)
at objects.checkFile (C:\Program Files\iobroker\iobroker\node_modules\iobroker.js-controller\lib\objects\objectsUtils.js:248:20)
a

Bitte mal auf die 2.0.5 warten und neu versuchen. Die sollte das fixen

@sigi2345
Copy link
Author

Ok, 2.0.5 installiert. IQontrol auch neu installiert. Bleistift geht jetzt. Daten kommen keine. Kann es sein das keine Werte kommen weil ich den Web Adapter umgestellt habe? Auf Port 8107.

Screenshot (15)_LI

@Apollon77
Copy link
Contributor

Was zeigt Browser Konsole?

@sigi2345
Copy link
Author

Was zeigt Browser Konsole?

Screenshot (18)_LI

@Apollon77
Copy link
Contributor

Deine object dB is file oder redis?

@sigi2345
Copy link
Author

Deine object dB is file oder redis?

file

@simatec
Copy link

simatec commented Sep 21, 2019

Kann auf meiner Testumgebung den fehler auch bestätigen

@Apollon77
Copy link
Contributor

Ich denke es hat was mit dem file abholen zu tun. Controller 2.0 ist da etwas strikter als vorher. Muss ich mir ansehen.

Ich habe eine Vermutung. Die muss ich aber erst bestätigen.

@Apollon77
Copy link
Contributor

Bitte mal die Ausgabe von „iobroker list files“ Posten.

@Apollon77
Copy link
Contributor

Aber jetzt mal frech gefragt ... ist der Pfad korrekt? Da wo die 404er stehen das sind userimages ... muss das nicht "iqontrol.meta" als Basispfad sein?

@Apollon77
Copy link
Contributor

Und BTW: Diese Migration der Userfiles die Du eingebaut hast per "rename" ... sorry aber die dürfte so nicht tun ... auch vorher nicht. Rename geht nur "innerhalb" einer "Basis-ID" ... Du willst ja aber von iqontrol -> iqontrol.meta verschieben, korrekt? Das kann rename nicht. Um das zu tun musst Du die Files lesen und neu schreiben

@Apollon77
Copy link
Contributor

@sigi2345 Versuch mal so ein File was in deinem Letzten Screenshot ein Error 404 gab mit "iqontrol.meta" anstelle "iqontrol" im Browser aufzurufen. kommt es dann?

@Apollon77
Copy link
Contributor

Weiter: Man kann mit controller 2.0 auch keine Bilder via Admin hochladen. grund: Der Pfad der ensteht ist userimages//filename.png ... wenn man ins "root" hochlädt ... Ich hab das im controller 2.0 jetzt gefixt das der Pfad korrekt umgeschrieben wird (also mehrere "/" korrekt ersetzt durch eins), aber bin nicht sicher ob das 100% kompatibel zu vorher ist.

Mit den letzten Änderungen (kommt nachher als 2.0.6) kann ich zumindestens Images hochladen via iqontrol aktuelle Version.

Verzeichnisse gehen immer noch nicht. Das würde ich dich bitten im Adapter zu fixen. Aktuell liesst Du Verzeichnisse und wenn Sie keinen Fehler liefern sind sie existent. Das war bisher auf File ebene korrekt, aber auch hier war es schon möglich ganze Verzeichnisstrukturen auf einen Schlag anzulegen auch wenn die Parents nicht da waren. Also um zu checken ob ein Dir da ist ist es korrekter das Parentverzeichnis zu lesen und zu prüfen ob da ein Eintrag mit "isDir=true" mit dem Namen zurückkommt.

@sigi2345
Copy link
Author

@sigi2345 Versuch mal so ein File was in deinem Letzten Screenshot ein Error 404 gab mit "iqontrol.meta" anstelle "iqontrol" im Browser aufzurufen. kommt es dann?

Mache ich, habe einen kleinen in der Birne. Bruder hat 50er Feier.

@Apollon77
Copy link
Contributor

2.0.6 vom controller auf GitHub.
@sigi2345 Koi stress

@sbormann
Copy link
Owner

Verzeichnisse gehen immer noch nicht. Das würde ich dich bitten im Adapter zu fixen. Aktuell liesst Du Verzeichnisse und wenn Sie keinen Fehler liefern sind sie existent. Das war bisher auf File ebene korrekt, aber auch hier war es schon möglich ganze Verzeichnisstrukturen auf einen Schlag anzulegen auch wenn die Parents nicht da waren. Also um zu checken ob ein Dir da ist ist es korrekter das Parentverzeichnis zu lesen und zu prüfen ob da ein Eintrag mit "isDir=true" mit dem Namen zurückkommt.

Hi, kannst Du mir noch ein paar Tipps geben, was ich genau nachbessern soll? Wie kann man ganze Verzeichnisbäume anlegen, auch wenn die parents nicht da sind? Und wo soll ich das mit dem parent und isDir=true machen? In der checkExistance-Funktion (Zeile 2206)? Danke und VG!

@sigi2345
Copy link
Author

Erkenntnis ist: iqcontrol geht mit js 1.5.14
Mit 2.0.6 nicht. Es kommen keine Werte . Backend geht aber.

@Apollon77
Copy link
Contributor

Also ich baue noch am file Kram. Vllt krieg ich es kompatibel. Warum keine Werte kommen wäre interessant zu wissen woran es liegt. Da habe ich keine Erklärung.

@Apollon77
Copy link
Contributor

Also File Handling tut nun mit der 2.0.7 vom controller wie vorher.

Jetzt: Woran kann es liegen das keine Daten kommen?

@sigi2345
Copy link
Author

sigi2345 commented Sep 22, 2019

Also File Handling tut nun mit der 2.0.7 vom controller wie vorher.

Jetzt: Woran kann es liegen das keine Daten kommen?

Geht leider noch nicht.
Mir ist aufgefallen, das wenn ich irgendetwas ändere und auf speichern klicke diese Meldung kommt.
Dieses Verhalten habe ich beim Normalen System (js-controller 1.5.14) nicht. Es scheint so als die Änderungen nicht übernommen werden.
Screenshot (34)

@simatec
Copy link

simatec commented Sep 25, 2019

Habe soeben das ganze auch noch einmal mit den aktuellen Versionen auf meinem Testsystem durchgespielt.
Werte kommen jetzt und schalten kann man auch. Allerdings funktionieren jetzt keine PopUp Menüs mehr.
Habe es mit dem Gerätetyp Thermostat und Garagentür getestet und konnte in beiden Fällen das Popup nicht öffnen, um Werte wie z.B. die Temperatur zu regeln.

Iqontrol: 0.2.6
JS-Controller: 2.0.9

@ihavenonick
Copy link

geht bei mir
grafik

@Apollon77
Copy link
Contributor

Dann am besten neues Issue anlegen :-))
Link zu Browser Konsole im Forum https://forum.iobroker.net/post/303429

@Apollon77
Copy link
Contributor

BTW: Die Codezeile verweist auf _linkedWindowOpenReportingId ... was ist die beu euch woes Fehler gitb? gesetzt oder nicht?

@sigi2345
Copy link
Author

Habe soeben das ganze auch noch einmal mit den aktuellen Versionen auf meinem Testsystem durchgespielt.
Werte kommen jetzt und schalten kann man auch. Allerdings funktionieren jetzt keine PopUp Menüs mehr.
Habe es mit dem Gerätetyp Thermostat und Garagentür getestet und konnte in beiden Fällen das Popup nicht öffnen, um Werte wie z.B. die Temperatur zu regeln.

Iqontrol: 0.2.6
JS-Controller: 2.0.9

Schließe mich an:

Screenshot (62)

@sigi2345
Copy link
Author

sigi2345 commented Sep 25, 2019

BTW: Die Codezeile verweist auf _linkedWindowOpenReportingId ... was ist die beu euch woes Fehler gitb? gesetzt oder nicht?

Nein

Screenshot (67)

@ihavenonick
Copy link

Ja, aber bei mir funktioniert es auch:
grafik

@simatec
Copy link

simatec commented Sep 25, 2019

WindowOpenReporting ist doch ein Datenpunkt für das thermostat, welches mit einem Fensterkontakt verknüpft ist und hat nichts mit dem PopUp zu tun.

Bei dem Gerät "Garagentor" gibt es z.B. WindowOpenReporting garnicht ...

@sigi2345
Copy link
Author

Ja, aber bei mir funktioniert es auch:
Automatisch oder Manuel erstellt?

@ihavenonick
Copy link

Alles automatisch angelegt und das Popup kommt bei mir auch zum Einstellen der Temperatur am Thermostat.

@simatec
Copy link

simatec commented Sep 25, 2019

Bei mir passiert in der Console folgendes beim Aufruf und die Werte kommen nicht sofort. Erst nach ändern der Werte werden sie bis zum nächsten Aufruf angezeigt.

Already waiting for object: javascript.0.Test.WZTemp index.js:649 Fetch object: javascript.0.Test.WZTemp2 2index.js:645 Already waiting for object: javascript.0.Test.WZTemp2 index.js:655 Fetched Object: javascript.0.Test.Fenster2 index.js:655 Fetched Object: javascript.0.Test.Fenster3 index.js:655 Fetched Object: javascript.0.Test.WZLicht index.js:655 Fetched Object: javascript.0.Test.WZLicht2 index.js:655 Fetched Object: javascript.0.Test.WZTemp index.js:3097 Uncaught TypeError: Cannot read property 'val' of undefined at Array.updateFunction (index.js:3097) at updateState (index.js:1271) at index.js:656 at Object.<anonymous> (conn.js:918) at n.onack (socket.io.js:3) at n.onpacket (socket.io.js:3) at n.<anonymous> (socket.io.js:3) at n.emit (socket.io.js:2) at n.ondecoded (socket.io.js:1) at s.<anonymous> (socket.io.js:3) updateFunction @ index.js:3097 updateState @ index.js:1271 (anonymous) @ index.js:656 (anonymous) @ conn.js:918 n.onack @ socket.io.js:3 n.onpacket @ socket.io.js:3 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.ondecoded @ socket.io.js:1 (anonymous) @ socket.io.js:3 r.emit @ socket.io.js:1 s.add @ socket.io.js:1 n.ondata @ socket.io.js:1 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 (anonymous) @ socket.io.js:2 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 n.onData @ socket.io.js:2 ws.onmessage @ socket.io.js:3 index.js:655 Fetched Object: javascript.0.Test.WZTemp2 index.js:3097 Uncaught TypeError: Cannot read property 'val' of undefined at Array.updateFunction (index.js:3097) at updateState (index.js:1271) at index.js:656 at Object.<anonymous> (conn.js:918) at n.onack (socket.io.js:3) at n.onpacket (socket.io.js:3) at n.<anonymous> (socket.io.js:3) at n.emit (socket.io.js:2) at n.ondecoded (socket.io.js:1) at s.<anonymous> (socket.io.js:3) updateFunction @ index.js:3097 updateState @ index.js:1271 (anonymous) @ index.js:656 (anonymous) @ conn.js:918 n.onack @ socket.io.js:3 n.onpacket @ socket.io.js:3 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.ondecoded @ socket.io.js:1 (anonymous) @ socket.io.js:3 r.emit @ socket.io.js:1 s.add @ socket.io.js:1 n.ondata @ socket.io.js:1 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 (anonymous) @ socket.io.js:2 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 n.onData @ socket.io.js:2 ws.onmessage @ socket.io.js:3 index.js:3097 Uncaught TypeError: Cannot read property 'val' of undefined at Array.updateFunction (index.js:3097) at updateState (index.js:1271) at index.js:3480 at index.js:677 at n.<anonymous> (conn.js:647) at n.onack (socket.io.js:3) at n.onpacket (socket.io.js:3) at n.<anonymous> (socket.io.js:3) at n.emit (socket.io.js:2) at n.ondecoded (socket.io.js:1) updateFunction @ index.js:3097 updateState @ index.js:1271 (anonymous) @ index.js:3480 (anonymous) @ index.js:677 (anonymous) @ conn.js:647 n.onack @ socket.io.js:3 n.onpacket @ socket.io.js:3 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.ondecoded @ socket.io.js:1 (anonymous) @ socket.io.js:3 r.emit @ socket.io.js:1 s.add @ socket.io.js:1 n.ondata @ socket.io.js:1 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 (anonymous) @ socket.io.js:2 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 n.onData @ socket.io.js:2 ws.onmessage @ socket.io.js:3 2index.js:3097 Uncaught TypeError: Cannot read property 'val' of undefined at Array.updateFunction (index.js:3097) at updateState (index.js:1271) at index.js:491 updateFunction @ index.js:3097 updateState @ index.js:1271 (anonymous) @ index.js:491 setTimeout (async) onUpdate @ index.js:487 (anonymous) @ conn.js:373 n.emit @ socket.io.js:2 n.onevent @ socket.io.js:3 n.onpacket @ socket.io.js:3 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.ondecoded @ socket.io.js:1 (anonymous) @ socket.io.js:3 r.emit @ socket.io.js:1 s.add @ socket.io.js:1 n.ondata @ socket.io.js:1 (anonymous) @ socket.io.js:3 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 (anonymous) @ socket.io.js:2 n.emit @ socket.io.js:2 n.onPacket @ socket.io.js:2 n.onData @ socket.io.js:2 ws.onmessage @ socket.io.js:3 ind

@sigi2345
Copy link
Author

Frage, gibt es ev. eine Möglichkeit als Option default Werte zu laden? Also Farbe, Schriften usw. zurück zu setzen.

Mit dem (X) hinter jeder Option wird wieder der Default-Wert gesetzt.

Ja, das weis ich. Ich meine ALLE auf einmal auf Default Wert.

@sbormann
Copy link
Owner

Hi, nein, diese Funktion gibt es nicht, dazu musst Du leider viele (X)e drücken :)

@sbormann
Copy link
Owner

Habe soeben das ganze auch noch einmal mit den aktuellen Versionen auf meinem Testsystem durchgespielt.
Werte kommen jetzt und schalten kann man auch. Allerdings funktionieren jetzt keine PopUp Menüs mehr.
Habe es mit dem Gerätetyp Thermostat und Garagentür getestet und konnte in beiden Fällen das Popup nicht öffnen, um Werte wie z.B. die Temperatur zu regeln.
Iqontrol: 0.2.6
JS-Controller: 2.0.9

Schließe mich an:

Screenshot (62)

Hi Sigi (und die Anderen mit dem Problem): Bitte noch mal bei der Fehlermeldung ganz rechts auf das index.js:3105 klicken und mit den Screenshot schicken, wo genau in der Zeile die rote Markierung ist (also an welcher Stelle in der Zeile es hakt).

Ergänzend wäre noch ganz gut, den Inhalt der Variablen _linkedWindowOpenReportingId und states[_linkedWindowOpenReportingId] zu kennen: Dazu diesen Text in der Zeile markieren und mit der Maus drüber fahren, dann wird der Inhalt der Variable in einem Popup angezeigt. Das ebenfalls schicken bitte.

VG

@sigi2345
Copy link
Author

sigi2345 commented Sep 26, 2019

Hi Sigi (und die Anderen mit dem Problem): Bitte noch mal bei der Fehlermeldung ganz rechts auf das index.js:3105 klicken und mit den Screenshot schicken, wo genau in der Zeile die rote Markierung ist (also an welcher Stelle in der Zeile es hakt).

if (typeof _linkedWindowOpenReportingId !== udef && typeof states[_linkedWindowOpenReportingId] !== udef && typeof states[_linkedWindowOpenReportingId].val !== udef && states[_linkedWindowOpenReportingId].val) $("[data-iQontrol-Device-ID='" + _deviceId + "'].iQontrolDeviceState").append("&nbsp;<image src='./images/wot.png' style='width:12px; height:12px;' />");

Screenshot (73)

Screenshot (75)

@Apollon77
Copy link
Contributor

@sbormann umfalls "undef" auch null? :-)

@simatec
Copy link

simatec commented Sep 26, 2019

Ich habe mir mal den Code angeschaut und den Fehler gefixt.
Jetzt kommen alle Werte sauber und die Popups gehen auch wieder ...

Hier der Link zum PR: #83

@sigi2345
Copy link
Author

Ich habe mir mal den Code angeschaut und den Fehler gefixt.
Jetzt kommen alle Werte sauber und die Popups gehen auch wieder ...

Hier der Link zum PR: #83

Bei mir nicht? Gibt es eine neue Version?

@simatec
Copy link

simatec commented Sep 27, 2019

Ich habe mir mal den Code angeschaut und den Fehler gefixt.
Jetzt kommen alle Werte sauber und die Popups gehen auch wieder ...
Hier der Link zum PR: #83

Bei mir nicht? Gibt es eine neue Version?

Hi Sigi, mein PR ist noch offen und nicht in der aktuellen Version.
Hier die Änderungen, falls du es händisch testen willst:
https://github.com/sbormann/ioBroker.iqontrol/pull/83/files

@sbormann
Copy link
Owner

Hi
parallel zu @simatec hatte ich auch ein Bugfix entwickelt :)
Habe es mit Deinem PR noch mal abgeglichen. Hoffe es läuft?! Bitte um Rückmeldung!
0.2.8 ist ab sofort online.
LG

@sigi2345
Copy link
Author

Hi
parallel zu @simatec hatte ich auch ein Bugfix entwickelt :)
Habe es mit Deinem PR noch mal abgeglichen. Hoffe es läuft?! Bitte um Rückmeldung!
0.2.8 ist ab sofort online.
LG

PERFEKT! Funktioniert wieder und ist viel schneller.

@Apollon77
Copy link
Contributor

@sbormann blöde Frage ... hatte der zweite Fehler irgendwas mit Controller 2.0 zu tun oder nicht? Wenn ja: Windverhältnisse er sich anders als 1.5?

@sbormann
Copy link
Owner

Tja, das ist eine gute Frage. Ich weiß es selbst nicht genau.
Jedenfalls war die Abfrage auf nicht vorhandene Objekte nicht korrekt formuliert, so dass es vorkommen konnte, dass ein NULL-Objekt abgefragt wurde, was dann natürlich keinen .val-Key hatte. Warum das im alten Controller funktioniert hat - da habe ich leider keinen Plan...

@Apollon77
Copy link
Contributor

Ich denke ich weiss es.

  • controller 1.5 beim zugriff auf ein state was nich nie einen Wert hatte -> undefined
  • controller 2.0 beim zugriff auf ein state was nich nie einen Wert hatte -> null

Gleiches an sich bei States mit einem Expire-Wert:

  • controller 1.5 nach expire ist es ein objects mit lc, ts und so und .val=null
  • controller 2.0 nach expire -> null (auch kein Objekt)

Kann es das sein?

@sbormann
Copy link
Owner

Ja, das würde passen!

@simatec
Copy link

simatec commented Sep 29, 2019

Gut zu wissen, dann muss ich bei meinen Adaptern auch etwas ändern

@sbormann
Copy link
Owner

Macht das neue Verhalten Sinn? Wäre es nicht besser, das ursprüngliche Verhalten beizubehalten?

@Apollon77
Copy link
Contributor

Das diskutieren wir gerade. Es würde redis technisch ein paar Dinge komplizierter machen.

Die Unterschiede sind mir am Ende erst gestern bewusst geworden. Gibt ein js-Controller issue für die Diskussion ... macht gern mit.

@Apollon77
Copy link
Contributor

ABER: beide Dinge waren übrigens auch in 1.5.x anders sobald man States in redis genutzt hat....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants