FHEM-Remote meldet sich mit einer Fehlermeldung (eventuell nach FHEM Update?)

Begonnen von maxritti, 02 Januar 2014, 14:18:48

Vorheriges Thema - Nächstes Thema

maxritti

Hallo zusammen,

gestern gab's ja ein wenig Problemchen nach einem update.

http://forum.fhem.de/index.php/topic,18159.0.html

Das wurde ratz fatz gelöst. Danke dafür.

Ich weiss nicht, ob mit dem Update auch das jetzt vorliegende Problem zusammenhängt.
Und zwar funktioniert meine FHEM Remote App auf meinen iOS Geräten nicht.

Sofern ich diese aufrufe kommt die Fehlermeldung, welche im Anhang zu sehen ist.
Die Servereinstellungen sind richtig und inwieweit ich das JSON Plugin prüfen soll, weiss ich ehrlich gesagt nicht.  :o

Könnte da bitte jemand der Experten kurz drauf schauen und ein Feedback geben, was des Rätsels Lösung sein könnte?

maxritti

Merkwürdig.
Nun funktioniert FHEM Remote wieder.

Damit mache ich hier erst mal den Daumen hoch vor das Thema.

maxritti

Noch mal merkwürdig.
Heute morgen kommt die Fehlermeldung wieder.

Hat dazu jemand eine Idee?

vitr

Hallo, ich habe jetzt schon mehrfach von Leuten gehört, dass die JSON Daten bei Ihnen fehlerhaft waren. Oft ließ sich das Problem wohl durch ein FHEM Update mit anschließendem Neustart lösen. Teilweise lag es wohl auch an einem Fehler in der FHEM Config Datei. Eine kurze Zusammenfassung dazu gibt es hier: http://forum.pointaix.com/viewtopic.php?f=3&t=11

maxritti

Hallo,

viele Dank schon mal für den Link:

Hier mal die Zeilen aus dem Rückgabewert:

{
  "ResultSet": "full",
  "Results": [
    {
      "list": "Global",
      "devices": [
        {



  ],
  "totalResultsReturned": 38
}




{
  "ResultSet": "rooms",
  "Results": [
    "Alarmanlage",
    "Bad",
    "CUL_HM",
    "Dachgeschoss",
    "DashboardRoom",
    "Logs",
    "WC",
    "Wohnzimmer"
  ],
  "totalResultsReturned": 8
}


Der Anfang sieht für mich zumindest gut aus.
Bei dem Ende des JSON Codes bin ich mir nicht sicher, wo da die fehlende } sein müsste und ob die bei mir geht.

Aber der JSON Code sollte eigentlich valide sein. Den habe ich mal mit einem Onlinevalidator (http://jsonlint.com) geprüft:

Was schon wieder merkwürdig ist, ist die Tatsache, dass ich fhem eben auf meinem Linux Server mittels /etc/init.d/fhem stop beendet und neu gestartet habe.
Danach kommt die Meldung der App nicht mehr.
Auch finde ich den den FHEM Logs keine Meldung.

Die Frage ist nur wie lange das so sein wird.
Ich werde jetzt wohl mal erst nichts an FHEM umkonfigurieren. Mal schauen, ob dann die Meldung wieder irgendwann auftaucht.

Sollte noch jemand eine Idee haben, so bin ich über jede Hilfe dankbar :)


maxritti

Lange hat es nicht gedauert.
Ich habe nichts an FHEM gemacht. Gerade eben einfach nur noch mal die App genutzt und wieder der Fehler.  >:(

Das fhem Log ist nach wie vor leer.
Liegt das eventuell an?

attr global verbose 1

/EDIT:

Gerade noch mal fhem beendet, attr global verbose 5 gesetzt und neu gestartet.

Jetzt warte ich wieder, bis in der App die Meldung kommt.
Mal schauen ob dann etwas zu sehen ist.

vitr

Wenn im Log keine Fehler angezeigt werden, dann habe ich so leider erstmal auch keine weitere Idee. Wenn der Fehler wieder auftritt, dann können wir ja nochmal weiter gucken...

EDIT:
Habe das letzte Post erst gerade gesehen. Wenn der Fehler wieder auftritt, dann am besten mal mit jsonlint gucken wo der Fehler liegt

maxritti

Zack, da ist der Fehler wieder.

Das fhem-2014-01.log sagt das hier zu dem Zeitpunkt:

2014.01.03 12:42:06 5: Cmd: >jsonlist<
2014.01.03 12:42:06 3: JsonList: device (broadcast) without TYPE
2014.01.03 12:42:06 4: /fhem?cmd=jsonlist&XHR=1 / RL:9319 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2014.01.03 12:42:06 4: Connection closed for FHEMWEB:192.168.178.27:51935


Bei dem jsonlist scheint mir nun in der Tat das Problem mit der geschweiften Klammer am Ende des Codes vorzuliegen.
(http://forum.pointaix.com/viewtopic.php?f=3&t=11)

        "allowfrom",
          "SSL",
          "connectTimeout",
          "connectInterval",
          "encoding:utf8,latin1",
          "devStateIcon",
          "devStateStyle",
          "fm_type",
          "icon",
          "sortby",
          "webCmd"
        ]
      ]
    }
  ],
  "totalResultsReturned": 38
}



