Offizielles FHEM Docker Basis Image für verschiedene Plattformen

Begonnen von Loredo, 28 Juli 2018, 21:24:57

Vorheriges Thema - Nächstes Thema

rallye

Jetzt bin ich (wahrscheinlich) einen Schritt weiter, nachdem ich das mit der UID "angepasst" habe. Sowohl in der Alexa-Definition von FHEM, als auch im alexa-fhem Log taucht die selbe Fehlermeldung auf:
defmod alexa alexa
attr alexa alexaFHEM-config ./alexa-fhem.cfg
attr alexa alexaFHEM-log ./log/alexa-%Y-%m-%d.log
attr alexa alexaMapping #Characteristic=<name>=<value>,...\
On=verb=schalte,valueOn=an;;ein,valueOff=aus,valueToggle=um\
\
Brightness=verb=stelle,property=helligkeit,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent\
\
Hue=verb=stelle,valuePrefix=auf,values=rot:0;;grün:128;;blau:200\
Hue=verb=färbe,values=rot:0;;grün:120;;blau:220\
\
Saturation=verb=stelle,property=sättigung,valuePrefix=auf,values=AMAZON.NUMBER\
Saturation=verb=sättige,values=AMAZON.NUMBER\
\
TargetPosition=verb=mach,articles=den;;die,values=auf:100;;zu:0\
TargetPosition=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent\
\
TargetTemperature=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=grad\
\
Volume:verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent\
\
#Weckzeit=verb=stelle,valuePrefix=auf;;für,values=AMAZON.TIME,valueSuffix=uhr
attr alexa alexaTypes #Type=<alias>[,<alias2>[,...]]\
light=licht,lampen\
blind=rolladen,rolläden,jalousie,jalousien,rollo,rollos
attr alexa devStateIcon stopped:control_home@red:start stopping:control_on_off@orange running.*:control_on_off@green:stop
attr alexa echoRooms #<deviceId>=<room>\

attr alexa fhemIntents #IntentName=<sample utterance>\
gutenMorgen=guten morgen\
guteNacht=gute nacht
attr alexa persons #<personId>=<name>\

attr alexa room Server
attr alexa stateFormat alexaFHEM

setstate alexa stopped;; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'.
setstate alexa 2022-04-10 15:59:59 .eventToken {"access_token":"Atza|IwEBIKro_28XkyF9OtzRQU5bsUBgqalBMFlXo5umsy5f84e8lUBjab2d1nt4eTJQDjplckByJDIDzItDWTnsH3WNX1cxBFiWU1rxte-XpP5QRI3ug3Z3FQiO7oyp1Is6xNcgJiJG4cSOc_E9MotjB72wOPW28ZAL4YzyER_ZL5A9vcvWZaHvw491gbhZDGRGg3-NWt55_d7R8ElIAMfOYb6wpvzjATQkBdQBUy8WMgAEfs2wglhVym0pvpeyRY8KPeaXCCC59cfiCJAnF8yFJPDNa0XX","refresh_token":"Atzr|IwEBIPM8ijeKNHh2Gs5aZvnEjH1FmOX6DlMWzJBts5TSajwGnz2PQYhiUdv-jq2r3zo640weKU-bILP-E5e2o7Z0bsx9sic5VLMU8GH5TZBCDfAR3vOl8A7pjtaHVuEvWqU20gmsHyR9wFBT40IeULM2hCYRT-WabR-TJ0KMPO_VANePytIppK586waK8AGFa1a70_0wijN9UWMbr7USjpxWxzjNX6NKDR0T_BIdw3lxN68re99F5bUURpr1VxG26iVlBjniIqZcawCzGqgBnoBpVjw4","token_type":"bearer","expires_in":3600}
setstate alexa 2023-03-09 10:25:11 alexaFHEM stopped;; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'.
setstate alexa 2023-03-09 11:12:57 alexaFHEM.ProxyConnection error;; Reverse Proxy replied with neither registered nor unregistered status: out:  err:ssh: connect to host fhem-va.fhem.de port 58824: Cannot assign requested address\

