[Dev] Création d'un docker file pour le plugin Zigbeefordomoticz

Forum dédié au plugin ZigBeeForDomoticZ : installation, paramétrage, utilisation, interfaces ...
nico213111
Messages : 72
Inscription : 30 déc. 2023, 11:18

[Dev] Création d'un docker file pour le plugin Zigbeefordomoticz

Message par nico213111 »

Bonjour Pipiche

Merci encore pour l'intégration des disjoncteur.

j'utilise domoticz avec docker donc j'installe le plugin comme indiquer dans le wiki et tout fonctionne bien. Cependant quand il y a une mise à jour de l'image domoticz, je dois reinstaller le plugin.

Ma proposition est il possible de créer un docker file pour ton plugin cela le rendrai indépendant de domoticz et de ces évolution.

pour zwave-js c'est le cas et ca marche super bien que la mise à jour soit sur domoticz ou sur zwave-js cela n'interfaire pas.

https://github.com/zwave-js/zwave-js-ui

Merci d'avance pour ta réponse.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [Dev] Création d'un docker file pour le plugin Zigbeefordomoticz

Message par Keros »

La différence avec Zwave-JS, c'est qu'il utilise MQTT pour communiquer avec DomoticZ. Il y a déjà un plugin ZigBee2MQTT.

Le plugin ZigBeeForDomoticZ est intégré à DomoticZ et les échanges se font en Python. Je ne pense pas que ce soit possible si le plugin et DomoticZ sont dans deux conteneurs séparés.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Deufo
Messages : 280
Inscription : 26 févr. 2019, 16:25

Re: [Dev] Création d'un docker file pour le plugin Zigbeefordomoticz

Message par Deufo »

Bonsoir,
Si l'installation est bien faite, les données se retrouvent à l'extérieur du conteneur, dans le répertoire /opt/domoticz/userdata
C'est l'emplacement pour la base de donnée, les scripts, les plugins... Ces données ne sont donc pas concernées par la mise à jour ou réinitialisation du conteneur.
Personnellement, je mets à jour l'image puis je réinitialise le conteneur, le plugin est toujours là, il ne manque que les différentes dépendances python qui ont elles bien disparues.
Cette partie est gérée par le script customstart.sh qui va s'en occuper si le système a été réinitialisé, il y a peut-être un souci de ce côté là mais il ne s'agit que des librairies python, pas le répertoire du plugin qui perdrait alors également sa base de données.
pipiche
Messages : 4677
Inscription : 04 avr. 2018, 16:16
Contact :

Re: [Dev] Création d'un docker file pour le plugin Zigbeefordomoticz

Message par pipiche »

Zigbee for Domoticz - Clef zzh-p (electrolama) 45 devices.

Si vous appréciez ce que je fais, vous pouvez contribuer par un don Paypal , ce qui me permettra notamment l'achat d’équipements et de les tester/valider pour le plugin.
Wiki ici
chat sur Keybase.io
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: [Dev] Création d'un docker file pour le plugin Zigbeefordomoticz

Message par jackslayter »

j'avais commencer à faire un Dockerfile pour voir si ça resolvait mon problème (viewtopic.php?t=13672)

voila mes fichiers, à tester car vu que ça ne marchait pas à cause du rpi32b j'ai pas pu poussé
Dockerfile

Code : Tout sélectionner

FROM debian:bullseye-slim

ARG APP_VERSION
ARG APP_HASH
ARG BUILD_DATE
# If stable argument is passed it will download stable instead of beta
ARG BETA

LABEL org.label-schema.version=$APP_VERSION \
      org.label-schema.build-date=$BUILD_DATE \
      org.label-schema.vcs-ref=$APP_HASH \
      org.label-schema.vcs-url="https://github.com/domoticz/domoticz" \
      org.label-schema.url="https://domoticz.com/" \
      org.label-schema.vendor="Domoticz" \
      org.label-schema.name="Domoticz" \
      org.label-schema.description="Domoticz open source Home Automation system" \
      org.label-schema.license="GPLv3" \
      org.label-schema.docker.cmd="docker run -v ./config:/config -v ./plugins:/opt/domoticz/plugins -e DATABASE_PATH=/config/domoticz.db -p 8080:8080 -d domoticz/domoticz" \
      maintainer="Domoticz Docker Maintainers <info@domoticz.com>"