Ich mache mal ein update force und starte den Server neu.

maxritti

Ich noch mal.

Mein Problem scheint sich wohl mit dem Post hier zu decken.

http://forum.fhem.de/index.php/topic,15428.0.html

Denn wenn ich mit der App auf FHEM zugreife kommen nun auch die Meldungen vom 98_JsonList.pm.

2014.01.03 14:32:07 4: Connection accepted from FHEMWEB:192.168.178.33:52987
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
2014.01.03 14:32:07 4: HTTP FHEMWEB:192.168.178.33:52987 GET /fhem?cmd=jsonlist&XHR=1
2014.01.03 14:32:07 5: Cmd: >jsonlist<
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
2014.01.03 14:32:07 3: JsonList: device (broadcast) without TYPE
2014.01.03 14:32:07 4: /fhem?cmd=jsonlist&XHR=1 / RL:9026 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2014.01.03 14:32:07 4: Connection closed for FHEMWEB:192.168.178.33:52987
2014.01.03 14:32:08 4: Connection accepted from FHEMWEB:192.168.178.33:52988
2014.01.03 14:32:08 4: HTTP FHEMWEB:192.168.178.33:52988 GET /fhem?cmd=jsonlist&XHR=1
2014.01.03 14:32:08 5: Cmd: >jsonlist<
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in hash element at ./FHEM/98_JsonList.pm line 146.
Use of uninitialized value in string comparison (cmp) at ./FHEM/98_JsonList.pm line 146.
2014.01.03 14:32:08 3: JsonList: device (broadcast) without TYPE
2014.01.03 14:32:08 4: /fhem?cmd=jsonlist&XHR=1 / RL:9028 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2014.01.03 14:32:08 4: Connection closed for FHEMWEB:192.168.178.33:52988


Nur wie da beschrieben ist das Problem nicht der Beginn der Datei, da dort nicht direkt die gechweifte Klammer nach der eckigen Klammer folgt.

{
  "ResultSet": "full",
  "Results": [
    {
      "list": "Global",
      "devices": [
        {
          "DEF": "<no definition>",
          "NAME": "global",
          "NR": "1",

         
Bei mir scheint das Problem nun an dem zweiten hier beschriebenen Punkt zu liegen:

http://forum.pointaix.com/viewtopic.php?f=3&t=11

[          "devStateIcon",
          "devStateStyle",
          "fm_type",
          "icon",
          "sortby",
          "webCmd"
        ]
      ]
    }
  ],
  "totalResultsReturned": 36
}/code]

Wie es für mich aussieht, fehlt hier in der Tat die eine geschweifte Klammer.
Das sagt diesmal wohl auch der online JSON Validator.

[b]@rudi:[/b]

Kannst Du da bitte aktiv werden?
Ich bin für jeden Tip dankbar und liefere auch notwendige Infos.


/EDIT:

Hier noch meine aktuell eingesetzten Versionen:

# $Id: fhem.pl 4519 2014-01-01 15:43:32Z rudolfkoenig $
# $Id: 10_CUL_HM.pm 4524 2014-01-02 08:35:12Z martinp876 $
# $Id: 01_FHEMWEB.pm 4510 2013-12-30 20:45:22Z rudolfkoenig $
# $Id: 10_FS20.pm 3764 2013-08-22 07:09:38Z rudolfkoenig $
# $Id: 92_FileLog.pm 3759 2013-08-21 08:13:08Z rudolfkoenig $
# $Id: 00_HMLAN.pm 4518 2013-12-31 11:46:26Z martinp876 $
# $Id: 98_HMinfo.pm 4520 2014-01-01 19:05:41Z martinp876 $
# $Id: 98_JsonList.pm 4128 2013-10-29 06:51:24Z rudolfkoenig $
# $Id: 99_SUNRISE_EL.pm 3738 2013-08-18 14:13:59Z rudolfkoenig $
# $Id: 98_SVG.pm 4503 2013-12-29 18:38:50Z rudolfkoenig $
# $Id: 99_Utils.pm 3595 2013-08-05 05:38:48Z tobiasfaust $
# $Id: 98_XmlList.pm 2895 2013-03-11 19:48:01Z rudolfkoenig $
# $Id: 90_at.pm 4246 2013-11-18 20:35:20Z rudolfkoenig $
# $Id: 98_autocreate.pm 4234 2013-11-17 10:19:41Z rudolfkoenig $
# $Id: 98_dummy.pm 3738 2013-08-18 14:13:59Z rudolfkoenig $
# $Id: 91_eventTypes.pm 2982 2013-03-24 17:47:28Z rudolfkoenig $
# $Id: 98_fheminfo.pm 3775 2013-08-24 08:31:39Z rudolfkoenig $
# $Id: 91_notify.pm 3738 2013-08-18 14:13:59Z rudolfkoenig $
# $Id: 98_telnet.pm 3738 2013-08-18 14:13:59Z rudolfkoenig $

