Lenteur MQTT

Forum dédié au protocole MQTT : fonctionnement, intégration ...
Pour les questions concernant le plugin de FlyingDomotic, merci d'utiliser le sous-forum dédié.
TheRoth
Messages : 20
Inscription : 13 févr. 2019, 08:56

Lenteur MQTT

Message par TheRoth »

Hello,

J'ai un petit problème avec mon installation domotique... cela fait 1 an que j'ai le problème (je me rappelle plus exactement de la date et les conditions, mais il me semble que c'était suite à une mise à jour de Domoticz mais peut-être que ce n'est pas ca...)

J'ai un Serveur Xeon 8 Core.... (Un peu surdimensionnés, je sais, mais c'était de la récup du boulot ^^). J'ai fait le test aussi avec un serveur plus récent, un peu moins puissant, plus économique en énergie et même problème. Donc ceci est une certitude, ce n'est pas matériel.

Sur ce serveur... J'ai le SQL (pour le bon fonctionnement de Domoticz, MariaQ de mes souvenirs, Mosquitto serveur et aussi HomeBridge. Rien d'autre.

Tout ce qui est Domoticz est rapide (depuis Domoticz) je n'ai aucun problème, aucune lenteur.. Mon problème ce situe entre HomeBridge et Domoticz, et je ne sais pas d'ou ca vient. Sachant que coté HomeBridge, je n'ai aucune lenteur ou autre sur les autres plug-in.

Je vais vous donner deux exemples concrets.
J'ai un Switch sur Domoticz (Via un Denkovi, mais peu importe, il peut-être virtuel, même problème) Si je l'allume sur Domoticz, c'est instantanée. Si je l'allume depuis HomeKit ou via HomeBridge, c'est quasi instantanée, une légère latence en milli seconde... mais normal (je l'ai toujours eu et je comprends) Ce pendant. Quand j'allume sur Domoticz, il ne s'allume pas sur HomeKit ou HomeBridge... Et si j'attend, il va bien s'allumer mais au bout de 10 min et des fois 1 heure voir plus !

J'ai le même problème avec un capteur virtuel. Si ce capteur passe sur On, il va mettre entre 10 min à plus d'1h à remonter sur HomeKit ! Du coup pas très pratique pour les notifications ^^

Alors je ne sais même pas ou commencer et par ou chercher et qui incriminer.

Ce que j'ai fait en test. Si j'utilise un capteur en MQTT directement sur HomeBridge, celui ci-remonte instantanément. Aucune latence sur les On/Off ou notification... Si le même capteur, je le fais passer par Domoticz, puis HomeBridge j'ai mon délai de 10 min à 1H...

Autre chose. Si je relance mon serveur... j'ai un délai plus court... et si je ne redémarre pas mon serveur, ce délai devient exponentielle. Si je ne redémarre pas mon serveur pendant 1 semaine, je vais avoir des notifications 2 jours après. (la même notification que j'ai eu sur Domoticz via PushOver par exemple qui lui a été instantané). Au moment ou je vous écrit. J'ai un capteur qui détecte nos voiture (via du Beacon) pour automatiser l'éclairage. J'ai eu la notification PushOver à 15H36 et je viens de recevoir celle d'HomeKit ^^ Donc là j'ai une latence de 4H30. Petite précision, quand on reçoit la notification, on la reçoit bien tous en même temps ! Nos iPhones, nos macs !

Ce que je pense... C'est que mon problème vient du Domoticz/Out (car aucune lenteur sur le IN). Peut-être avec cette histoire de Flat (que ne je comprends pas trop)

Coté Technique, je suis dans un réseau en local, pas de pare-feu (seulement sur ma sortie Internet). Je suis essentiellement en Gigabit (Switch récent) et les Switch sont reliés en Fibre.

Mon serveur est en Debian 11 Bullseye, sur version Stable,
Domoticz Version: 2023.1
HomeBridge v1.6.1
homebridge-edomoticz v2.1.46
Timezone GMT+0200
Node.js Version v18.16.0
Service Mode Yes

En terme de ressource, le CPU n'utilise que 25% et dans Domotciz j'ai 520 devices. (mais une centaine en actif)

Si vous avez des pistes, besoin d'information pour m'aider à dépanner ce problème, ce serait cool. Merci
TheRoth
Messages : 20
Inscription : 13 févr. 2019, 08:56

Re: Lenteur MQTT

Message par TheRoth »

Je fais suite...

J'ai ouvert sur mon Mac, un MQTT. Et on voit nettement le retard sur Domotics/out

Exemple d'une publication à 2023-05-09 20:10:33

Code : Tout sélectionner

{
	"Battery" : 255,
	"LastUpdate" : "2023-05-09 05:49:14",
	"RSSI" : 12,
	"description" : "",
	"dtype" : "General",
	"hwid" : "22",
	"id" : "00082405",
	"idx" : 405,
	"name" : "EauChaude",
	"nvalue" : 0,
	"stype" : "Pressure",
	"svalue1" : "1.7000",
	"unit" : 1
}
Dernière modification par Keros le 09 mai 2023, 22:15, modifié 1 fois.
Raison : Ajout des balises
TheRoth
Messages : 20
Inscription : 13 févr. 2019, 08:56

Re: Lenteur MQTT

Message par TheRoth »

Du coup, je vous donnes ma configuration MQTT de Domoticz

Log (Erreur seulement)
Adresse distante : 127.0.0.1
Port: 1883
Délai d'inactivité : False
Prevent Loop : False
Publish Topic: Flat
Prefixe Domoticz IN : domoticz/in
Frefixe Domoticz Out : domoticz/out
TheRoth
Messages : 20
Inscription : 13 févr. 2019, 08:56