setstate alexa 2023-03-09 10:25:54 alexaFHEM.bearerToken crypt:xxxxxxxxxxxxxx
setstate alexa 2023-03-09 10:25:54 alexaFHEM.skillRegKey crypt:xxxxxxxxxxxxx


setstate alexa 2023-03-09 11:12:57 alexaFHEM.ProxyConnection error;; Reverse Proxy replied with neither registered nor unregistered status: out:  err:ssh: connect to host fhem-va.fhem.de port 58824: Cannot assign requested address\
(Übrigens: das alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'. ist bei mir immer noch da, obwohl ich den Container mittlerweile mehrmals neu "pulled" habe

Und im alexa-fhem-log
[3/9/2023, 11:12:52 AM] [FHEM] shellyplug02 is already published
[3/9/2023, 11:12:52 AM] [FHEM] no device created for shellyplug02 (MQTT2_DEVICE)
[3/9/2023, 11:12:52 AM] [FHEM] shellyplug03 is already published
[3/9/2023, 11:12:52 AM] [FHEM] no device created for shellyplug03 (MQTT2_DEVICE)
[3/9/2023, 11:12:52 AM] [FHEM] shellyplug04 is already published
[3/9/2023, 11:12:52 AM] [FHEM] no device created for shellyplug04 (MQTT2_DEVICE)
[3/9/2023, 11:12:52 AM] Reading alexaFHEM.ProxyConnection set to error;; Reverse Proxy replied with neither registered nor unregistered status: out:  err:ssh: connect to host fhem-va.fhem.de port 58824: Cannot assign requested address
[3/9/2023, 11:12:52 AM] [FHEM]   executing: http://fhem:8083/fhem?cmd=%7B%24defs%7B%22alexa%22%7D-%3E%7B%22active%22%7D%20%3D%201%3B%3Bundef%7D%3Bsetreading%20alexa%20alexaFHEM.ProxyConnection%20error%3B%3B%20Reverse%20Proxy%20replied%20with%20neither%20registered%20nor%20unregistered%20status%3A%20out%3A%20%20err%3Assh%3A%20connect%20to%20host%20fhem-va.fhem.de%20port%2058824%3A%20Cannot%20assign%20requested%20address%0D%0A%3B%7B%24defs%7B%22alexa%22%7D-%3E%7B%22active%22%7D%20%3D%200%3B%3Bundef%7D&fwcsrf=TheToken0815&XHR=1
[3/9/2023, 11:12:57 AM] failed to refresh token: invalid_grant: 'The request has an invalid grant parameter : refresh_token. User may have revoked or didn't grant the permission.'
  2023-03-09 11:13:00 caching: shellyplug04-temperature: 34.42
[3/9/2023, 11:13:00 AM] [FHEM]     caching: CurrentTemperature: 34.42 (as number; from '34.42')
[3/9/2023, 11:13:01 AM] failed to refresh token: Error: getaddrinfo EAI_AGAIN va.fhem.de
  2023-03-09 11:13:06 caching: shellyplug01-temperature: 27.38
[3/9/2023, 11:13:06 AM] [FHEM]     caching: CurrentTemperature: 27.38 (as number; from '27.38')
  2023-03-09 11:13:07 caching: shellyplug03-temperature: 29.41
[3/9/2023, 11:13:07 AM] [FHEM]     caching: CurrentTemperature: 29.41 (as number; from '29.41')

Kann das damit zutun haben, dass ich einfach die "alte" Config genommen habe? Irgendwelche Einträge wg. Vereinsserver habe ich seit der Erstinstallation (damals nach MadMax-FKEM-Sprech: "bare-metal") nie wieder gemacht.
Beim Starten bleibt der Container übrigens sehr lange im "starting"-Mode

Danke, LG Rallye
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor

MadMax-FHEM

Zitat
  "alexa": {
    "port": 3000,
    "name": "Alexa",
    "ssl": false,
    "keyFile": "/certs/alexa-fhem.key",
    "certFile": "/certs/alexa-fhem.crt",
    "nat-pmp": "",
    "nat-upnp": false,
    "applicationId": "amzn1.ask.skill.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX",
    "oauthClientID": "amzn1.application-oa2-client.XXXXXXXXXXXXXXXXXXXXXXXXXXXX>
  },

Ist nur für Custom Skill oder einem "eigenen" (lokalen) Smart Home Skill -> wenn du das nicht hast, dann kann das weg ;)