rudolfkoenig

Ich habe das Problem nicht -> es muss an deiner Definition liegen. Die Fehlermeldung legt entweder ein Geraet ohne TYPE nahe:
{ join(",", grep { !defined($defs{$_}{TYPE}) } keys %defs ) }
oder ein Modul ohne ORDER (unwahrscheinlich):
{ join(",", grep { !defined($modules{$_}{ORDER}) } keys %modules ) }


Ich tippe auf kaputte notify/at Definition.


maxritti

Okay, dann ist es wohl am wahrscheinlichsten, dass der Teil meiner Config nicht stimmt, wo ich gerade mit beginne eine Art Alarmanlage zu implementieren.
Dabei habe ich mal den Wiki Artikel zur Hand genommen:

http://www.fhemwiki.de/wiki/Alarmanlage

Dummerweise sind meine Hardwarekomponenten noch nicht ganz vollständig.
Die FB zum aktivieren und deaktivieren der Anlage ist noch auf dem Postwege. :(

Um dennoch schon mal ein wenig zu probieren, habe ich wie im Wiki Dummies angelegt. Als FS20 Komponenten, da die sonst in der FHEMobile App nicht schaltbar sind.
Aber das soll sich ja auch geändert haben.

Dann nehme ich noch zusätzlich meinen HM Türkontakt als Ein- und Ausschalter der Anlage.
Nicht wirklich der Praxis entsprechend, aber macht schon Spass, so zu probieren :)

Ich vermute mal, dass bei den Notifies etwas nicht stimmig ist damit den Syntaxfehler in der JSON Klamotte produziert.

Magst Du mal kurz drüber schauen, wo da der Hase im Pfeffer begraben ist?

Auf der anderen Seite kann ich den Teil der Konig auch mal auskommentieren um zu schauen, ob die App dann stabil läuft.
Es gab ja immer recht fix die Fehlermeldung.

define WZ_Tuer CUL_HM 219AB4
attr WZ_Tuer .devInfo 810101
attr WZ_Tuer .stc 80
attr WZ_Tuer actCycle 028:00
attr WZ_Tuer actStatus alive
attr WZ_Tuer autoReadReg 4_reqStatus
attr WZ_Tuer expert 2_full
attr WZ_Tuer firmware 2.1
attr WZ_Tuer model HM-SEC-SC
attr WZ_Tuer peerIDs
attr WZ_Tuer room Wohnzimmer
attr WZ_Tuer serialNr KEQ0163284
attr WZ_Tuer subType threeStateSensor
define FileLog_WZ_Tuer FileLog ./log/WZ_Tuer-%Y.log WZ_Tuer
attr FileLog_WZ_Tuer logtype text
attr FileLog_WZ_Tuer room CUL_HM

#-----Scharf/unscharf--------------------------------
define ANLAGE_STATUS dummy
attr ANLAGE_STATUS room Alarmanlage

define ANLAGE_SCHARF FS20 22224222 32
attr ANLAGE_SCHARF dummy 1
attr ANLAGE_SCHARF room Alarmanlage

define ANLAGE_SCHARF_intern FS20 22224222 30
attr ANLAGE_SCHARF_intern dummy 1
attr ANLAGE_SCHARF_intern room Alarmanlage

define Alarm_Anlage_Scharf_on notify WZ_Tuer:open {if (Value("ANLAGE_STATUS") eq "aus") {fhem("set ANLAGE_STATUS 2sec ;; define verzoegert_an at +00:00:02 set WZ_Sofa on ;; define verzoegert_alarm_an at +00:00:02 set ANLAGE_STATUS scharf")}}

define Alarm_Anlage_Scharf_off notify WZ_Tuer:closed {if (Value("ANLAGE_SCHARF") eq "2sec" || Value("ANLAGE_STATUS") eq "scharf") {fhem("set ANLAGE_STATUS aus ;; set WZ_Sofa off")}}

