Connexion station meteo

Zigbee2mqtt dans Gladys ne fonctionne pas avec un container MQTT externe, c’est Gladys qui doit lancer le container…

Je ne pense pas que tu puisse utiliser l’intégration Zigbee2mqtt sur cette version d’ubuntu tant qu’on aura pas développé la compatibilité. Sur la LTS d’Ubuntu ça marchera

ok,
donc je vois pour basculer sur la lts de ubuntu sans recasser mon install qui me plait bien par ailleurs

1 « J'aime »

Bonjour à tous,
suite de mes peregrinations.
j ai donc downgradé mon serveur de ubuntu 21.10 à ubuntu 20.04LTS.
réinstallation longue…
j ai réinstallé Gladys en suivant la procédure déjà citée.
Openweather, Agenda, Telegram ok du premier coup !
mais Mqtt ne fonctionnait toujours pas avec toujours le meme message sur le menu intégration , et surtout dans le log et donc idem pour zigbbee2mqtt, et là en relisant le message d erreur une idée mais venue et j ai relu le guide d installation !
et alors , oh lumière ! une petite phrase sybiline passée au travers dans la lecture de ce doc : “Il faut maintenant ajouter votre utilisateur au groupe “docker” pour que votre utilisateur puisse exécuter les commandes Docker.” !
je pense que cette phrase aurait meritée d etre mise plus en avant, voir étayer d une copie d ecran de la commande !
en regardant le dossier docker dans var/lib via un ls-l et en regardant les membres du group docker l illumination m est venue, un petit chmod et un petit usermod -a -G, un redemarrage et l affaire etait réglée!
via mon navigateur gladys/integration maintenant j ai mqtt accessible !
j aurais du m en douté quand je voyays que je devais lancer toutes mes commandes docker via un sudo !

maintenant reste à concevoir le script nodered pour recuperer les données de ma station meteo et l interfacer avec mqtt vers gladys…

en parallele je viens de commander un dongle sonoff zigbee pour la suite sur d autres equipements (prise, interrupteurs…)
donc in fine mon downgrade peut etre pas necessaire mais c est fait donc on va pas recasser maintenant…cela viendra assez vite!

1 « J'aime »

Si si ça l’était, tu avais juste 2 problèmes ( cgroup et après les droits)

C’est dans la documentation docker aussi.

j avais lu doc gladys mais pas doc docker…

maintenant je vais devoir decouvrir nodered pour faire un script pour ma station meteo, j ai regardé le stream de pierre gilles sur le pricipe, parait faisable mais pour passer au concret c est une autre histoire, surtout ai je tous les elements necessaires en ma possession…

merci, je vais m empresser de regarder cela…

Bonjour,
etat de l avancement .
connexion gladys avec nodered via mqtt in et out ok apres moult galeres de parametrages.
j ai recuperé et installer les palettes nodered pour connexion weather underground.
commencement d un scenarion avec la palette pws observation et une mqtt out : je me connecte a gladys mais pour le moment ne recupere pas de donnée wunderground pour ma station local (malgré le parametrage avec mon idstation et code api adequat), encore des essais, modifs… à faire

1 « J'aime »

bonjour,
environ 1 semaine !
certainement que certains points pourraient relever d un autre ticket mais je reste sur la continuité de ma station meteo a connecter à gladys et donc par simplicité…

donc :
-changement d os de mon serveur de ubuntu 21.10 vers 20.04 lts, fait et cela semble fonctionné, bien que j ais des plantages fréquent que je n avait pas en 21.10
-reinstallation de gladys avec docker : ok avec prise en compte de mqtt (sur ce pt j y reviendrai plus loin)

  • installation de node red sur docker : ok
    -test des exemples donnés par pierre gilles sur YT : ok la communication passe via mqtt entre les 2 outils
    -installation sur nodered d une bibli (ou palette) specifique pour lecture de l api weatherundergroud
    -creation du script nodered (enchainement et parametrage de palette) : ok le script fonctionne je recupere les données json de ma station via l api) et les traitent jusqu a à ma palette debug mais impossible de les envoyer via mqtt vers gladys…
    -test de dashboard de nodered : je recupere bien les données sur le tdb créé via nodered
    donc où est le pb? format des données dans le flux ? parametrage des appareils dans gladys? typiquement j ai pris 2 “objets” temperature et humidité pour recuperer celle de ma station et ai créé 2 inconnus pour récuperer pluviometrie et sens du vent .