Bzgl. den uid der User kann ich nichts sagen, keine Ahnung wer wo wie was bei Docker hat...

und bei "server" steht "fhem" und das wird (laut alexa-fhem Log) eben als 172.18.0.4 "aufgelöst".
Wenn das vom alexa-fhem Container zum fhem Container nicht geht, dann geht das nicht...
...ob und wie das bei Docker sein muss/müsste: keine Ahnung.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#1907
Also die Installationsmeldung KANNST DU IGNORIEREN!

Es gibt ja im fhem Container (wo das Alexa Device definiert ist) KEINE alexa-fhem Installation!
(außer bei "bare metal")

alexa-fhem läuft ja im alexa-fhem Container und das weiß doch fhem bzw. das Alexa-Device dort nicht...

Also ignoriere die einfach!

Hattest du nicht schon mal eine ssh-Verbindung zum Vereinsserver?

Der Zustand war/ist wichtiger...

Ich weiß nicht genau was alexa-fhem bzgl. uid prüft.
Aber (so scheint es) zumindest mal die Rechte im .ssh Ordner auf den alexa-fhem im alexa-fhem Container "schaut".
Welcher das bei Docker ist: keine Ahnung

(bei "bare metal": /opt/fhem/.ssh)

Darin sind die Schlüssel für die "Anmeldung" am Vereinsserver...
Evtl. geht auch deregistrieren und neu registrieren (inkl. neu Verbinden des Skills)...
...zu der Fehlermeldung
Zitatsetstate alexa 2023-03-09 11:12:57 alexaFHEM.ProxyConnection error;; Reverse Proxy replied with neither registered nor unregistered status: out:  err:ssh: connect to host fhem-va.fhem.de port 58824: Cannot assign requested address\
gibt es einiges im Forum (und im alexa-fhem Wiki: Probleme usw.)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

rallye


Zitat von: MadMax-FHEM am 09 März 2023, 11:36:32
Hattest du nicht schon mal eine ssh-Verbindung zum Vereinsserver?
Ja, ich hatte schon (in "bare-metal-Zeiten") bereits eine Verbindung zum Vereinsserver. Muss mal nachsehen ob ich noch eine alte Sicherung finde.
Zitat von: MadMax-FHEM am 09 März 2023, 11:36:32
Welcher das bei Docker ist: keine Ahnung
(bei "bare metal": /opt/fhem/.ssh)
Den .ssh gibt's auch beim Docker in der /alexa-fhem
Zitat von: MadMax-FHEM am 09 März 2023, 11:36:32
Evtl. geht auch deregistrieren und neu registrieren (inkl. neu Verbinden des Skills)...
Damit habe ich eine Nachmittagsbeschäftigung auch schon  ;)

Danke

LG Rallye
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor

MadMax-FHEM

Naja, entweder eine alte Sicherung und dann "Rechte-passend" die alten .ssh Schlüssel in den Ordner /.ssh von alexa-fhem einbringen...
...oder (evtl. schneller? ;)  ) das mit der Registrierung und Skill usw. neu.

Du kannst ja mal suchen...
...und parallel im Forum lesen wie das geht/gemacht wurde und dann entscheiden 8)

Viel Erfolg!

Dann halt noch die Sache mit: alexa-fhem muss eben fhem erreichen können (Einträge "server" und "port" in der Config von alexa-fhem)...

EDIT: wenn dich die "nicht installiert Meldung" stört, dann eben KEIN Alexa-Device in fhem ABER die Einträge in attr global userattr (die das Alexa Device "mitbringt") übernehmen/eintragen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

rallye

Nachdem ich euch die letzten Tage mit meinem Docker so sehr gequält habe und wahrscheinlich auch teilweise zur Verzweiflung gebracht habe ist es mir nun gelungen alexa-fhem "non-bare-metal" in die Gänge zu bekommen. Für Interessierte hänge ich meine Konfigurationen hier rein:
compose.yaml:

