MQTT2 für Worx Landroid Mähroboter

Begonnen von Otto123, 09 Juni 2020, 13:55:43

Vorheriges Thema - Nächstes Thema

frober

Zitat von: mkraus81 am 30 Mai 2021, 20:59:14
das ist mein define aus der config

define MQTT_Worx MQTT2_DEVICE XXXXXXXX.eu-west-1.amazonaws.com:8883
attr MQTT_Worx autocreate simple
attr MQTT_Worx icon scene_robo_lawnmower
attr MQTT_Worx jsonMap dat_rsi:wifiQuality dat_fw:firmware cfg_sn:serialNumber\
dat_le:mowerErrorIndex dat_ls:mowerStatusIndex\
cfg_rd:mowerRainDelay cfg_sc_m:mowerActiveIndex cfg_sc_p:mowerTimeCorrection\
dat_bt_t:batteryTemperature dat_bt_v:batteryVoltage dat_bt_p:batteryPercent dat_bt_nr:batteryChargeCycle dat_bt_c:batteryCharging\
dat_st_b:totalBladeTime dat_st_d:totalDistance dat_st_wt:totalTime dat_st_bl:borderLength\
dat_dmp_1:directionPitch dat_dmp_2:directionRoll dat_dmp_3:directionYaw
attr MQTT_Worx model worx_landroid_mover
attr MQTT_Worx readingList PRM100/XXXXXXXXX/commandOut:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT_Worx room Hof,MQTT2_DEVICE
attr MQTT_Worx setList mowerRainDelay:slider,0,30,1440 PRM100/XXXXXXX/commandIn {"rd":$EVTPART1}\
  mowerTimeCorrection:slider,-100,1,100 PRM100/XXXXXXX/commandIn {"sc":{"p":$EVTPART1}}\
  startBorderCut:noArg PRM100/XXXXXXX/commandIn {"sc":{"ots":{"bc":1,"wtm":0}}}\
  startOneTime:slider,10,10,720 PRM100/XXXXXXX/commandIn {"sc":{"ots":{"bc":0,"wtm":$EVTPART1}}}\
  startParty:slider,60,60,2880 PRM100/XXXXXXX/commandIn {"sc":{"distm":$EVTPART1}}\
  startMower:noArg PRM100/XXXXXXX/commandIn {"cmd":1}\
  pauseMower:noArg PRM100/XXXXXXX/commandIn {"cmd":2}\
  stopMower:noArg PRM100/XXXXXXX/commandIn {"cmd":3}\
  x_raw_payload:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(PRM100/XXXXXXX/commandIn $payload)}
attr MQTT_Worx userReadings mowerActive:mowerActiveIndex.* {my %activeState = (\
0 => "No",\
1 => "Yes",\
2 => "Party"\
);; $activeState{ReadingsVal($name,"mowerActiveIndex","0")}},\
mowerStatusTxt:mowerStatusIndex.* {my %stateCodes = (\
0 => "Idle",\
1 => "Home",\
2 => "Start sequence",\
3 => "Leaving home",\
4 => "Follow wire",\
5 => "Searching home",\
6 => "Searching wire",\
7 => "Mowing",\
8 => "Lifted",\
9 => "Trapped",\
10 => "Blade blocked",\
11 => "Debug",\
12 => "Remote control",\
30 => "Going home",\
31 => "Zone Training",\
32 => "Edge cutting",\
33 => "Searching zone",\
34 => "Pause"\
);; $stateCodes{ReadingsVal($name,"mowerStatusIndex","0")}},\
mowerErrorTxt:mowerErrorIndex.* { my %errorCodes = (\
0 => "No error",\
1 => "Trapped",\
2 => "Lifted",\
3 => "Wire missing",\
4 => "Outside wire",\
5 => "Raining",\
6 => "Close door to mow",\
7 => "Close door to go home",\
8 => "Blade motor blocked",\
9 => "Wheel motor blocked",\
10 => "Trapped timeout",\
11 => "Upside down",\
12 => "Battery low",\
13 => "Reverse wire",\
14 => "Charge error",\
15 => "Timeout finding home",\
16 => "Mower locked",\
17 => "Battery temp out of range"\
);; $errorCodes{ReadingsVal($name,"mowerErrorIndex","0")}}


