test: modul zu integration von homebridge geräten in fhem

Begonnen von justme1968, 12 März 2021, 22:45:59

Vorheriges Thema - Nächstes Thema

justme1968

wenn das at tatsächlich geht: kannst du den den timer für das eingebaut refresh auch mal auf eine stunde setzen?

wenn es damit geht liegt es tatsächlich an der zeit, wenn es damit nicht geht weiß ich wenigstens den unterschied und kann suchen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

mcp

#61
Du meinst das hier:


my $refresh = $hash->{helper}{auth}{timestamp} + $hash->{helper}{auth}{expires_in} - 10*60;


? das hatte ich IMHO doch schon mit /10 getestet.

... das "set reconnect" reicht aus um das ganze im opened Status zu lassen solange der reconncet _VOR_ der nexttoken Zeit passiert. Es reichen z.B. auch alle 4 Stunden. Ich würde fast vermuten, daß auch 5 Sekunden vor der nexttoken Zeit reichen würde.


Was mir grade noch aufgefallen ist als ich fhem update gemacht habe:

im Eventmonitor taucht alle naselang (jede Sekunde) 1-3 x irgendein Device mit der Meldung:


Global global UNDEFINED homekitDevice_$lange-uuid homekitDevice $lange-uuid


auf. Das sind wohl alle diejenigen, die ich beim autocreate mit ignoreTypes gesetzt habe.

Muss das? also ich meine, die ständigen Events? :)
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

was leider auch noch nicht funktioniert ist die Aktualisierung der Readings von Geräten, die während der Startphase von Homebridge noch nicht eingeschaltet waren.

Konkret geht es bei mir um einen Luftentfeuchter, den ich automatisiert ein- & ausschalten lasse, je nachdem wie hoch die Luftfeuchtigkeit im Keller ist.

Der ist sehr oft aus und wenn man in diesem Zustand FHEM neu startet, dann bekommt homebridge2fhem es nicht mit, wenn er eingeschaltet wird. Homebridge selbst erkennt das und zeigt auch aktuelle Werte des Luftentfeuchters an.

Weiterhin ist mir aufgefallen, daß weder beim Luftentfeuchter (via Midea Air) noch beim Garagentor (via Meross) die Set Möglichkeiten mehr existieren, die sind - warum auch immer - weg. Die waren ja mal da, siehe paar Posts vorher von mir, wo ich beschrieben habe was an set funktioniert und was nicht.

Weiterhin zeigt FHEMweb für Attribute unterhalb homekitDevice 1x #readingList und 1x #setExtensionsEvent an (ja, mit # davor) was nicht funktioniert (Bad attribute name ...)

Das liegt wohl hier dran:


sub
homekitDevice_Initialize($)
{
  my ($hash) = @_;

  $hash->{SetFn}     = "homekitDevice_Set";
  $hash->{DefFn}     = "homekitDevice_Define";
  $hash->{UndefFn}   = "homekitDevice_Undefine";

  no warnings 'qw';
  my @attrList = qw(
    disable
    disabledForIntervals
    #readingList                                <---
    #setExtensionsEvent:1,0                     <---
    setList
    IODev
  );
  use warnings 'qw';
  $hash->{AttrList} = join(" ", @attrList)." $readingFnAttributes";
}


;-)

nachdem ich # jeweils weggenommen habe und FHEM 1x neu gestartet habe sind die Set Möglichkeiten auch wieder vorhanden.
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

justme1968

ich kann mich gerade nicht erinnern die kommentare da eingebaut zu haben... klar das es nicht geht.

das 'nicht mitbekommen' problem: liegt es wirklich am zustand oder liegt es eventuell daran das zufällig gerade geschaltet wird wenn fhem noch nicht wieder ganz läuft?

ich schaue am wochenende noch mal danach.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

mcp

FHEM läuft dann schon lange. Wäre es während des Startups, hätte ich nix gesagt, würde ja nicht wundern :)
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

justme1968

kannst du mal bitte im log schauen ob es für das schalten ein event oder eine nachricht gibt?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

mcp

#66
Entschuldige bitte die späte Antwort, ich hatte ein wenig zu viel zu tun...

Ja, ich kann es nicht mehr reproduzieren, keine Ahnung wieso weshalb warum.

wegen den Set Befehlen, wo einige funktionieren, andere aber nicht, habe ich folgendes Debug Output für Dich:


2021.10.05 21:39:05 4: homebridge2fhem: posting data to http://127.0.0.1:8581/api/accessories/aa70a708d2871e955e9cd09c9ea4eaa4e58df2b54f49653f3de9b63d4099118d: {"characteristicType": "Active", "value": "Active" }