version: '3'
services:

  fhem:
    image: ghcr.io/fhem/fhem/fhem-docker:latest
    container_name: fhem
    hostname: fhem
    restart: always
    network_mode: host
    volumes:
      - /opt/fhemdocker/:/opt/fhem/
    environment:
      FHEM_UID: 999
      FHEM_GID: 20
      TZ: Europe/Vienna
#
  alexa-fhem:
    image: ghcr.io/fhem/fhem/alexa-fhem:latest
    container_name: alexa-fhem
    restart: always
    network_mode: host
    volumes:
      - /opt/alexa-fhem/://alexa-fhem/
    environment:
      ALEXAFHEM_UID: 6062
      ALEXAFHEM_GID: 6062
      TZ: Europe/Vienna


/opt/alexa-fhem/config.json

{
  "alexa": {
    "port": 3000,
    "name": "Alexa",
    "ssl": false,
    "keyFile": "/certs/alexa-fhem.key",
    "certFile": "/certs/alexa-fhem.crt",
    "nat-pmp": "",
    "nat-upnp": false,
    "applicationId": "amzn1.ask.skill.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX",
    "oauthClientID": "amzn1.application-oa2-client.XXXXXXXXXXXXXXXXXXXXXXXXXXXX>
  },
  "sshproxy" : {
    "description" : "FHEM Connector",
    "ssh" : "/usr/bin/ssh"
  },
  "connections": [
    {
      "name": "FHEM",
      "webname": "fhem",
      "filter": "alexaName=..*",
      "uid": "999",
      "port": "8083",
      "server": "127.0.0.1"
    }
  ]
}

wobei ein chmod -r 755 /opt/alexa-fhem unbedingt zu machen ist. Und ein chown 6062:6062 -R /opt/alexa-fhem auch zwingend erforderlich ist. Anmerkung: das 6062 ist jene UID & GID die für alexa-fhem in der compose.yaml angegeben sind.
Änderungen in der /opt/alexa-fhem/config.json waren folgende:

  • "uid" muss jene Angabe sein, die für die fhem-uid in der compose.yaml gemacht wurde.
  • "port" muss jenes Port sein unter welchem euer Webinterface erreichbar ist
  • "server" verweist auf jenen Host auf welchem FHEM läuft. Bei mir am selben host im selben Docker. Daher eben 127.0.0.1 (auch wenn mein Host eine fixe IP hat)

Analyse & Lösungsschritte zu meinem Problem
Das Problem dem ich in meiner (noch) Unkenntnis/Unverständnich von Docker aufgelaufen bin war, dass ich sowohl FHEM als auch alexa-fhem nicht im
    network_mode: host
gefahren bin. Nach ungezählten Fehlversuchen eine Verbindung zwischen den Beiden zu bekommenhabe ich dann einfach mal die IP, welche vom Docker-internen Netzwerk an FHEM vergeben ist in "server" der /opt/alexa-fhem/config.json einzutragen - und kaum macht man's richtig, funktioniert's auch schon! Da bei jedem Neustart des Dockers die IPs neu vergeben werden konnte ich das so hardcoded nicht stehen lassen und habe mich eben für
    network_mode: host
entschieden und die Configs wie sie eben oben sind. Der Rest ist ein Klacks und hier => https://wiki.fhem.de/wiki/FHEM_Connector_für_Amazon_Alexa bestens beschrieben.

Ich werde in den nächsten Tagen versuchen den     network_mode: host wieder weg zu bekommen um den Traffic innerhalb des Portainers (ich hab auch noch Homeassistan, mosquitto, sonos2mqtt und weiss ich was da drinnen laufen) soweit als möglich abzuhandeln.

Allerbesten Dank an @Otto, @Joachim und @Sidey (insbesonders, dass ihr die Nerven nicht verloren habt  ;D )

Noch eine Anmerkung: ob "bare-metal" oder ""Container" ist eine Geschmacksache. MIR ist das schnelle Wiederherstellen der Umgebung im Falle eines Crashes (von welchem Stück HW auch immer) wichtig. Und da hab ich mich für den Docker entschieden  ;)
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor

MadMax-FHEM