maxritti

Hallo,

ich muss hier noch mal posten, denn das ganze ist für mich nicht nachvollziehbar.
Manchmal funktioniert die App und manchmal kommt die JSON Fehlermeldung.
Will heissen:

Mit

http://fhemip:8083/fhem?cmd=jsonlist&XHR=1

kommt mal ein valider JSON Text und mal nicht.
Und das obwohl an der Config nichts geändert wurde. Das ist mal 100% sicher.
Denn gestern Abend habe ich mit FHEMRemote hier noch das Licht ausgemacht.
Heute morgen wollte ich es einschalten und zack, die Meldung.

Kann man das auf eine andere Art und Weise noch debuggen?

Ich weiss auch nicht, ob dies eventuell die gleiche Problematik für die FHEMMobile App (http://forum.fhem.de/index.php/topic,17795.15.html) ist.
Denn auch da wird ja von JSON Problemen gesprochen.

Dazu kann wohl nur Arno etwas sagen.

GuerillaCoder

Hm. Das ganze scheint nicht nur beim json, sondern auch bei der xmllist aufzutreten.

Meine Windows Phone App verweigert den Dienst. Nach dem Update gestern Abend ging es noch, heute morgen scheint das XML plötzlich ungültig:

So sieht der Anfang der XML Rückgabe jetzt aus

<FHZINFO>
< name="broadcast" state="" sets="Bogus entry broadcast without TYPE" attrs="verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings FhemWmoteDisplayName FhemWmoteType FhemWwoteIcon devStateIcon devStateStyle icon room_map sortby webCmd">
</>
<Global_LIST>
<Global name="global" state="&lt;no definition&gt;" sets="" attrs="verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings archivecmd apiversion archivedir configfile lastinclude logfile modpath nrarchive pidfilename port statefile title userattr mseclog:1,0 version nofork:1,0 logdir holiday2we autoload_undefined_devices:1,0 dupTimeout latitude longitude altitude backupcmd backupdir backupsymlink backup_before_update exclude_from_update motd updatebranch uniqueID sendStatistics:onUpdate,manually,never updateInBackground:1,0 showInternalValues:1,0  FhemWmoteDisplayName FhemWmoteType FhemWwoteIcon devStateIcon devStateStyle icon room_map sortby webCmd">
<INT key="DEF" value="&lt;no definition&gt;"/>
<INT key="NAME" value="global"/>


und so sah es mal aus


<FHZINFO>
  <Global_LIST>
    <Global name="global" state="&lt;no definition&gt;" sets="" attrs="verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings archivecmd apiversion archivedir configfile lastinclude logfile modpath nrarchive pidfilename port statefile title userattr mseclog:1,0 version nofork:1,0 logdir holiday2we autoload_undefined_devices:1,0 dupTimeout latitude longitude altitude backupcmd backupdir backupsymlink backup_before_update exclude_from_update motd updatebranch uniqueID sendStatistics:onUpdate,manually,never updateInBackground:1,0 showInternalValues:1,0  room_map webCmd FhemWmoteType FhemWwoteIcon FhemWmoteDisplayName">
      <INT key="DEF" value="&lt;no definition&gt;"/>
      <INT key="NAME" value="global"/>


Ich vermute, dass es hier eine Ursache gibt, die sich sowohl auf die JSON als auch auf die XML Ausgabe auswirkt.

Nach dem Start mit dem FHZINFO gib es dieses ungültige NAME Tag, was auch nicht korrekt geschlossen wird. Und danach noch das komische </>.

Vielleicht hilft ja die Beobachtung.....

GuerillaCoder

OK, gerade noch etwas interessantes gesehen. In meine Config hat sich etwas eingeschlichen oder einfach so verändert. Oder ich habe es versehentlich geändert. Oder das wirkt jetzt plötzlich störend. Whatever.

attr global modpath .
attr global motd SecurityCheck:\
\
WEBtablet has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
\
Restart fhem for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\
attr global sendStatistics onUpdate


Das attr für den SecurityCheck sah mir irgendwie komisch aus. Habe das komplett gelöscht. Und jetzt ist auch das XML wieder valide.

rudolfkoenig

1. broadcast: das ist ein HM Artifakt, sollte inzwischen behoben sein, bitte in der HomeMatic-Gruppe damit den Autor nerven.

2.  SecurityCheck: wenn ich ein xml in so einem Fall mit
perl fhem.pl localhost:7073 xmllist > x.xml
erstelle, dann hat Firefox damit kein Problem -> das XML ist meiner Ansicht nach valide.