HMCCURPC - Inkompatibilität mit HUEBridge (JSON)

Begonnen von EfkaPE, 01 August 2017, 15:10:42

Vorheriges Thema - Nächstes Thema

EfkaPE

Hi

folgendes Problem tritt bei mir auf. Sobald ich die den externen RPC laufen habe, ist es mir nicht mehr möglich JSON befehle abzugeben, bzw kommen nur Fehlermeldungen raus. Somit ist HUEBridge nicht funktionsfähig. Den Server deaktivieren und FHEM neustarten hilft dabei. Mit dem internen Server läuft es ohne Probleme. Das geht soweit, dass FHEM nicht mehr startet, nach einem Reboot.
Im hatte mich an den HUEBridge Fred zuerst gewendet (danke an justme1968).

Fhem Eingabe in die Kommandozeile ohne externen RPC:
{ decode_json( '{"name":"Philips hue","datastoreversion":"59","swversion":"01036659","apiversion":"1.16.0","mac":"00:17:88:21:72:ff","bridgeid":"001788FFFE2172FF","factorynew":false,"replacesbridgeid":null,"modelid":"BSB002"}' ) }
HASH(0x559f618707e8)

FHEM Eingabe in die Kommandozeile mit externen RPC:
JSON text must be an object or array (but found number, string, true, false or null, use allow_nonref to allow this) at (eval 565) line 1.

System ist auch dem neustem Stand.

Gruß
Martin
HMCCU, HUE, Sonos, HMWired, Harmony, LD382A

zap

#1
Kann ich nicht nachvollziehen. Habe ebenfalls HMCCURPC und HUEBridge laufen. Die decode_json Funktion liefert bei mir einen Hash zurück. HMCCURPC nutzt kein JSON.

Gibt es weitere Fehlermeldungen im FHEM Log (wenn FHEM nicht startet)?

Welches System verwendest Du (Linux Distri?)
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

EfkaPE

Bei mir läuft Debian 9. Ich habe das System heute morgen komplett neu aufgesetzt, wegen dem genanntem Problem. War aber kein Unterschied zu vermerken.
Mein Gedanke war, das RPC vielleicht etwas blockiert, aber das scheint mit deiner Aussage definitiv nicht so zu sein. 

Beim Starten von FHEM war der letzte Eintrag:
hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this) at ./FHEM/30_HUEBridge.pm line 1039.

Lässt man den externen HMCCURPC nicht automatisch mitstarten, läuft FHEM durch. Entfernt man das Modul HUEBridge geht es logischer weise auch.
Schon merkwürdig
HMCCU, HUE, Sonos, HMWired, Harmony, LD382A

zap

#3
Dann schauen wir uns mal Zeile 1039 in Huebridge.pm an ....

Die Funktion encode_json schlägt fehl, weil der übergebene Parameter keine Referenz auf einen Hash oder ein Array ist.

In Zeile 1036 von 30_HUEBridge.pm ist eine Logzeile auskommentiert. Mach mal den Kommentar raus. Dann dürften beim Start von FHEM mehr Meldungen kommen , v.a. Ein Dump des fraglichen Parameters. Verbose musst du auf 5 stellen oder du ersetzt die 5 in der Zeile durch Dein eingestelltes Loglevel.


2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

justme1968

#4
doch ist es. jedenfalls normalerweise wenn das decode vorher funktioniert. zeile 1039 ist glaube ich nur ein folgefehler.

das problem das es hier gibt kann man ganz ohne huebridge nachstellen wenn man das decode auf der fhem kommandozeile probiert.

kann es sein das das json modul auf zwei inkompatible arten eingebunden wird?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

zap

#5
Ja das könnte sein, allerdings nicht von HMCCURPC. Ich benutze kein JSON.
Efkape sollte mal prüfen, ob er weitere Module verwendet, die JSON einbinden.
Trotzdem wäre es vielleicht gut zu wissen, ob $obj in dem Fall nicht doch ein Skalar ist.

Wie gesagt, ich habe neben HMCCU auch HUEBridge und keine Probleme. Allerdings auch keine weiteren Module mit JSON.