Wiederherstellen ok aber egal ob Docker oder "bare metal" : Backup!
Weil irgendwas musst du ja trotz Docker "einstellen"...
...und auch fhem hat ja Daten...
(und nur alexa-fhem ist nach einem Crash egal welcher mit passendem Backup bestimmt ebenso schnell wieder da, auch bei "bare metal" ;) )

Und die Einträge bzgl. externer Verbindung, "Stichwort": Port 3000 usw. kannst du ja auch noch mal "wegoperieren"...
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Homalix99

Hallo,

ich habe fhem in einem Docker Container am laufen und bräuchte innerhalb des fhem Containers die shell commands ip xxx.
Definiert ist der Container via docker-compose.yml
Also sowas wie

command: apt-get update && apt-get install -y iproute2

innerhalb des .yml files.
Das funktioniert aber nicht. Wie gelingt das "Nach-Installieren" von zusätzlichen shell-Kommandos denn?

VG

Alex
- RPI 3, 2 x Arduino Uno, HM-GW, HM-Dev. (Fensterkontakte, HK-Thermostate, div. Aktoren), JeeLink, Arduino Nano
- GPIOs, 1-wire, HM-LAN
-Überwachung Fenster/Türen/Licht, HK-Thermostatregelung, Rollosteuerung, Überwachung Betriebstemperaturen der Heizung, Erfassung Gas/Wasser, PV-Anl., Wetter (WS1600

passibe

Zitat von: Homalix99 am 09 März 2023, 22:04:21
Wie gelingt das "Nach-Installieren" von zusätzlichen shell-Kommandos denn?

Über die Environmentvariable APT_PKGS, siehe https://github.com/fhem/fhem-docker#add-custom-packages.

Entweder im compose-file

services:
  fhem:
    environment:
      APT_PKGS: "<Paketname>"


oder mit
docker run -e APT_PKGS='<Paketname>' ... ...

Sidey

Zitat von: Homalix99 am 09 März 2023, 22:04:21
Hallo,

ich habe fhem in einem Docker Container am laufen und bräuchte innerhalb des fhem Containers die shell commands ip xxx.

Nachinstallieren von Paketen ist keine wirklich gute Lösung.
Wofür brauchst Du denn dieses Kommando?

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Homalix99

- RPI 3, 2 x Arduino Uno, HM-GW, HM-Dev. (Fensterkontakte, HK-Thermostate, div. Aktoren), JeeLink, Arduino Nano
- GPIOs, 1-wire, HM-LAN
-Überwachung Fenster/Türen/Licht, HK-Thermostatregelung, Rollosteuerung, Überwachung Betriebstemperaturen der Heizung, Erfassung Gas/Wasser, PV-Anl., Wetter (WS1600

passibe

Zitat von: Sidey am 09 März 2023, 22:23:11
Nachinstallieren von Paketen ist keine wirklich gute Lösung.

Wieso denn nicht? Wenn es einen validen use-case gibt und man das im Kopf behält, falls später mal Probleme auftreten ...
Ist ja auch nicht so, als würde iproute2 irgendwas kaputtmachen.

Homalix99

Zitat von: passibe am 09 März 2023, 22:28:50
Wieso denn nicht? Wenn es einen validen use-case gibt und man das im Kopf behält, falls später mal Probleme auftreten ...
Ist ja auch nicht so, als würde iproute2 irgendwas kaputtmachen.
Sehe ich auch so.
Ich brauche das, weil fhem im Container aus Netzwerksicht gebridged ist, aber bei mir die RTP-Pakete des SIP-client mit der Docker-Host Adresse versehen werden und Audio deswegen wahrscheinlich nicht funktioniert.
- RPI 3, 2 x Arduino Uno, HM-GW, HM-Dev. (Fensterkontakte, HK-Thermostate, div. Aktoren), JeeLink, Arduino Nano
- GPIOs, 1-wire, HM-LAN
-Überwachung Fenster/Türen/Licht, HK-Thermostatregelung, Rollosteuerung, Überwachung Betriebstemperaturen der Heizung, Erfassung Gas/Wasser, PV-Anl., Wetter (WS1600