das passiert z.B. wenn ich den Luftentfeuchter mit set $bla Active 0 abschalten will.

Der Code setzt den Value ebenso auf Active anstatt 0. Hier z.B. etwas was funktioniert:


2021.10.05 21:40:41 4: homebridge2fhem: posting data to http://127.0.0.1:8581/api/accessories/aa70a708d2871e955e9cd09c9ea4eaa4e58df2b54f49653f3de9b63d4099118d: {"characteristicType": "RotationSpeed", "value": "73.0" }

das passiert z.B. wenn ich bei dem Luftentfeuchter die Drehgeschwindigkeit ändere. Hier sieht man einen korrekten Wert (in diesem Beispiel 73.0) und nicht RotationSpeed.

Das ist beim Garagentor via Meross nicht anders:


2021.10.05 21:44:05 4: homebridge2fhem: posting data to http://127.0.0.1:8581/api/accessories/5ab49d9474db66af67aa7c7a52b06df72be5a5fba1054175be5e7c701d6dcc76: {"characteristicType": "TargetDoorState", "value": "TargetDoorState" }
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

justme1968

sorry. dauert noch. mir ist hier gerade alles mögliche dazwischen gekommen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

mcp

ok, danke für die Info.

Ja, solch' Tage/Wochen kenne ich ;-(
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

HansDampfHH

Bin auf dieses Module geschubbst worden, wäre genau das was ich suche.
Leider war die Einrichtung bisher nicht so erfolgreich.

Homebridge läuft bereits im insecure mode.
Habe die entsprechenden Files in den FHEM Ordner kopiert, Dateirechte passen und FHEM wurde neu gestartet.
Device wurde angelegt und autocreate is aktiviert:


Internals:
   CFGFN     
   DEF        192.168.148.46:8581
   FUUID      61ddf5ad-f33f-1920-0029-a98b382a25447cbe
   HOST       192.168.148.46:8581
   NAME       Homebridge
   NOTIFYDEV  global
   NR         584
   NTFY_ORDER 50-Homebridge
   STATE      active
   TYPE       homebridge
   homebridgeInstanceName Homebridge 5782
   homebridgeVersion 1.3.8
   helper:
Attributes:
   DbLogExclude .*
   alias      Homebridge
   room       Steuerung
   verbose    5


Da ich homebridge ohne Authentifizierung laufen habe, habe ich entsprechend kein user/pass gesetzt.
Im Log ist unter verbose 5 leider nicht viel zu sehen. nach einem 'reconnect' bekomme ich folgendes:


2022.01.12 10:01:47 5: Homebridge: HttpAnswer: HTTP/1.1 200 OK
Content-Security-Policy: default-src 'self';script-src 'self' 'unsafe-inline' 'unsafe-eval';style-src 'self' 'unsafe-inline';img-src 'self' data: https://raw.githubusercontent.com https://user-images.githubusercontent.com;connect-src 'self' https://openweathermap.org https://api.openweathermap.org wss://192.168.148.46:8581 ws://192.168.148.46:8581
X-DNS-Prefetch-Control: off
Expect-CT: max-age=0
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: no-referrer
X-XSS-Protection: 0
vary: Origin
content-type: application/json; charset=utf-8
content-length: 553
Date: Wed, 12 Jan 2022 09:01:47 GMT
Connection: close
2022.01.12 10:01:47 4: Homebridge: Got Cookie:
2022.01.12 10:01:47 4: Homebridge: received {"env":{"ableToConfigureSelf":true,"enableAccessories":true,"enableTerminalAccess":true,"homebridgeVersion":"1.3.8","homebridgeInstanceName":"Homebridge 5782","nodeVersion":"v16.13.1","packageName":"homebridge-config-ui-x","packageVersion":"4.41.5","platform":"linux","runningInDocker":true,"runningInLinux":false,"dockerOfflineUpdate":true,"serviceMode":true,"temperatureUnits":"c","lang":"de","instanceId":"b988afb2c64f2bfe029664bf83...dc6d5826d2efacf78ff6"},"formAuth":false,"theme":"auto","serverTimestamp":"2022-01-12T09:01:47.795Z"}
2022.01.12 10:01:47 1: $VAR1 = 'Content-Security-Policy: default-src \'self\';script-src \'self\' \'unsafe-inline\' \'unsafe-eval\';style-src \'self\' \'unsafe-inline\';img-src \'self\' data: https://raw.githubusercontent.com https://user-images.githubusercontent.com;connect-src \'self\' https://openweathermap.org https://api.openweathermap.org wss://192.168.148.46:8581 ws://192.168.148.46:8581 ';
$VAR2 = 'X-DNS-Prefetch-Control: off';
$VAR3 = 'Expect-CT: max-age=0';
$VAR4 = 'X-Download-Options: noopen';
$VAR5 = 'X-Content-Type-Options: nosniff';
$VAR6 = 'X-Permitted-Cross-Domain-Policies: none';
$VAR7 = 'Referrer-Policy: no-referrer';
$VAR8 = 'X-XSS-Protection: 0';
$VAR9 = 'vary: Origin';
$VAR10 = 'content-type: application/json; charset=utf-8';
$VAR11 = 'content-length: 553';
$VAR12 = 'Date: Wed, 12 Jan 2022 09:01:47 GMT';
$VAR13 = 'Connection: close';