Readings habe ich dann nur
- IODev
- attrTemplateVersion
- state

Du musst ein MQTT2_CLIENT anlegen.
Das MQTT2_DEVICE wird dann auto. angelegt, darauf wendest du dann das Templates an.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

mkraus81

DANKE! ich war so blind... wer lesen kann ist klar im Vorteil

choenig

Hi Otto,

ist es eigentlich Absicht, dass die clientId android ist? Oder fehlt da ein [l]android?


{my $uuid=qx(cat /proc/sys/kernel/random/uuid);;fhem("attr MQTT_Worx clientId android-$uuid")}


Hab' ich mich einfach mal so gefragt :)

LG
Christian

Otto123

#168
Hallo Christian,

Von mir aus ist es Absicht!  ;D
Ich habe mich nie gefragt, aber wahrscheinlich könnte da auch willi oder fhem stehen. Ich habe die Erzeugung der uuid aus der im ersten Beitrag verlinkten Original Quelle genommen. Ich nahm an, dass es etwas mit der uuid zu tun hat, die die App auf dem Smartphone erzeugt und mitgibt. Und da gäbe es die App für Android und Appel?
Aber wenn ich mir die Windows App anschaue - die verwendet nur die uuid ;)

Edit: es muss offenbar wirklich android- davor!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

mkraus81

Hi,

gehört vermutlich nicht hier hin... aber hier scheinen die Experten zu lesen :-)
Ich würde gern die Ereignissanzeige als ReadingGroup nachbauen...  aber bin zu blöd dazu...
habt ihr einen Tipp/Beispiel für mich?

Pusemukel

Nabend,

ist es machbar das diese Variante auch mit Lanxscape funktionieren könnte,
über die Deskapp muss ich ja die
Deskapp.exe.config anpassen dann funktioniert es, Fett markiert

Auszug Deskapp.exe.config:
<!--
    <add key="WebApi" value="https://api.worxlandroid.com/api/v2/"/>
    <add key="CliSec" value="nCH3A0WvMYn66vGorjSrnGZ2YtjQWDiCvjg7jNxK"/>
   
    <add key="WebApi" value="https://api.kress-robotik.com/api/v2/"/>
    <add key="CliSec" value="t2ANJxvWuVoAZSTw4gdrD2cy37dEwqtQSUxxY02q"/>
    -->
    <add key="WebApi" value="https://api.landxcape-services.com/api/v2/"/>
    <add key="CliSec" value="UKDRabKqBLABLABLAdsfwefrfdsgfdgfdkNHE8XSP"/>
   
    <add key="AutoReconnect" value="0"/>
    <add key="CommandInOut" value="false"/>


Spielt das Irgenteine Rolle ?

Nach deiner Anleitung für Worx funktioniert es leider nicht, ja ich habe die Richtige Broker Adresse eingetragen. :-)
Fhem hat bei mir auch diesen Conect/Disconnected Switching Fehler.

RAW:
defmod MQTT_Worx MQTT2_CLIENT a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
attr MQTT_Worx SSL 1
attr MQTT_Worx autocreate simple simple
attr MQTT_Worx keepaliveTimeout 600
attr MQTT_Worx mqttVersion 3.1.1
attr MQTT_Worx msgAfterConnect <BOARDIDAUSDERAPP>/<MACADRESSEAUSDERAB>/commandIn {}
attr MQTT_Worx room Garten
attr MQTT_Worx sslargs SSL_version:TLSv12 SSL_cert_file:aws.cer SSL_key_file:aws.key SSL_use_cert:1
attr MQTT_Worx subscriptions <BOARDIDAUSDERAPP>/<MACADRESSEAUSDERAB>/commandOut

