Hallo,
ich habe heute morgen ein update all gestartet und nach dem Ende shutdown restart. So weit ok.
Ich habe zwei notify. Wenn ich eines davon einfach nur aufrufen will, kommt diese Fehlermeldung und ich kann nicht in das notify rein.
fhemweb.js line 1262:
Uncaught ReferenceError: shift is not defined
Als Anfänger stehe ich jetzt auf dem Schlauch.
Das aufgerufene notify Klingel_noti ist so:
Klingel:trigger_cnt:.* set Wohnzimmer_Licht on-for-timer 15 ; set Ausgabe_MP3 playTone 014
definiert, sichtbar unter DEF wenn ich den notify aufrufen könnte.
Bevor die notify nun von Hand in der fhem.cfg lösche frage ich hier lieber nach. Die notify liefen gestern noch.
"shift" klingt verdächtig... Das gehört tendenziell in myUtils-Code, aber nicht in die DEF von notify ::) ...
"Aufrufen" will sagen: du kannst die Detail-Seite nicht öffnen?
FHEM läuft aber weiter?
Dann gibt mal in die Kommandozeile ein:
list TYPE=notify DEF
Und zeige uns die beiden notify-DEF, die sich nicht aufrufen lassen.
Hier das Ergebnis:
Batteriecheck .*:[Bb]attery.* { if ($EVENT !~ m/ok/) {(
'msg push @rr_Michael push |und| telegram')};}
Klingel_noti Klingel:trigger_cnt:.* set Wohnzimmer_Licht on-for-timer 15 ; set Ausgabe_MP3 playTone 014
initialUsbCheck global:INITIALIZED usb create
zwei notify einer heißt Batteriecheck (ich weiß, der funktioniert nicht wie er soll), der andere steht auch schon oben drin nachträglich ergänzt und heißt Klingel_noti. Der dritte kommt wohl aus dem initialUsbCheck...
Zitat von: Beta-User am 14 Dezember 2020, 12:01:34
"Aufrufen" will sagen: du kannst die Detail-Seite nicht öffnen?
FHEM läuft aber weiter?
Ich habe einen Raum notify, in dem Raum sehe ich die beiden Notify und wenn ich einen aufrufen will kommt das Fenster mit der Fehlermeldung. Das kann ich mit ok schließen, danach sieht die Oberflächee verschoben aus mit den Zeilen aber ich kann einfach mit Klicken auf einen Raum wieder weitermachen.
Vorab: Falls initialUsbCheck noch aktiv ist:
attr initialUsbCheck disable 1
Wenn ich neulich von einem 'fhem("....")'-Wrapper gesprochen habe, dann ist sowas gemeint (obwohl mir der msg-Befehl auch noch "schräg" aussieht):
defmod Batteriecheck notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) { fhem("msg push @rr_Michael push |und| telegram"); } }
Da das aber kein NOTIFYDEV erzeugt, ist ".*:[Bb]attery.*" nicht unbedingt ein gutes "Suchmuster" (wer suchet, wird finden).
Warum das aber deinen Browser zerstört, kann ich nicht sagen. Wir werden sehen, ob dann der Effekt noch auftritt.
Beim Aufruf des von initialUsbCheck im Gerät Global:
Probably associated with
WEB Initialized FHEMWEB
initialUsbCheck disabled notify
kommt jedoch dieselbe Fehlermeldung. ich kann nicht auf initialUsbCheck zugreifen.
WEnn ich die Fehlermeldung mit ok weggedrückt habe kann ich auf die attr gucken:
DbLogExclude .* deleteattr
disable 1 deleteattr
room system deleteattr
Ich habe nichts dagegen, die beiden notify batterie... und klingel einfach zu löschen um zu gucken was passiert.
Ja ich weiß, die set msq push funktioniert noch nicht, da ich mit den Klammern zu kämpfen habe. das msq push @rr_Michael ruft übergibt den Text dahinter an den Resident Michael bei dem dann hinterlegt ist, dass er eine pushover und eine telegram meldung will.
ich bekomme seit heute genau die gleiche Fehlermeldung (nach heutigem Update), bei mir liegt es an "widgetOverride :" was bisher problemlos funktioniert hat.
Sobald ich das widgetOverride : vom Device weg nehme ist der Fehler weg.
Na da bin ich ja mal froh, dass ich nicht der einzige bin mit dieser Fehlermeldung, auch wenn es mir für jeden Betroffenen leid tut, dass da plötzlich etwas nicht funktioniert.
Hallo zusammen, habe es mal hier gemeldet: https://forum.fhem.de/index.php/topic,116693.0.html
Wenn initialUsbCheck schon disabled ist, ist erst mal gut.
Zitat von: misave am 14 Dezember 2020, 13:14:53
Ich habe nichts dagegen, die beiden notify batterie... und klingel einfach zu löschen um zu gucken was passiert.
Ja ich weiß, die set msq push funktioniert noch nicht, da ich mit den Klammern zu kämpfen habe. das msq push @rr_Michael ruft übergibt den Text dahinter an den Resident Michael bei dem dann hinterlegt ist, dass er eine pushover und eine telegram meldung will.
Du solltest nicht löschen, sondern versuchen den Verbesserungsvorschlag zu verstehen. Was pah gestern in dem anderen Thread geschrieben hatte, kann man nicht treffender formulieren, und diese Liste (in toto) zu verstehen, ist extrem wichtig. Daher solltest du - gerne an diesem Beispiel - eben solange arbeiten, bis es klappt:
Zitat von: Prof. Dr. Peter Henning am 13 Dezember 2020, 17:29:42
@misave:
Ich sehe immer noch die gleichen Anfängerfehler. Offenbar ist hier vollkommen unklar:
- der Unterschied zwischen den Schichten der FHEM-Skriptsprache und Perl
- der Übergang von einer zur anderen Schicht
[...]
Wenn du das in die Kommandozeile wirfst, kommt was an, oder?
msg push @rr_Michael push |und| telegram
Dann sollte auch mein Vorschlag klappen...
wenn ich msg push @rr_Michael push |und| telegram
in die Befehlszeile schreibe kommt eine pushnachricht und eine telegram-Meldung bei mir an.
An der Übersetzung in die DEF-Zeile im notify arbeite ich noch rum...bisher aber noch Fehler mit den Klammern...
Das zweite betroffene Notify Klingel_noti ist ja völlig ok gewesen und hat beim Klingeln an der Haustür die gewünschten Aktionen ausgelöst.
Ebenso an dem intitialUsbCheck habe ich nichts verändert. Die Fehlermeldung kommt ja auch bei diesen beiden notify. Und bei einem weiteren User auch schon.
Also, ich baue weiterhin an dem notify für die Batterieüberwachung, das kann ja nichts mit der Fehlermeldung zu tun haben bei den korrekten notify. Oder doch?
OK, getestet. Problem ist das "Siegel" @, muss man eventuell escapen, jetzt ist es mit einem weiteren Strich auf pah's Liste gelöst:
defmod Batteriecheck notify .*:[Bb]attery.* { if ($EVENT !~ m/ok/) { fhem('msg push @rr_Michael push |und| telegram') } }
"quotes in Perl": https://www.perlmonks.org/?node_id=401006
Um das notify mit dem batterietesten kümmere ich mich später.
Das notify batteriecheck habe ich von Hand aus der fhem.cfg gelöscht.
Die Fehlermeldung beim Aufrufen des verbleibenden notify Klingel_noti und initialUsbCheck bleibt wie zu Beginn dieses Thread.
Zitat von: misave am 14 Dezember 2020, 14:10:56
Die Fehlermeldung beim Aufrufen des verbleibenden notify Klingel_noti und initialUsbCheck bleibt wie zu Beginn dieses Thread.
:o Logisch. Die hat wohl auch nichts mit irgendeinem notify zu tun, sondern hängt vermutlich mit einer Änderung in der .js zusammen. Daher ging meine Meldung in genau den verlinkten Thread...
Zitat von: misave am 14 Dezember 2020, 14:10:56
Das notify batteriecheck habe ich von Hand aus der fhem.cfg gelöscht.
Solange du solche Lücken im Wissen hast, solltest du das Editieren der fhem.cfg lassen! Es ist aus gutem Grund seit Jahren hier verpöhnt...!
Die Fehlermeldung taucht bei verschiedenen Browsern auf, getestet habe ich Windows10, Chrome und Safari.
Wie gesagt, ich kann keinen notify mehr aufrufen um auf dessen "Geräteseite" zu gelangen.
Zitat von: misave am 14 Dezember 2020, 14:19:07
Die Fehlermeldung taucht bei verschiedenen Browsern auf, getestet habe ich Windows10, Chrome und Safari.
Wenn es mit der fhemweb.js zusammenhängt und die eben "kaputt" ist, kannst du noch 5 Browser austesten, um das zu verifizieren...
Kannst ja mal die Vorversion aus dem svn holen (nein, ich will nicht erklären, wie es geht, da kann man zu viel falsch machen). Oder eben ein backup wieder einspielen. Dann hast du auch das mal geübt...
Es ist aufgefallen, das beim Batterie Notfiy bei seiner Angab die Anzahl der { ungleich der Anzahl }?
Also ein } zu wenig ....
Zitat von: Beta-User am 14 Dezember 2020, 14:23:53
Wenn es mit der fhemweb.js zusammenhängt und die eben "kaputt" ist, kannst du noch 5 Browser austesten, um das zu verifizieren...
Kannst ja mal die Vorversion aus dem svn holen (nein, ich will nicht erklären, wie es geht, da kann man zu viel falsch machen). Oder eben ein backup wieder einspielen. Dann hast du auch das mal geübt...
Dann mache ich das mal mit dem backup.
ich verwende die Anleitung von Otto's Blog :
FHEM in Fhem stoppen mit shutdown oder in linux mit stop fhem
Dann gehe ich in Linux in das Verzeichnis /opt/fhem.
In diesem Verzeichnis rufe ich das gezippte Backup an dessen Speicherort auf der SD-Karte auf. Wenn es nur auf einem externen Server läge, würde ich es dort wieder hinlegen.
sudo tar -xvzf /opt/fhem/backup/FHEM-20201211_153150.tar.gz -C /
Wenn dann alles ohne Fehler durchläuft kann ich mit
sudo restart
alles wieder neustarten.
ist das so korrekt?
Ich bin mir nicht sicher, ob dann alle Berechtigungen richtig sind. Am besten noch hinterher:
chown -R fhem: /opt/fhem
Ja die Berechtigungen prüfe ich und setze sie alle auf fhem:dialout bei Bedarf.
Hauptsache der linux-Befehl ist richtig bzw. Das was er dann tun soll.
Kann ich Dir "ad Hoc" nicht sagen .... und auch nicht austesten. Habe gerade berufliche Probleme ...
@Beta-User
ich habe das backup gemacht, auf der Linux-Konsole liefen etliche zeilen durch, am Ende war wieder das prompt mit fhem.
ich habe alle Rechte im Ordner /opt/fhem geprüft, war alles auf fhem:dialout.
Neustart des raspi hat fhem wieder verfügbar gemacht.
ABER:
Es waren aber attr bei Geräten gesetzt, die ich erst heute morgen gemacht hatte. Ich hätte erwartet, dass die nicht da sind, ich schließe daraus, dass er die alte fhem.cfg geladen hat?
Nach meiner Logik wäre ein backup doch so, dass alles so ist wie ich es am 11.12. im backup gesichert habe....
Der Fehler ist natürlich weiterhin da....
Hast du mal die caches von den diversen Browsern gelöscht?
ja gerade die cache und Browserverlauf von edge gelöscht. ebenso von chrome und safari.
Der Fehler tritt nun auch auf, wenn ich LOG-Geräte aufrufen will. die txt-Datei zu dem LOG-Gerät kann ich ganz normal öffnen.
nun heißt die Fehlermeldung fhem.js line 1262: ReferenceError: Can't find variable: shift
Ja, diese Fehlermeldung bekomme ich mit
FW_version["fhemweb.js"] = "$Id: fhemweb.js 23340 2020-12-13 11:18:04Z rudolfkoenig $";
auch.
Ersetze ich die durch die Vorvervion
FW_version["fhemweb.js"] = "$Id: fhemweb.js 23282 2020-12-02 21:44:45Z rudolfkoenig $";
und lade dann in Firefox mit Strg+F5 alles neu, kann ich ganz normal auf die Detailseite gehen.
Was auch immer du getan hast: dieser Fehler kommt aus fhemweb.js, und irgendwie sind da noch Reste von 23340 zu Gange, wie auch immer das im Detail zugehen mag...
Zitat von: Beta-User am 14 Dezember 2020, 15:44:37
Hast du mal die caches von den diversen Browsern gelöscht?
Habe ich denn oben das Backup richtig durchgeführt? ich hatte heute morgen ein update gemacht. ich denke, dass ich nach dem Einspielen eines backups doch erneut mit einem update check sehen müsste, was ich updaten kann. Demnach hat mein backup wie oben geschrieben gar kein update gemacht?
ich werde dann mal deinen Vorschlag auf die fhemweb.js vom 2.12. zurückzugehen ausprobieren. aber wie geht das?
wenn du diese Fehlermeldung auch hast, wenn du die fhemweb.js vom 13.12. nimmst, was bedeutet das dann? die neue Version ist irgendwie kaputt?
Ob und wie das mit dem Backup war, habe ich nicht nachvollzogen, weil meine eigentliche Empfehlung gewesen war, die js zu tauschen.
Die alte ist hier zu finden: https://svn.fhem.de/trac/browser/trunk/fhem/www/pgm2/fhemweb.js?rev=23282 (https://svn.fhem.de/trac/browser/trunk/fhem/www/pgm2/fhemweb.js?rev=23282)
Am einfachsten "reiner Text" oder urspr. Format unten wählen, dann den Text kopieren und (z.B.) mit sudo mcedit (paket: mc) über den Inhalt der jetzigen Datei drüberkopieren, dann hast du keinen Hackel wegen der Rechte.
UND JA: Die Datei (bzw. der Code darin) scheint kaputt zu sein, aber genau das habe ich ziemlich zu Beginn unserer länglichen Diskussion schon behauptet...
Nachtrag: im svn ist eine gefixte Fassung (https://forum.fhem.de/index.php/topic,77432.msg1110593.html#msg1110593), gibt's ab morgen früh per update oder direkt unter https://svn.fhem.de/trac/browser/trunk/fhem/www/pgm2/fhemweb.js
Zitat von: Beta-User am 14 Dezember 2020, 17:14:42
Nachtrag: im svn ist eine gefixte Fassung (https://forum.fhem.de/index.php/topic,77432.msg1110593.html#msg1110593), gibt's ab morgen früh per update oder direkt unter https://svn.fhem.de/trac/browser/trunk/fhem/www/pgm2/fhemweb.js
Das bedeutet doch, dass ich morgen früh mit einem einfachen update in fhem das Problem mit der kaputten fhem.js automatisch beseitigt bekomme oder?
die neue Version habe ich mir mit ursprünglicher Formatierung auf den Laptop gespeichert.
Das Paket mc lade ich mal. Ein einfaches Überschreiben der fehlerhaften fhemweb.js reicht nicht?
Theoretisch müsste ich doch auch die alte fhemweb.js vom 3.12. die sich in meinem restore-Ordner befindet auch einfach in das aktuelle opt/fhem/www/pgm2 reinkopieren können und hätte die alte Version drin? oder eben die neue vom svn runtergeladen drüberkopieren....
Aber keine Aufregung, wenn ich nur bis morgen früh warten muss und mit einem update die defekte Datei ersetzen kann, dann warte und mache heute abend nichts mehr.
Zitat von: Beta-User am 14 Dezember 2020, 17:14:42
Nachtrag: im svn ist eine gefixte Fassung (https://forum.fhem.de/index.php/topic,77432.msg1110593.html#msg1110593), gibt's ab morgen früh per update oder direkt unter https://svn.fhem.de/trac/browser/trunk/fhem/www/pgm2/fhemweb.js
ich habe die neue Version runtergeladen mit ursprünglicher Formatierung. Und mit swish (Windows-Programm) habe ich die Datei auf den raspi in das Dokumente-Verzeichnis von pi geworfen. Dort kann ich die Rechte auf fhem:dialout ändern und in das aktuelle www/pgm2 Verzeichnis reinkopieren. Wäre es theoretisch so einfach?
Danke für Deine Geduld.
Mir war heute morgen aber nicht klar, dass ihr sofort erkannt habt, dass die fhemweb.js kaputt ist und es eh eine neue Version gibt. Wenn ich das gewusst hätte, hätten wir direkt heute morgen stoppen können. Dann waren ja meine notify eh nicht der Grund warum es bei nicht lief.
Ehrlich gesagt habe ich noch keine Idee, wie man noch deutlicher sagen kann, dass jemand an der falschen Stelle rumsucht...
Und vermutlich reicht es, wenn du die Rechte so anpaßt, das Ding wird ja erst auf dem Zielsystem ausgeführt.
Aber das eine notify war m.E. _auch_ "kaputt", vermutlich sind/waren da auch entsprechende Einträge im FHEM-Log zu finden. Es war nur nicht die Ursache für das FHEMWEB-Problem...
Zitat von: Beta-User am 14 Dezember 2020, 17:53:47
Ehrlich gesagt habe ich noch keine Idee, wie man noch deutlicher sagen kann, dass jemand an der falschen Stelle rumsucht...
Und vermutlich reicht es, wenn du die Rechte so anpaßt, das Ding wird ja erst auf dem Zielsystem ausgeführt.
Aber das eine notify war m.E. _auch_ "kaputt", vermutlich sind/waren da auch entsprechende Einträge im FHEM-Log zu finden. Es war nur nicht die Ursache für das FHEMWEB-Problem...
ja ich wusste auch vorher, dass das notify kaputt war und nicht funktioniert. Dafür wollte ich ja keine Hilfe sondern nur wissen, warum diese Fehlermeldung kam, die ja offensichtlich nichts mit meinem notify zu tun hatte. Deshalb habe ich ja mehrmals gesagt, dass ich mich um das batteriecheck später kümmere.
Ich habe in der Historie des Moduls auf dem svn Server nun gesehen, dass es ähnliche Probleme schon mal gab mit replace bzw.replaceall.
könnte ich also einfach die Version 23350 über die fehlerhafte im www/pgm2-Verzeichnis kopieren mit entsprechenden Rechten? Müsste ich dazu fhem stoppen? oder reicht ein shutdown restart?
Jetzt lach nicht. ich würde ja gerne wissen, welche Schritte bei dem update in fhem gemacht werden.
Fhem guckt "irgendwo" nach, welche Dateien eine neue Version haben. Dann wird das update geladen und in das updateverzeichnis vom raspi gespeichert mit dem Datum. Durch shutdown restart wird dann beim Laden von fhem in diesen updateordner geschaut und jede Datei, die sich dort direkt oder in Unterordnern (update/.../www/pgm2) befindet als neue Version ins "aktuelle" Verzeichnis geladen von dem fhem dann startet...
passt das laienhaft?
update macht (seit einiger Zeit) ein backup und kopiert dann eben neue Dateien dahin, wo sie hingehören.
Nach einem Restart werden dann eben die geladen.
Die .js sind aber wieder etwas anders, die werden erst durch den Browser angefordert und dann auch dort ausgeführt; deswegen kann man die einfach überschreiben und dann "einfach neu nachladen" (im Browser... F5@FF)
Zitat von: Beta-User am 14 Dezember 2020, 18:16:27
update macht (seit einiger Zeit) ein backup und kopiert dann eben neue Dateien dahin, wo sie hingehören.
Nach einem Restart werden dann eben die geladen.
Die .js sind aber wieder etwas anders, die werden erst durch den Browser angefordert und dann auch dort ausgeführt; deswegen kann man die einfach überschreiben und dann "einfach neu nachladen" (im Browser... F5@FF)
Danke. Deshalb auch vorhin deine Frage mit dem Cache der Browser. Ich hatte in der js_Datei mal etwas gelesen mit meinen laienhaften Augen. Es wird ja am Anfang geprüft, welcher Browser genutzt wird ....
Ich mache heute nix mehr, ich habe etwas gelernt, weiß zwar nicht, warum mein backup nicht auf eine alte Version zurück ging mit heiler fhemweb.js, aber zumindest habe ich die die Zeile um das backup zu nutzen in Linux durch.
Hi Leute seit heute bei mir auch hat jemand eine Idee??
fhemweb.js line 1262:
ReferenceError: shift is not defined
Hallo zusammen,
ich habe heute auch ein update auf meine fhem Installation gefahren und habe jetzt den gleichen Effekt mit derselben Fehlermeldung, wenn ich die Details eines Notify aufrufe:
fhemweb.js line 1262:
Uncaught ReferenceError: shift is not defined
Das unverstandene shift tummelt sich in der function FW_detailSelect in der fhemweb.js - siehe Screenshot
Viele Grüße,
laurello
Müsst es nicht in der fhemweb.js in Zeile 1262 statt momentan
var re = shift(aap);
eigentlich so heißen:
var re = aap.shift();
Ich bin da definitiv kein Experte, aber wär das nicht die richtige Syntax für den Aufruf der Methode?
Gruß,
laurello
Heute gibt es ein update zu diesem Fehler und der ist tatsächlich mit app.shift()
JAAAAAAAAAA SUPPPPPPPIIIIIIII Läuft wieder!!!!!!!!!!!!!!!!!!
DAAAAAAAAAAAAAAAAANNNNNNNNNNNKKKKKKKKKKEEEEEEEEEEEEEEEEEEE
Hallo, die Fehlermeldung taucht seit gestern nach Update bei mir auf sobald ich auf FileLog klicke.
fhemweb.js line 1262:
Uncaught ReferenceError: shift is not defined
Trotzdem funktioniert alles.
Gibt es mittlerweile Lösungen?
Willst du nicht lesen!!
Update machen!
Heute!
EDIT: hatte ich ja in dem anderen Thread auch schon geschrieben...
EDIT: wenn es dann immer noch ist -> noch mal melden...
Gruß, Joachim
Danke für den Hinweis mit dem update - hat bei mir geholfen