Re: Lenteur MQTT

Message par TheRoth »

Petite suite... je découvre un peu ^^

Voici un exemple après reboot. La j'ai 6 min de retard.
Mais ce qui m'intéresse c'est ce que ce device IDX 110, n'est pas actif et de plus ca valeur est à 0 et ne change pas (car inutilisé). Mais Domoticz, le push toute les secondes (et non à son changement de valeur)... Donc mon domoticz/out c'est 500 devices et non, ma petite centaine. Est-il possible de sélectionner ce qu'on veut pusher ? car en plus je dois avoir même pas 50 devices que j'utilise avec HomeBridge.

Code : Tout sélectionner

{
	"Battery" : 255,
	"LastUpdate" : "2023-05-09 21:16:26",
	"RSSI" : 12,
	"description" : "",
	"dtype" : "General",
	"hwid" : "8",
	"id" : "00000B01",
	"idx" : 110,
	"name" : "Analog Input 3 (AI3)",
	"nvalue" : 0,
	"stype" : "Custom Sensor",
	"svalue1" : "0.0000",
	"unit" : 1
}
Dernière modification par Keros le 09 mai 2023, 22:15, modifié 1 fois.
Raison : Ajout des balises
TheRoth
Messages : 20
Inscription : 13 févr. 2019, 08:56

Re: Lenteur MQTT

Message par TheRoth »

Ce que j'ai fait en attendant une solution pérenne.
J'ai désactivé le préfix out dans Domoticz. (vide à la place de domoticz/out)

Ensuite, j'ai fait un script (un script par device dont j'ai besoin de la synchro sur HomeBrige) dont voici un exemple pour ceux à qui ca intéresse.

Code : Tout sélectionner

--------------------------------
------ Variables to edit ------
--------------------------------
devicename = "Entrée" --Name of the device
debug = false
--------------------------------
-- End of variables to edit --
--------------------------------

commandArray = {}
 
if (devicechanged[devicename]) then
	if (devicechanged[devicename] == "On") then
		os.execute('mosquitto_pub -h 127.0.0.1 -t domoticz/out -m \'{ "idx" : 68,"nvalue" : 1}\'')
	elseif (devicechanged[devicename] == "Off") then
		os.execute('mosquitto_pub -h 127.0.0.1 -t domoticz/out -m \'{ "idx" : 68,"nvalue" : 0}\'')
	end
end
 
return commandArray

Le résultat est intéressant. car coté In, je vous disais que j'avais une petite latence... genre moins d'une seconde. et bien elle a disparu. je suis instantané ! Et coté Out... j'ai la même latence que j'avais avec le IN avant. Ca doit venir du fait que c'est un script. Bref, cela me convient. mais si y a mieux, je suis preneur :)

En fait, ca serait bien des options sur le MQTT de Domoticz, Par exemple une case à cocher (Oui Non) MQTT sur chaque device que l'ont veut pusher. OU peut-être tout simplement. une option globale avec pour exemple. Que les Favoris, que les interrupteurs, que les températures que les mesures par exemple ^^ Ça soulagerait le Out ^^
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Lenteur MQTT

Message par boum »

Bonjour. Curieux tout ça en effet.
Normalement, domoticz envoie sur domoticz/out à chaque fois qu'un matériel change un dispositif. La nuance est que c'est plus souvent qu'à chaque fois que son _état_ est changé. Que dit le log du dispositif? Est-ce le hardware ou un script qui provoquerait l'annonce sur MQTT?

Je suis surpris que « si peu » de requêtes ralentissent domoticz. Surtout sur une telle machine.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
TheRoth
Messages : 20
Inscription : 13 févr. 2019, 08:56

Re: Lenteur MQTT

Message par TheRoth »

Hello,

Si peu ? C'est surtout qu'il prend tous les dispositifs (Device, même inutilisé ! Comme j'en ai 500 et qu'il envoie plusieurs fois par secondes... J'ai fait un test, en 3s j'avais plus 6000 postes ! C'est monstrueux. Je comprenais mieux pourquoi ce ralentissement ^^

Les logs par device sont vide car aucun changement. et surtout, je suis obligé de les ajouter pour voir les logs (j'ai supprimé après).

Ça va être difficile de répondre à ta question... Car j'ai un peu de tout (Du Shelly, du Denkovi, Du Tasmota, etcc.) mais ce que je peux te dire c'est que j'ai des sondes de température (sur Denkovi, par exemple) qui ne sont pas utilisés, aucun script, et pourtant dans le domoticz/out je l'ai plusieurs fois en 1 seconde... idem sur des capteurs virtuel (test à vide).

Comme je n'ai pas pris le problème à temps, je n'ai pas fait attention à partir de quel version de Domoticz j'avais le problème... Mais j'ai quand même le souvenir que c'était suite à une mise à jour. Et que j'avais tout de suite pensé, mince, cette mise à jour ne doit pas être compatible avec mon plug-in sur HomeBrige. Car c'est vraiment arrivé du jour au lendemain.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Lenteur MQTT

Message par Neutrino »

Belle installation, qui devrait absorber la charge sans problème.
Mon topic out reçoit une centaine de messages par minutes ^^ le tout sur un vieux core i3.
En configuration, le Prevent Loop est à True.
C'est peut-être simplement ça. ça expliquerait le renvoie de données plusieurs fois par secondes de capteurs inactifs.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
TheRoth
Messages : 20
Inscription : 13 févr. 2019, 08:56

Re: Lenteur MQTT

Message par TheRoth »

Bonjour,

J'ai fait le test, et idem, ca PUSH des devices qui ne sont pas utilisé et qui ont à 0.
Répondre