setstate MQTT_Worx disconnected
setstate MQTT_Worx 2021-06-02 17:13:50 state disconnected


Auszug Log:
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (MQTT_Worx)
2021.06.02 16:40:57 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/
2021.06.02 16:40:57 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 108.128.46.176
2021.06.02 16:40:57 5: MQTT_Worx: sending CONNECT (16)(21)(0)(4)MQTT(4)(2)(2)X(0)(9)MQTT_Worx
2021.06.02 16:40:57 5: SW: 101500044d5154540402025800094d5154545f576f7278
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (MQTT_Worx)
2021.06.02 16:40:57 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/
2021.06.02 16:40:57 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 108.128.46.176
2021.06.02 16:40:57 5: MQTT_Worx: sending CONNECT (16)(21)(0)(4)MQTT(4)(2)(2)X(0)(9)MQTT_Worx
2021.06.02 16:40:57 5: SW: 101500044d5154540402025800094d5154545f576f7278
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)

oder Übersehe ich irgentetwas ?

Grüsse

Ralli

#171
Hallo Otto,

im dem aktualisierten Template sind zwei Tippfehler drin:


attr DEVICE alias Mover


muss Mower

und


attr DEVICE model worx_landroid_mover


müsste m.E. model worx_landroid_mower heißen.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

frober

Zitat von: mkraus81 am 02 Juni 2021, 10:42:40
Hi,

gehört vermutlich nicht hier hin... aber hier scheinen die Experten zu lesen :-)
Ich würde gern die Ereignissanzeige als ReadingGroup nachbauen...  aber bin zu blöd dazu...
habt ihr einen Tipp/Beispiel für mich?

https://wiki.fhem.de/wiki/ReadingsGroup


Es wäre besser im richtigen Unterforum einen neuen Thread zu eröffnen.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

#173
Zitat von: Pusemukel am 02 Juni 2021, 23:01:09
Nach deiner Anleitung für Worx funktioniert es leider nicht, ja ich habe die Richtige Broker Adresse eingetragen. :-)
Fhem hat bei mir auch diesen Conect/Disconnected Switching Fehler.


Auszug Log:
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (MQTT_Worx)
2021.06.02 16:40:57 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/
2021.06.02 16:40:57 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 108.128.46.176
2021.06.02 16:40:57 5: MQTT_Worx: sending CONNECT (16)(21)(0)(4)MQTT(4)(2)(2)X(0)(9)MQTT_Worx
2021.06.02 16:40:57 5: SW: 101500044d5154540402025800094d5154545f576f7278
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (MQTT_Worx)
2021.06.02 16:40:57 5: HttpUtils url=https://a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883/
2021.06.02 16:40:57 4: IP: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com -> 108.128.46.176
2021.06.02 16:40:57 5: MQTT_Worx: sending CONNECT (16)(21)(0)(4)MQTT(4)(2)(2)X(0)(9)MQTT_Worx
2021.06.02 16:40:57 5: SW: 101500044d5154540402025800094d5154545f576f7278
2021.06.02 16:40:57 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)

oder Übersehe ich irgentetwas ?

Grüsse

Das deutet, wie schon öfter hier geschrieben, auf ein fehlerhaftes Zertifikat hin.

Hast du dich an die Anleitung gehalten stimmen die Rechte beim Zertifikat?
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Otto123

Zitat von: Pusemukel am 02 Juni 2021, 23:01:09
Nach deiner Anleitung für Worx funktioniert es leider nicht, ja ich habe die Richtige Broker Adresse eingetragen. :-)
Hast Du auch <BOARDIDAUSDERAPP>/<MACADRESSEAUSDERAB> gegen Deine echten Werte ersetzt? Ohne die spitzen < Klammern >?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kjmEjfu