et depuis ce matin autre pb, certainement apres une mise à jour du serveur (systeme, docker, gladys ?) : les droits sur le repertoire dockers avait eté remodifié (corrigé depuis), mais par contre depuis gladys semble voir mqtt mais ne parvient pas à garder le lien…
et en faisant un docker ps je constate que le container eclipse-mosquitto est en permanence en mode restarting(13), ou plutot semble boucler sur cette etat…
une idée ?

donc en attendant, situation : de grands progrès mais…

Sylvain

PS: en parallèle sur pc w11 je me suis créé un environnement de dev dedié gladys (wsl2, ubuntu,docker,vsc,…) pour pouvoir dans le futur contribuer au dev (pour le moment je dev 4 applis en pascal/delphi) : petite question vsc sur l environnement wsl ne risque t il pas de rentrer en conflit avec le vsc sur la partie w11…

Bonjour @Einstein8854
Tu peux mettre une copie de ton flow stp

quand tu parles de mon flow, c est le script nodered ?
c est pas sur le pb actuel de mqtt qui boucle sur restarting ?

oui mais il faut impérativement le coller avec </> ce qui le met en Preformatted text sinon il y a un problème avec les quotes et double quotes

[
    {
        "id": "016eb2c081373f51",
        "type": "tab",
        "label": "Flow 3",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "c39ad4c34007e8b9",
        "type": "inject",
        "z": "016eb2c081373f51",
        "name": "meteo courante",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "180",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "x": 90,
        "y": 20,
        "wires": [
            [
                "4c448ed4c64a6ce3"
            ]
        ]
    },
    {
        "id": "4c448ed4c64a6ce3",
        "type": "pws-observations",
        "z": "016eb2c081373f51",
        "name": "Weather",
        "stationid": "IPUCEU1",
        "units": "m",
        "apikey": "0c25d0e62f427f92",
        "x": 260,
        "y": 20,
        "wires": [
            [
                "46abe7e7e0802ce4",
                "5494310f7054c656"
            ]
        ]
    },
    {
        "id": "f26d974a891612a6",
        "type": "mqtt out",
        "z": "016eb2c081373f51",
        "name": "mqtt:station",
        "topic": "gladys/device/mqtt:station/feature/mqtt:meteo/state",
        "qos": "2",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "b19483b9a24a3874",
        "x": 370,
        "y": 120,
        "wires": []
    },
    {
        "id": "46abe7e7e0802ce4",
        "type": "debug",
        "z": "016eb2c081373f51",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 430,
        "y": 80,
        "wires": []
    },
    {
        "id": "7b61bd6495dc3004",
        "type": "ui_text",
        "z": "016eb2c081373f51",
        "group": "58b1939d3a5a9ac4",
        "order": 3,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "Temp :",
        "format": "{{value}}",
        "layout": "row-spread",
        "className": "",
        "x": 370,
        "y": 160,
        "wires": []
    },
    {
        "id": "62bc4033a584587b",
        "type": "function",
        "z": "016eb2c081373f51",
        "name": "temperature",
        "func": "msg.payload=msg.payload.observations[0].metric.temp;\n//msg.payload=temper;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 90,
        "y": 160,
        "wires": [
            [
                "93fdf8c678765f85",
                "7b61bd6495dc3004",
                "c43475ebeae26f8e"
            ]
        ]
    },
    {
        "id": "5494310f7054c656",
        "type": "json",
        "z": "016eb2c081373f51",
        "name": "",
        "property": "payload",
        "action": "obj",
        "pretty": false,
        "x": 90,
        "y": 80,
        "wires": [
            [
                "f26d974a891612a6",
                "94df99c94ec5445a",
                "7056f74a4fb4702c",
                "1bf4900ef12e645c",
                "941aa23b97daf6d2",
                "62bc4033a584587b",
                "e856a8e2a90a7355"
            ]
        ]
    },
    {
        "id": "94df99c94ec5445a",
        "type": "function",
        "z": "016eb2c081373f51",
        "name": "humidite",
        "func": "var humid=msg.payload.observations[0].humidity;\nmsg.payload=humid;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 80,
        "y": 260,
        "wires": [
            [
                "4644a48691675823"
            ]
        ]
    },
    {
        "id": "4644a48691675823",
        "type": "ui_gauge",
        "z": "016eb2c081373f51",
        "name": "",
        "group": "58b1939d3a5a9ac4",
        "order": 7,
        "width": 0,
        "height": 0,
        "gtype": "gage",
        "title": "Humidité",
        "label": "%",
        "format": "{{value}}",
        "min": 0,
        "max": "100",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "className": "",
        "x": 380,
        "y": 260,
        "wires": []
    },
    {
        "id": "93fdf8c678765f85",
        "type": "ui_gauge",
        "z": "016eb2c081373f51",
        "name": "",
        "group": "58b1939d3a5a9ac4",
        "order": 2,
        "width": 0,
        "height": 0,
        "gtype": "gage",
        "title": "Temperature",
        "label": "°C",
        "format": "{{value}}",
        "min": "-20",
        "max": "50",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "className": "",
        "x": 390,
        "y": 200,
        "wires": []
    },
    {
        "id": "7056f74a4fb4702c",
        "type": "function",
        "z": "016eb2c081373f51",
        "name": "pluie",
        "func": "var pluie=msg.payload.observations[0].metric.precipRate;\nmsg.payload=pluie;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 70,
        "y": 320,
        "wires": [
            [
                "0ca257b3fe7bb104"
            ]
        ]
    },
    {
        "id": "0ca257b3fe7bb104",
        "type": "ui_gauge",
        "z": "016eb2c081373f51",
        "name": "",
        "group": "58b1939d3a5a9ac4",
        "order": 4,
        "width": 0,
        "height": 0,
        "gtype": "gage",
        "title": "Précipitation",
        "label": "mm",
        "format": "{{value}}",
        "min": 0,
        "max": "500",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "className": "",
        "x": 390,
        "y": 320,
        "wires": []
    },
    {
        "id": "1bf4900ef12e645c",
        "type": "function",
        "z": "016eb2c081373f51",
        "name": "vent",
        "func": "\nvar wind=msg.payload.observations[0].winddir;\nmsg.payload=wind;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 70,
        "y": 380,
        "wires": [
            [
                "1233944667394c99"
            ]
        ]
    },
    {
        "id": "1233944667394c99",
        "type": "ui_gauge",
        "z": "016eb2c081373f51",
        "name": "",
        "group": "58b1939d3a5a9ac4",
        "order": 6,
        "width": 0,
        "height": 0,
        "gtype": "compass",
        "title": "vent",
        "label": "°",
        "format": "{{value}}",
        "min": 0,
        "max": "360",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "className": "",
        "x": 370,
        "y": 380,
        "wires": []
    },
    {
        "id": "941aa23b97daf6d2",
        "type": "function",
        "z": "016eb2c081373f51",
        "name": "date",
        "func": "var periode=msg.payload.observations[0].obsTimeLocal;\nvar date=periode.split(\" \")[0];\nvar heure=periode.split(\" \")[1];\nvar msg1={};\nvar msg2={};\n//var out ={\"Date\" : date, \"Heure\": heure};\nmsg.payload=\"Le \" + date + \" à \"+ heure;\n//msg1.payload=out;\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 70,
        "y": 440,
        "wires": [
            [
                "4f581218cd160db3"
            ]
        ]
    },
    {
        "id": "4f581218cd160db3",
        "type": "ui_text",
        "z": "016eb2c081373f51",
        "group": "58b1939d3a5a9ac4",
        "order": 1,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "",
        "format": "{{value}}",
        "layout": "row-spread",
        "className": "",
        "x": 370,
        "y": 440,
        "wires": []
    },
    {
        "id": "e856a8e2a90a7355",
        "type": "function",
        "z": "016eb2c081373f51",
        "name": "pression",
        "func": "var press=msg.payload.observations[0].metric.pressure;\nmsg.payload=press;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 80,
        "y": 500,
        "wires": [
            [
                "542efb7e296e6737"
            ]
        ]
    },
    {
        "id": "542efb7e296e6737",
        "type": "ui_gauge",
        "z": "016eb2c081373f51",
        "name": "",
        "group": "58b1939d3a5a9ac4",
        "order": 5,
        "width": 0,
        "height": 0,
        "gtype": "compass",
        "title": "Pression",
        "label": "mBar",
        "format": "{{value}}",
        "min": 0,
        "max": "2000",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "className": "",
        "x": 380,
        "y": 500,
        "wires": []
    },
    {
        "id": "c43475ebeae26f8e",
        "type": "mqtt out",
        "z": "016eb2c081373f51",
        "name": "mqtt:station",
        "topic": "gladys/device/mqtt:station/feature/mqtt:temp/state",
        "qos": "2",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "b19483b9a24a3874",
        "x": 230,
        "y": 220,
        "wires": []
    },
    {
        "id": "0c25d0e62f427f92",
        "type": "pwsapikey",
        "name": ""
    },
    {
        "id": "b19483b9a24a3874",
        "type": "mqtt-broker",
        "name": "",
        "broker": "mqtt://localhost",
        "port": "1883",
        "clientid": "mqtt:station",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "90",
        "cleansession": false,
        "birthTopic": "",
        "birthQos": "2",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "2",
        "willPayload": "",
        "willMsg": {},
        "sessionExpiry": ""
    },
    {
        "id": "58b1939d3a5a9ac4",
        "type": "ui_group",
        "name": "Meteo",
        "tab": "8cf38833f27eea20",
        "order": 1,
        "disp": true,
        "width": "6",
        "collapse": false,
        "className": ""
    },
    {
        "id": "8cf38833f27eea20",
        "type": "ui_tab",
        "name": "Station",
        "icon": "dashboard",
        "disabled": false,
        "hidden": false
    }
]

@cce66 Ainsi ? j espere que c est lea meme version que le 1er envoi, car la j essaie de modifier sans pouvoir tester (pb mosquitto mqtt oblige…)

Tu as regardé les logs du container ? ça te donnera une idée du problème

hello @pierre-gilles ,
je visualise à l instant le log du container eclipse-mosquitto et là je vois une belle erreur : "error : unable to open pwfile “/mosquitto/config/mosquitto.passwd”
normalement c est gladys qui installe et démarre le container mqtt non ?

C’est pas un souci de droit ? Tu dis que tes droits avaient été modifié par ton système ?

Si tu as lancé le container MQTT via Gladys, oui. Après Gladys lance le container la première fois, si entre temps ton système modifie les droits des fichiers, Gladys ne peut rien faire de spécial (Gladys fait juste un docker run une fois)

@pierre-gilles
complément,
en redigant ma reponse,
je faisait une petite recherche sur mon serveur ubuntu gladys,
dans le repertoire var/lib/gladysassistant j ai un rep Mosquitto mais à l interieur je n ai pas de rep config, j ai directement les fichiers mosquitto.conf et mosquitto.passwd avec droit fichier 644 pour user et groupe 1883

@pierre-gilles
le serveur , sauf via certaine maj, ne change pas les droits seul.
mais la en effet j ai l impression de pb de droit, mais peut etre aussi d arbo (pas de rep config dans le repertoire mosquitto de gladysassistant)

mqtt a bien eté installé via gladys en suivant ta procedure.
seul nodered, tjs selon ton explication, a été installé dans docker hors gladys.
je vais quand meme pas encore tout casser et reinstaller.
est ce normal que root soit proprietaire des rep gladysassistant et docker