WORKDIR /opt/domoticz

ARG DEBIAN_FRONTEND=noninteractive

RUN set -ex \
    && apt-get update \
    && apt-get install --no-install-recommends -y \
        tzdata \
        unzip \
        git \
		jq \
        libudev-dev \
        libusb-0.1-4 \
        libsqlite3-0 \
        curl libcurl4 libcurl4-gnutls-dev \
        libpython3.9-dev \
        python3 \
		python3-dev \
        python3-pip \
    && OS="$(uname -s | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')" \
    && MACH=$(uname -m) \
    && if [ ${MACH} = "armv6l" ]; then MACH = "armv7l"; fi \
    && archive_file="domoticz_${OS}_${MACH}.tgz" \
    && version_file="version_${OS}_${MACH}.h" \
    && history_file="history_${OS}_${MACH}.txt" \
    && if [ -z "$STABLE"]; then curl -k -L https://releases.domoticz.com/releases/beta/${archive_file} --output domoticz.tgz; else curl -k -L https://releases.domoticz.com/releases/release/${archive_file} --output domoticz.tgz; fi \
    && tar xfz domoticz.tgz \
    && rm domoticz.tgz \
    && mkdir -p /opt/domoticz/userdata \
    && rm -rf /var/lib/apt/lists/* \
    && pip3 install setuptools requests wheel

VOLUME /opt/domoticz/userdata

EXPOSE 8080
EXPOSE 443

ENV LOG_PATH=
ENV DATABASE_PATH=
ENV WWW_PORT=8080
ENV SSL_PORT=443
ENV EXTRA_CMD_ARG=

# timezone env with default
ENV TZ=Europe/Amsterdam

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh \
    && ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/opt/domoticz/domoticz"]
docker-entrypoint.sh

Code : Tout sélectionner

#!/bin/bash

CMD_ARGS="-www $WWW_PORT"
CMD_ARGS="$CMD_ARGS -noupdates -sslwww $SSL_PORT -userdata /opt/domoticz/userdata"

if [ -n "$LOG_PATH" ]; then
  CMD_ARGS="$CMD_ARGS -log $LOG_PATH"
fi

if [ -n "$DATABASE_PATH" ]; then
  CMD_ARGS="$CMD_ARGS -dbase $DATABASE_PATH"
fi

if [ -n "$EXTRA_CMD_ARG" ]; then
  CMD_ARGS="$CMD_ARGS $EXTRA_CMD_ARG"
fi

if [ -f /opt/domoticz/userdata/customstart.sh ]; then
	source /opt/domoticz/userdata/customstart.sh
fi

# check if the examples/templates script folder exists, if not create them
if [ ! -d "/opt/domoticz/userdata/scripts" ]; then
	mkdir -p /opt/domoticz/userdata/scripts
	mkdir -p /opt/domoticz/userdata/scripts/dzVents/data
	cp -R /opt/domoticz/scripts/templates /opt/domoticz/userdata/scripts
	cp -R /opt/domoticz/scripts/dzVents/examples /opt/domoticz/userdata/scripts
fi

if [ ! -d "/opt/domoticz/userdata/plugins/Domoticz-Zigbee" ]; then
        cd /opt/domoticz/userdata/plugins
        git clone https://github.com/zigbeefordomoticz/Domoticz-Zigbee.git
        cd Domoticz-Zigbee
        git config --add submodule.recurse true
        git submodule update --init --recursive
        pip3 install --ignore-requires-python -r /opt/domoticz/userdata/plugins/Domoticz-Zigbee/requirements.txt --upgrade
fi

if [ $1 == "/opt/domoticz/domoticz" ]; then
  exec $@ $CMD_ARGS
else
  exec "$@"
fi
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
nico213111
Messages : 72
Inscription : 30 déc. 2023, 11:18

Re: [Dev] Création d'un docker file pour le plugin Zigbeefordomoticz

Message par nico213111 »

Merci pour vos retour quand j'ai du temps je regarde si j arrive à le faire fonctionner je vous tiens au courant
Répondre