Ich habe in Homebridge einen Xiaomi Fan laufen, den ich dort schalten kann. In FHEM wird aber kein entsprechendes Device angelegt.
Was mach ich falsch? Jemand einen Rat?
FHEM Docker, CUL868, Zigbee, CCU2, Jeelink

justme1968

hast du das homebridge-config-ui-x installiert?

was meinst du mit
Zitathomebridge ohne Authentifizierung

ich bin mir nicht sicher ob das für homebridge-config-ui-x überhaupt geht und ob das modul damit klar kommen würde. das einfachst ist vermutlich du richtest einen admin user für fhem in homebridge-config-ui-x ein.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

HansDampfHH

#72
config-ui-x ist installiert, ich glaube das sieht man auch im Response:
"packageName":"homebridge-config-ui-x"

Ich meine, dass ich mich nicht anmelden muss im Frontend:

{
        "name": "Config",
        "port": 8581,
---> "auth": "none",
        "theme": "auto",
        "tempUnits": "c",
        "lang": "de",
        "platform": "config"
},


Oder verstehe ich da etwas falsch!?
Ich versuch es mal mit einem eigenen User für FHEM...

EDIT
Das hat leider nichts gebracht, User als admin angelegt und Credentials hinterlegt:

Internals:
   CFGFN     
   DEF        192.168.148.46:8581
   FUUID      61ddf5ad-f33f-1920-0029-a98b382a25447cbe
   HOST       192.168.148.46:8581
   NAME       Homebridge
   NOTIFYDEV  global
   NR         584
   NTFY_ORDER 50-Homebridge
   STATE      active
   TYPE       homebridge
   homebridgeInstanceName Homebridge 5782
   homebridgeVersion 1.3.8
   helper:
Attributes:
   DbLogExclude .*
   alias      Homebridge
   password   crypt:44574a45
   room       Steuerung
   user       crypt:565a5c5c
   verbose    5


Im Log taucht nichts besonders Neues auf und auch ein Device habe ich nicht :-(
Homebridge wurde auch neu gestartet.
FHEM Docker, CUL868, Zigbee, CCU2, Jeelink

HansDampfHH

#73
Okay, erstes Problem gelöst. Es geht grundsätzlich nicht ohne Authentifizierung.
In der config muss "auth" gesetzt sein, auf "form". Entsprechend wurden Devices angelegt.

Aber leider nicht alle.
In den Screenshots sieht man das. Das eigentlich Device 'Xiaomi Fan2' toggled den Active-State.
Den habe so jetzt nicht in FHEM. Kann ich das lösen?

EDIT
Gerade gesehen, im Device kann ich über 'set' alles setzen.
Prima, besten dank für das Modul!
FHEM Docker, CUL868, Zigbee, CCU2, Jeelink

HansDampfHH

`tschuldigung. Doch noch mal.
Ich kann nun meinen Fan steuern, allerdings nur in eine Richtung, also nur Werte größer 0 setzen:

set homekitDevice_58bf6b6185a2293e9358da196b19d SwingMode 1 <-- funktioniert und kann man im Post sehen {"characteristicType": "SwingMode", "value": "1" }
set homekitDevice_58bf6b6185a2293e9358da196b19d SwingMode 0 <-- funktioniert nicht, im Post steht {"characteristicType": "SwingMode", "value": "SwingMode" }


Wenn man mal Testweise eine andere Zahl eingibt, die zwar keine Auswirkung hat, sieht man aber den Wert im Post:


set homekitDevice_58bf6b6185a2293e9358da196b19d SwingMode 2 <-- funktioniert und kann man im Post sehen {"characteristicType": "SwingMode", "value": "2" }


Ist das ein Bug oder gewollt, dass "0" nicht funktioniert?
FHEM Docker, CUL868, Zigbee, CCU2, Jeelink