HMCCURPC startet mehrere Threads um RPC Calls der CCU zu bedienen. Thats all
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

EfkaPE

2017.08.02 07:04:43 1: HMCCURPC: Received IN event. RPC server CB2010 running.
2017.08.02 07:04:43 1: HMCCURPC: All RPC servers running
2017.08.02 07:04:43 1: PERL WARNING: Argument "" isn't numeric in numeric eq (==) at (eval 398) line 1.
2017.08.02 07:04:43 3: eval: do_EG_K_Beleuchtung: warning in condition c01
2017.08.02 07:04:43 3: LED_Kitchen RGBW LD382A dim 0 0.5
2017.08.02 07:04:43 3: LED_Kitchen set HSV 50, 50, 0 with ramp: 0.5, flags:
2017.08.02 07:04:43 3: Sending: {
  'on' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
}

hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this) at ./FHEM/30_HUEBridge.pm line 1039.


Das sind die letzten Lebenszeichen. Danach ist ein neustart fällig und ich muss den externen RPC in der fhemconfig eleminieren bevor ich neustarten kann. Die Perl warnung war ein Fehler meiner seits.
Beim starten wird wohl eine Lampe geschaltet. Das ist zumindest der Fehler, warum FHEM sich dabei aufhängt. Da der RPC erst später gestartet wird, holt HUEBridge sich vorher auch alle Daten aus den Devices und Groups.
z.B:
2017.08.02 07:04:30 4: using HUEBridge_HTTP_Request: GET lights
2017.08.02 07:04:30 5: HUEBridge: id '5' already defined as 'HUEDevice5'
2017.08.02 07:04:30 5: HUEBridge: id '6' already defined as 'HUEDevice6'
2017.08.02 07:04:30 5: HUEBridge: id '2' already defined as 'HUEDevice2'
2017.08.02 07:04:30 5: HUEBridge: id '7' already defined as 'HUEDevice7'
2017.08.02 07:04:30 5: HUEBridge: id '4' already defined as 'HUEDevice4'
2017.08.02 07:04:30 5: HUEBridge: id '3' already defined as 'HUEDevice3'
2017.08.02 07:04:30 5: HUEBridge: id '8' already defined as 'HUEDevice8'
2017.08.02 07:04:30 5: HUEBridge: id '1' already defined as 'HUEDevice1'
2017.08.02 07:04:30 3: Sending: undef


Andere Module mit JSON sind nicht vorhanden.
HMCCU, HUE, Sonos, HMWired, Harmony, LD382A

justme1968

kannst du mal die reihenfolge vertauschen? also erst rpc starten und dann die hue bridge definieren. zur not von hand.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

herrmannj

Das scheint ja in Folge der LED zu passieren. Ein ld382 ist wifilight. Verwendet aber ebenfalls kein json und auch keine hue Bridge?

EfkaPE

#9
Ich habe jetzt einmal Ubuntu (Server Variante) ausprobiert. Und siehe da... Keine Probleme mehr. Habe sogar das Backup eingespielt, damit es gut übertragbar ist.
Ich probiere es aber gleich noch einmal mit Debian aus und vertausche die Reihenfolge.

@herrmannj
Die LED Beleuchtung ist es soweit ich das überblicken kann nicht.
Sending: {'on' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
wäre der nächste Befehl in der Reihe, welcher eine Osramleuchte über HUE steuern sollte. Dabei geschieht das Unglück.

Edit:
Habe es jetzt nochmal mit Debian 9.1 probiert und dabei kommt das gleiche Ergebnis bei raus.
Distri installiert und nur fhem nach wiki  (https://debian.fhem.de/) und hmmcu(https://wiki.fhem.de/wiki/HMCCU) installiert. Mehr läuft auf dem System nicht.
HMCCU, HUE, Sonos, HMWired, Harmony, LD382A

zap

Also scheint es mit der Linux Installation zusammen zu hängen?

Man kann den RPC Server von HMCCU nicht später starten. Der startet als Reaktion auf ein globales Event FHEM initialized.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

EfkaPE

Das liegt in meinen Augen eindeutig an Debian. Unter Ubuntu habe ich das nicht, obwohl ich alles extakt gleich konfiguriert habe
Ich bleibe erst einmal bei Ubuntu. Da ich mich gerade in das Thema Linux einarbeite, bin ich völlig frei, welche Distribution ich letztendlich verwende.

Auch wenn jetzt kein abschließendes Ergebnis zustande gekommen ist, danke ich euch für die Unterstützung!

Gruß

Martin
HMCCU, HUE, Sonos, HMWired, Harmony, LD382A

MarkBinary

Ich habe in den letzten Tagen eine andere Strategie verfolgt.


  • Jessie update --> kein erfolg
  • Komplettes CPAN update --> kein erfolg
  • HMCCURPC stoppen und den RPCSERVER im Modul HMCCU auf intern stellen reichte bei mir nicht.
Erst das löschen des devices HMCCURPC und neustarten des Raspberry halfen.

Nun laufen meine restlichen Module wieder.
Betroffen waren https://forum.fhem.de/index.php/topic,71968.msg687729.html#msg687729:
34_ESPEasy.pm
77_UWZ.pm
98_TRAFFIC.pm

Ich weiß leider nicht, wie man die threads zum Thema JSON, HMCCURPC,HUEBridge bündeln kann.
https://forum.fhem.de/index.php/topic,71968.0.html
https://forum.fhem.de/index.php/topic,76744.0.html
https://forum.fhem.de/index.php/topic,76842.0.html
https://forum.fhem.de/index.php/topic,74943.0.html
https://forum.fhem.de/index.php/topic,71737.0.html

jochenj

Habe leider das gleiche Problem und keine Ahnung wie ich das lösen kann :(
Bin FHEM Neuling, und habe zuerst das HUE Modul installiert was einwandrei funktioniert.
Danach habe ich das Modul HMCCU installiert was für sich selbst auch einwandfrei funktioniert, aber offensichtlich nicht im Zusammenspiel
Wenn ich für das Device d_ccu das "rpcserver" attribut auf ON stelle, also den externen RPC Server automatisch starten lassen, funzt HUE nicht mehr und wirft sie JSON Fehlermeldungen im Log.
Den RPC Server stoppen bringt dann auch nichts, nur den kompletten raspberry neu zu starten ohne aktiven RPC Server.

JSON Fehlermeldungen:
2017.10.02 15:07:55 2 : HueBridge1: json error: JSON text must be an object or array (but found number, string, true, false or null, use allow_nonref to allow this) at ./FHEM/30_HUEBridge.pm line 1112. in {"state":{"temperature":2206,"lastupdated":"2017-10-02T13:05:55"},"swupdate":{"state":"noupdates","lastinstall":null},"config":{"on":true,"battery":100,"reachable":true,"alert":"none","ledindication":false,"usertest":false,"pending":[]},"name":"Hue temperature sensor 1","type":"ZLLTemperature","modelid":"SML001","manufacturername":"Philips","swversion":"6.1.0.18912","uniqueid":"00:17:88:01:02:00:fd:47-02-0402"}
2017.10.02 15:07:55 3 : HUEBridge_Call: failed, retrying
2017.10.02 15:07:55 2 : HueBridge1: json error: JSON text must be an object or array (but found number, string, true, false or null, use allow_nonref to allow this) at ./FHEM/30_HUEBridge.pm line 1112. in {"state":{"temperature":2206,"lastupdated":"2017-10-02T13:05:55"},"swupdate":{"state":"noupdates","lastinstall":null},"config":{"on":true,"battery":100,"reachable":true,"alert":"none","ledindication":false,"usertest":false,"pending":[]},"name":"Hue temperature sensor 1","type":"ZLLTemperature","modelid":"SML001","manufacturername":"Philips","swversion":"6.1.0.18912","uniqueid":"00:17:88:01:02:00:fd:47-02-0402"}
2017.10.02 15:07:55 3 : HUEBridge_Call: failed, retrying
2017.10.02 15:07:55 3 : HUEBridge_Call: failed

zap

Frage: welche Netzwerk Ports verwendet HUE Bridge?
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB