jMQTT is a plugin for Jeedom aiming to connect Jeedom to an MQTT broker to subscribe and publish messages

Overview

Community - Documentation - Change Log


jMQTT is a plugin for Jeedom aiming to connect Jeedom to an MQTT broker to subscribe and publish messages. Main functionalities are:

  • Automatic installation of the Mosquitto broker;
  • Multi broker support
  • Automatic creation of MQTT equipments, automatic creation of information commands, options to desactivate these automatisms;
  • Manual addition of MQTT equipement;
  • Duplication of equipments;
  • Decoding of complex JSON payload and creation of related informations;
  • Manual addition of commands (for publishing), support of the retain mode;
  • Acces to the Jeedom JSON RPC API through MQTT.

This plugin was originally written by Domotruc.
Many thanks to him for this real integration of MQTT into Jeedom that we continue to improve now! 👍
(his discontinued version)


Community - Documentation - Change Log

Comments
  • Problème inclusion et message

    Problème inclusion et message "Unexpected error between WebSocket Daemon and Python Daemon"

    Bonjour, Je n'arrive plus à inclure un nouvel équipement qui est pourtant bien visible sous MQTT Explorer. J'ai également le message "Unexpected error between WebSocket Daemon and Python Daemon" toute les 5 minutes. Le Broker est au vert et mes équipement déjà installé sont fonctionnels. Je suis passé sur la version Beta (2021-12-07 01:01:16) en lisant une Issue sur le même sujet mais pas mieux. Je suis sur RPI3B+ avec Jeedom 4.1.27 J'utilise également Zigbeelinker en version Z2M + Client MQTT. Ci-joint mes logs Merci par avance Stéphane Logs JMQTT.zip

    bug 
    opened by StephaneG38 59
  • Beta release - broker offline

    Beta release - broker offline

    I have intalled the beta version and it was up & running just for a while (a couple of hours), The broker went to offline with no reason apparently. Maybe a performance problem? The broker receives during this time 12messages per second.

    [2021-05-07 15:47:59][DEBUG] : Id 126 : Python daemon disconnected from WebSocket Daemon [2021-05-07 15:48:03][INFO] : Redémarrage du client MQTT pour broker_jeedom [2021-05-07 15:48:04][DEBUG] : Id 126 : Python daemon connected successfully to WebSocket Daemon [2021-05-07 15:48:04][DEBUG] : Id 126 : onMessage received : "{"cmd":"connection","state":false}"

    I tried to start up it again via menu with no success. I have back to stable version.

    opened by pirracas77 36
  • Problème de déconnexion du Websocket / Broker arrêté

    Problème de déconnexion du Websocket / Broker arrêté

    Je fais suite à mon problème d'hier (#103) qui semble avoir un peu évolué à force d'arrêts / redémarrages / réinstallations plugins-dépendances.

    Le broker à toujours pour statut : NOK Le Client MQTT est arrêté

    Le démon est OK mais avec les logs suivants :

    [2021-09-22 21:20:14,787]ERROR    : BrkId:   21 : WebSocketClient.worker() Exception
    Traceback (most recent call last):
    File "/var/www/html/plugins/jMQTT/resources/jmqttd/jmqttd.py", line 200, in worker
    self.wsclient.send(msg)
    File "/usr/local/lib/python3.7/dist-packages/websocket/_app.py", line 191, in send
    "Connection is already closed.")
    websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.
    [2021-09-22 21:20:18,919]INFO     : BrkId:   21 : Connected to Jeedom using ws://127.0.0.1:1026/plugins/jMQTT/resources/jmqttd/jmqttd.php
    [2021-09-22 21:20:18,922]DEBUG    : BrkId:   21 : Received a message through WebSocket
    [2021-09-22 21:20:18,925]INFO     : BrkId:   21 : Disconnected from Jeedom
    [2021-09-22 21:20:20,988]INFO     : BrkId:   21 : Message received (topic="zigbee2mqtt/bridge/logging", payload="{"level":"info","message":"MQTT publish: topic 'zigbee2mqtt/0x00158d0003139f48', payload '{\"battery\":97,\"contact\":true,\"device\":{\"applicationVersion\":3,\"friendlyName\":\"0x00158d0003139f48\",\"ieeeAddr\":\"0x00158d0003139f48\",\"manufacturerID\":4151,\"manufacturerName\":\"LUMI\",\"model\":\"MCCGQ11LM\",\"networkAddress\":28668,\"powerSource\":\"Battery\",\"type\":\"EndDevice\"},\"last_seen\":\"2021-09-22T21:20:20+02:00\",\"linkquality\":57,\"temperature\":26,\"voltage\":2995}'"}", QoS=0, retain=False)
    [2021-09-22 21:20:21,020]INFO     : BrkId:   21 : Message received (topic="zigbee2mqtt/0x00158d0003139f48", payload="{"battery":97,"contact":true,"device":{"applicationVersion":3,"friendlyName":"0x00158d0003139f48","ieeeAddr":"0x00158d0003139f48","manufacturerID":4151,"manufacturerName":"LUMI","model":"MCCGQ11LM","networkAddress":28668,"powerSource":"Battery","type":"EndDevice"},"last_seen":"2021-09-22T21:20:20+02:00","linkquality":57,"temperature":26,"voltage":2995}", QoS=0, retain=False)
    [2021-09-22 21:20:21,067]ERROR    : BrkId:   21 : WebSocketClient.worker() Exception
    Traceback (most recent call last):
    File "/var/www/html/plugins/jMQTT/resources/jmqttd/jmqttd.py", line 200, in worker
    self.wsclient.send(msg)
    File "/usr/local/lib/python3.7/dist-packages/websocket/_app.py", line 191, in send
    "Connection is already closed.")
    websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.
    [2021-09-22 21:20:21,068]ERROR    : BrkId:   21 : WebSocketClient.worker() Exception
    Traceback (most recent call last):
    File "/var/www/html/plugins/jMQTT/resources/jmqttd/jmqttd.py", line 200, in worker
    self.wsclient.send(msg)
    File "/usr/local/lib/python3.7/dist-packages/websocket/_app.py", line 191, in send
    "Connection is already closed.")
    websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.
    [2021-09-22 21:20:24,094]INFO     : BrkId:   21 : Connected to Jeedom using ws://127.0.0.1:1026/plugins/jMQTT/resources/jmqttd/jmqttd.php
    [2021-09-22 21:20:24,110]DEBUG    : BrkId:   21 : Received a message through WebSocket
    [2021-09-22 21:20:24,112]INFO     : BrkId:   21 : Disconnected from Jeedom
    
    opened by Florentin68 24
  • feature request: option to null json properties when removed from topic

    feature request: option to null json properties when removed from topic

    Salut "Petite" feature request, pourrais t'on avoir la possibilité de null les propriétés d'un topic json si elle ne sont pas présentes dans la publication en cours.

    Use case: J'ai un topic json qui contient plus ou moins de propriétés selon les commandes. Je voudrais pouvoir savoir si cette props a été publiée ou pas, sinon j'affiche un autre resultat d'une autre variable. Dans le comportement actuel si le topic ne contient pas la prop sur sa derniere publication, jmqtt renvoie la dernière valeur reçue. Ce qui me pose un soucis car j'ai aucun moyen de savoir si cette valeur viens dêtre publiée ou pas.

    Un renvoie de "null" serait parfait :)

    Coté conf, une checkbox sur le topic pour selectionner si on veut garder l'ancienne valeur ou la supprimer?

    wontfix php 
    opened by KipK 17
  • Perte aléatoire du Client Broker

    Perte aléatoire du Client Broker

    Bonjour à tous,

    Je rencontre un souci avec le broker JMQTT, il se coupe aléatoirement la nuit et les valeurs ne sont pas actualisé..

    Niveau log j'ai le message suivant : "exception thrown by MQTT client: Invalid function arguments provided."

    Puis relance du demon dans 15 seconds mais cela boucle. Si je fais "redémarrer" sur mon client JMQTT, tout refonctionne.

    Une idée ? Je peux lancer l'écoute en mode debug si besoin.

    Configuration :

    • Mosquitto installé sur une instance Home Assistant
    • JMQTT dernière version de ce repo
    opened by Balooforever 15
  • JMQTT - Jeedom 4.1.28  Dépendances  NOK   Relance des dépendances impossible

    JMQTT - Jeedom 4.1.28 Dépendances NOK Relance des dépendances impossible

    Bonjour,

    J'ai lancé une MAJ générale de ma box Jeedom PRO (version 4.1.28). Depuis, JMQTT ne se lance plus et lorsque je relance les dépendances, il s'arrête soit à 60% soit à 80%.

    J'ai supprimé puis réinstallé le plugin. Même résultat.

    Que faire ?

    Merci d'avance pour votre assistance.

    opened by edesmaret 14
  • on_mqtt_message raised an Exception

    on_mqtt_message raised an Exception

    Hello,

    Not sure if this issue was reported before. I have this issue after sending a "get" mqtt message

    2021-06-30 10:09:56 | jMQTT | on_mqtt_message raised an Exception : [MySQL] Error code : 23000 (1062). Duplicate entry '422-get' for key 'unique' : INSERT INTO cmd SET id = :id, logicalId = :logicalId, generic_type = :generic_type, eqType = :eqType, name = :name, order = :order, type = :type, subType = :subType, eqLogic_id = :eqLogic_id, isHistorized = :isHistorized, unite = :unite, configuration = :configuration, template = :template, display = :display, value = :value, isVisible = :isVisible, alert = :alert -- | -- | --

    image

    This is the device

    https://www.zigbee2mqtt.io/devices/SM-AZ713.html#useelink-sm-az713

    bug 
    opened by pirracas77 14
  • Erreur depuis passage à la version du 2802022 (dernière version)

    Erreur depuis passage à la version du 2802022 (dernière version)

    J'utilise jMQTT depuis plusieurs années. Merci pour le travail ! Depuis la dernière mise à jour j'obtiens des erreurs sur toutes mes réceptions de message en provenance de mes objets domotiques perso. Je m'explique, chaque objet domotique transmet une trame json comme celle-ci par exemple pour un simple capteur de température.

    topic : lora2mqtt/NODE_10 
    valeur : {"T":"22.3","#tx":786}
    

    L'erreur reçue est la suivante : Chemin JSON de la commande lora2mqtt|NODE_10{tx} incorrect : "[#tx]"

    Je suppose que jMQTT n'apprécie pas que l'information tx soit préfixée par #, chose qui était parfaitement supportée auparavent.

    Pouvez vous confirmer ? et corriger le cas échéant ?

    Merci à vous

    bug 
    opened by mchacher 11
  • Value not fetched or not updated in an info command when added manually

    Value not fetched or not updated in an info command when added manually

    Context (early July '21):

    1. Jeedom 4.1.23 on Raspbian Buster with latest jMQTT plugin from the Marketplace
    2. Mosquitto installed on another machine than Jeedom
    3. MQTT Explorer used on a third machine to monitor topic values of the Mosquitto server Use case: Manually add an equipment without automatic command discovery. Then add a manual info command that read a topic and a manual action command that updates its value. Use the Test button in the info command to fetch the value. Symptom: No value is fetched or the value is fetched but never updated again, whatever the topic's value is in MQTT Explorer. Notes:
    • The action command is correctly working, showing that the communication with the broker is OK
    • The same use case with the MQTT plugin (from lunarok) is working.
    opened by msannier 11
  • High CPU consumption. Crontab process

    High CPU consumption. Crontab process

    Hello:

    I have realized that the crontab process for jmqtt is consuming a lot of CPU frequently. (92% in the example below)

    ~$ top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2486 www-data 20 0 646428 446104 29780 R 92,8 22,0 390:32.03 php

    ~$ ps -ef |grep 2486 www-data 2486 1 26 abr24 ? 06:31:11 php /var/www/html/core/class/../php/jeeCron.php cron_id=42179

    image

    This implies that jmqtt plugin sometimes gets stuck in actions as simple as "duplicating a equipment" and I forced to reboot the whole debian system to have the daemon up and runing again.

    opened by pirracas77 11
  • problème de rafraichissement état/commandes dans Design

    problème de rafraichissement état/commandes dans Design

    Bonjours,

    Suite à la reprise de paramètres d'affichage dans Design, j'ai eu une série du message joint "Centre.message.jeedom.txt", je ne comprends pas le lien entre mes actions dans Design et ce qui semble être une erreur jMQTT. J'ai constaté pouvoir par exemple allumer une lampe par Design, mais ne plus pouvoir l'éteindre et pas de rafraichissement de son icone graphique état.

    Centre message Jeedom.txt

    Quels éléments supplémentaires, dois je vous apporter ?

    Merci d'avances pour vos retours.

    question 
    opened by dandcs 10
  • Template manager améliorations

    Template manager améliorations

    Bonjour,

    Suite aux discutions sur le community à propos des templates et des normes de nommage - en particulier pour zwave mais je suppose qu'on aurait le même problème pour d'autres protocoles.

    • root topic : aujourd'hui tous les topics d'un objet ont la même racine zwave/location/equipment par exemple, et le template remplace tout le 'root topic' sans distinction par celui de l'objet à utiliser. On voudrait pouvoir utiliser un autre topic pour interroger l'API de ZwaveJs avec ce préfixe: zwave/_CLIENTS/ZWAVE_GATEWAY-Zwavejs2Mqtt/api/ Ceci est une constante pour mon installation, mais dans le cadre des échanges de template ça ne l'est plus, dépend du paramétrage zwavejs2mqtt: image

    • Toujours pour améliorer l'échange de templates, on voudrait pouvoir rappeler une autre commande dans la valeur d'une commande. 2 exemples:

    1. valeur de la commande image Une commande nodeId me donne une info (le node id de l'équipement). Pour la 2e commande, j'utilise dans le json envoyé la valeur de cette info: {"args": [#[salon][Ampoule2][nodeId]#]} Mais dans le template c'est remplacé par l'id de cette commande sur mon jeedom {"args:[#2462#]}. Il faudrait, lors de la création du template, numéroter toutes les commandes de 1 à N, et utiliser cet id à la place de mon id perso. Puis, lorsqu'on applique un template sur un objet, on remplace cet id par le "human name" de la commande concernée.

    2. autre action de la commande image Pareil que précédemment, j'utilise cette fois une "action à effectuer avant la commande" sur mon propre objet #[salon][Ampoule2][SetRed]# (puis setBlue, setGreen, ...) Les actions sont correctement exportées dans le template, mais ici encore avec mon #id# perso:

    "jeedomPreExecCmd": [
        {
            "options": {
                "enable": "1",
                "background": "1",
                "slider": "hexRed(#color#)"
            },
            "cmd": "#28502#"
        },
    

    La même correction fonctionnera ici aussi: numéroter les commandes de 1 à N lors de la création du template, et remplacer ces numéros lors qu'on applique un template sur un objet.

    Je me suis inspiré de cette discussion pour mémoire

    enhancement help wanted 
    opened by pifou25 0
Owner
null
This project is very diverse and based upon many languages and libraries such as C++, Python, JavaScript, PHP and MQTT

ADMS-Real-time-project This project is very diverse and based upon many languages and libraries such as C++, Python, JavaScript, PHP and MQTT Advance_

Nitya parikh 1 Dec 1, 2021
Ied plugin composer - Inspired Plugin Composer: Create, publish and edit plugins from within Textpattern CMS.

ied_plugin_composer Create, publish and edit plugins from within Textpattern CMS. Creates a new page under the Extensions tab where you can edit and e

Stef Dawson 8 Oct 3, 2020
This is an implementation of PSR specification. It allows you to send and consume message with Redis store as a broker.

This is an implementation of PSR specification. It allows you to send and consume message with Redis store as a broker.

Enqueue 35 Nov 4, 2022
html-sanitizer is a library aiming at handling, cleaning and sanitizing HTML sent by external users

html-sanitizer html-sanitizer is a library aiming at handling, cleaning and sanitizing HTML sent by external users (who you cannot trust), allowing yo

Titouan Galopin 381 Dec 12, 2022
Magento 2 Message Queue OS AMQP Broker Implementation

Magento 2 Message Queue AMQP Backend AMQP message queue backend implementation for Rcason_Mq. Installation Require the module via Composer $ composer

Renato 8 Jul 12, 2022
PracticeCore at the time created for DarkneesNetwork, and now i publish

Practice PracticeCore for PocketMine-MP 4.0.0 Description This is a beta version, It is very likely a drop in TPS or performance and clearly errors an

Claudio T. 4 Jul 24, 2022
Make and publish extensions.

Deutsch English Svenska Publish 0.8.59 Make and publish extensions. How to make an extension Start with a feature, language or theme. This will show y

Anna 3 Nov 5, 2022
Another initiative where patient in need of Blood and recovered patients willing to donate Blood can come together under one platform and connect with each other.

This is yet another initiative where patient in need of Blood and recovered patients willing to donate Blood can come together under one platform and connect with each other.

Rohit Tiwari 1 May 5, 2022
A Laravel Wrapper for the Binance API. Now easily connect and consume the Binance Public & Private API in your Laravel apps without any hassle.

This package provides a Laravel Wrapper for the Binance API and allows you to easily communicate with it. Important Note This package is in early deve

Moinuddin S. Khaja 7 Dec 7, 2022
Connect Nios4 with Google Calendar via PHP

Nios4_Google_Calendar Connect Nios4 with Google Calendar via PHP ISTRUZIONI INTEGRAZIONE GOOGLE CALENDAR CON NIOS4. Guida per l'integrazione del calen

null 2 Sep 23, 2021
Connect ThriveCart with FluentCRM

Fluent Connect Connect ThriveCart with FluentCRM & WordPress The aim of this plugin is to connect ThriveCart with FluentCRM. ThriveCart is a super sim

WPManageNinja 2 Jan 24, 2022
Free Functions To Connect To The Database ( Mysql ) For Php Programmers

Update ?? The biggest update ever DB-php Free Functions To Connect To The Database ( Mysql ) For Php Programmers This Version : 2.0 connect to databas

Ali 3 May 27, 2022
PHP OOP interface for writing Slack Block Kit messages and modals

Slack Block Kit for PHP ?? For formatting messages and modals for Slack using their Block Kit syntax via an OOP interface ?? By Jeremy Lindblom (@jere

Slack PHP Framework 32 Dec 20, 2022
Private groups to share messages, photos, videos, links with friends and family.

A truly private space for you and your friends What is Zusam ? Zusam (/tsuˈzam/) is a free and open-source way to self-host private forums for groups

Zusam 104 Dec 20, 2022
A simple PHP package for sending messages to Slack, with a focus on ease of use and elegant syntax.

Slack for PHP A simple PHP package for sending messages to Slack with incoming webhooks, focussed on ease-of-use and elegant syntax. Note: this packag

Regan McEntyre 1.2k Oct 29, 2022
A fully-managed real-time messaging service that allows you to send and receive messages between independent applications.

A fully-managed real-time messaging service that allows you to send and receive messages between independent applications.

Google APIs 58 Dec 23, 2022
Make WhatsApp ChatBot and use WhatsApp API to send the WhatsApp messages in php .

Ultramsg.com WhatsApp Bot using WhatsApp API and ultramsg Demo WhatsApp API ChatBot using Ultramsg API with php. Chatbot tasks: The output of the comm

Ultramsg 33 Nov 19, 2022
🍪 bakes cookies for PSR-7 messages

?? bakes cookies for PSR-7 messages

Hans Ott 35 Jul 13, 2022
An easy code to send messages on a discord text channel with webhook.

Status Webhook-Discord An easy code to send messages on a discord text channel with webhook. Don't forget to check the latest version of Webhook-Disco

Victor 1 Dec 3, 2021