Zitat von: Pusemukel am 02 Juni 2021, 23:01:09
Nach deiner Anleitung für Worx funktioniert es leider nicht, ja ich habe die Richtige Broker Adresse eingetragen. :-)
Fhem hat bei mir auch diesen Conect/Disconnected Switching Fehler.

das Connect-Disconnect-Verhalten tritt sehr häufig auf, wenn man beim ersten Versuch etwas falsch gemacht hat und dadurch in kurzem Zeitraum etliche fehlerhafte Anmeldungen versucht wurden.
Dann macht der MQTT-Server aus Sicherheitsgründen zu und du musst ungefähr 24h warten. In der Zeit solltest du dich möglichst NICHT mehr versuchsweise anmelden, auch nicht per App.
Migriere derzeit zu Home Assistant

Otto123

Zitat von: Ralli am 03 Juni 2021, 08:06:03

attr DEVICE alias Mover

muss Mower

attr DEVICE model worx_landroid_mover

müsste m.E. model worx_landroid_mower heißen.
Das ist so eine Art Freudscher Verschreiber bei mir ;) Danke - habe es korrigiert
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Pusemukel

Zitat von: frober am 03 Juni 2021, 08:39:56
Das deutet, wie schon öfter hier geschrieben, auf ein fehlerhaftes Zertifikat hin.

Hast du dich an die Anleitung gehalten stimmen die Rechte beim Zertifikat?

Ich denke nicht, ein => {qx(ls -lha /opt/fhem/aws.*)} liefert mir :
-rw------- 1 fhem dialout 1,4K Jun  2 17:10 /opt/fhem/aws.cer
-rw------- 1 fhem dialout 1,8K Jun  2 17:10 /opt/fhem/aws.key



Zitat von: Otto123 am 03 Juni 2021, 09:35:11
Hast Du auch <BOARDIDAUSDERAPP>/<MACADRESSEAUSDERAB> gegen Deine echten Werte ersetzt? Ohne die spitzen < Klammern >?

Ne , ohne spitze Klammern ,


Zitat von: kjmEjfu am 03 Juni 2021, 12:43:10
das Connect-Disconnect-Verhalten tritt sehr häufig auf, wenn man beim ersten Versuch etwas falsch gemacht hat und dadurch in kurzem Zeitraum etliche fehlerhafte Anmeldungen versucht wurden.
Dann macht der MQTT-Server aus Sicherheitsgründen zu und du musst ungefähr 24h warten. In der Zeit solltest du dich möglichst NICHT mehr versuchsweise anmelden, auch nicht per App.

Hmm vielleicht ist es das, ich mache mal einen Tag pause und lösche das Fhem Device zur Sicherheit noch mal komplett,  ich melde mich wenn es was neues gibt.

Noch zwei Anmerkungen:
Benötige ich die Uuid aus der App auch irgendwo, mich hat es gewundert das die "ungenutzt" zu sein scheint ?!

Bei meiner Variante der DeskApp.exe.config
ist ja eine anderen Zweig Aktiv , der Wert Hier unterscheidet sich zusätzlich:
Landroid:  <add key="CliSec"value="UKDRabKqJFNZYBAHW3GJDfgrDcZEQNYwkNHE8XSP"/>
Workx:  <add key="CliSec" value="nCH3A0WvMYn66vGorjSrnGZ2YtjQWDiCvjg7jNxK"/>



Otto123

Zitat von: Pusemukel am 03 Juni 2021, 14:11:23
Noch zwei Anmerkungen:
Benötige ich die Uuid aus der App auch irgendwo, mich hat es gewundert das die "ungenutzt" zu sein scheint ?!
Ist für mich nur eine Anmerkung :) wo ist die Zweite?

Da ich diese CliSec auch nicht brauche, die DeskApp aber schon - vermute ich: Mit Hilfe des CliSec und dem Cloudzugang wird das p12 Zertifikat erzeugt/heruntergeladen/signiert ?!
In der Anbindung über MQTT2_CLIENT ist ja außer dem Zertifikat keinerlei Autorisierung vorhanden.

Also Du solltest unbedingt nochmal prüfen, ob das Zertifikat, was Du jetzt verwendest hast, auch mit der richtigen Anmeldung der DeskApp entstanden ist!?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

hoppel118

#179
Zitat von: kermitthefrog am 26 Mai 2021, 20:51:24
Mein MQTT_Worx springt sein 2-3 Tagen ständig von opened auf disconnected und zurück, im Sekundentakt.
Über die DeskApp kann ich mich auch nciht verbinden (nicht anmelden, sondern verbinden). Es wird der Fehler "Eine Ausnahme vom Typ "uPLibrary.Networking.M2Mqtt.Exceptions.MqttCommunicationsException" wurde ausgelöst" ausgeworfen.
Jemand ne Idee? Wo muss ich suchen? Mit der Landroid App selbst komme ich auf den Mäher...

Danke und Gruß...

Zitat von: kjmEjfu am 27 Mai 2021, 07:42:39
Setz mal für 24h auf disabled und versuche dich in dieser Zeit nicht neu zu verbinden. Das hilft meistens.

Moin Leute,

mein WR165E läuft mittlerweile, also er mäht fleißig den Rasen. :)

Gestern Abend habe ich mich dann mal an die Einbindung in FHEM gemacht:


  • Ich habe die DeskApp "V0.0.26 - Net" heruntergeladen, meine Cloud-Daten eingegeben und auf "Anmelden" gedrückt. Als Ergebnis erhalte ich die Datei AWS.p12, den Broker, Board-ID und die MAC-Adresse.
  • Anschließend nach FHEM gewechselt, dort die Zertifikate hochgeladen und die Berechtigung angepasst. Das sieht so weit gut aus.
  • Anschließend mit dem define weitergemacht, Broker, Board-ID und MAC-Adresse an den entsprechenden Stellen gesetzt.
  • Der state ist dann ganz schnell zw. open und disconnect hin- und hergewechselt.

Wenn ich mich nun in der DeskApp anmelde, werden mir nach Betätigung der "Anmelden" Schaltfläche dieselben Daten wie gestern ausgegeben. Jetzt ist mir gerade aufgefallen, dass es dort auch noch eine "Verbinden" Schaltfläche gibt. Die hatte ich gestern nicht betätigt.

Kann das der Auslöser des Problems sein? (Ich denke nicht.)

Wie dem auch sei..., wenn ich jetzt auf "Verbinden" drücke, erhalte ich von der DeskApp die folgende Meldung:

ZitatEine Ausnahme vom Typ "uPLibrary.Networking.M2Mqtt.Exceptions.MqttCommunicationException" wurde ausgelöst.

Ich gehe nun davon aus, dass mein Account auf dem Broker gesperrt wurde und ich jetzt 24h warten muss, bis ich weiter machen kann.

Im FHEM Log steht folgendes:

2021.06.07 23:42:20 3: Opening MQTT_Worx device a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
2021.06.07 23:42:20 3: MQTT_Worx device opened
2021.06.07 23:42:35 1: xxx-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (MQTT_Worx)
2021.06.07 23:46:55 1: xxx-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)
2021.06.07 23:46:55 1: xxx-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (MQTT_Worx)
2021.06.07 23:46:56 1: xxx-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)
2021.06.07 23:46:56 1: xxx-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (MQTT_Worx)
2021.06.07 23:46:56 1: xxx-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (MQTT_Worx)


Die reappeared/disconnected Meldungen tauchen innerhalb kürzester Zeit in großer Menge auf, bis ich den MQTT2_Client manuell auf disconnect setze.

Habt ihr noch irgendwelche Ratschläge für mich, bevor ich morgen oder übermorgen nochmal von vorn anfange?

Danke euch und Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi