jMQTT nouveau démon en BETA

[2021-04-28 14:22:06][DEBUG] : Lanzamiento de :/var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=jMQTT function=pre_update callInstallFunction=1
[2021-04-28 14:22:11][INFO] : Début d'activation du plugin
[2021-04-28 14:22:12][INFO] : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2021-04-28 14:22:12][DEBUG] : Lanzamiento de :/var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=jMQTT function=update callInstallFunction=1
[2021-04-28 14:22:16][INFO] : démarre le daemon
[2021-04-28 14:22:16][ERROR] : Error en la función daemon_start del plugin :Le port du démon python (55666) est déjà utilisé par le pid 28933 : python3 /var/www/html/plugins/jMQTT/resources/jmqttd/jmqttd.py --plugin jMQTT --loglevel debug --socketport 55666 --apikey XXXXXXXXXXXXXXXXXXX --pid /tmp/jeedom/jMQTT/jmqttd.py.pid

@pirracas77 pour le moment, tu doit faire

kill -9 28933

J’ai remarqué le problème lorsque je désactive le plugin alors que le démon tourne.
Ca crée ce process orphelin

Maintenant oui.

Je remarque également une augmentation considérable de la consommation CPU à partir du moment de l’installation.

a des moments spécifiques très élevés

Idem chez moi.

Il y a donc un autre problème, Le nouveau daemon n’utilise plus de jeeCron.
Ce doit être un reste du précédent daemon. Il faut le supprimer :
image

image

Trouver la ligne correspondante à jMQTT et supprimer la tâche :

Je pense que pour le passage à la version new_daemon, il fallait d’abord désactiver le plugin avant. Je regarde aussi

Supprimez la tâche mais elle recommence d’elle-même.

Quelle branche est installée? master, beta ou new_daemon?

new_daemon, mais je suis retourné au « master »

Chez moi c’est bien jmqttd.php qui consomme et non l’ancien jeecron.
J’ai redémarré le Raspberry pi mais j’ai le même problème…

Niveau environnement, tu as quoi?
Rpi ou machine physique ou VM?
Debian quelle version?
PHP quelle version?

De mon coté, niveau CPU il ne consomme vraiment rien.
D’autres personnes ont-elle le problème?

C’est un PI 4 sous Debian Buster en PHP 7.3.27

root@raspberrypi:~# php -v
PHP 7.3.27-1~deb10u1 (cli) (built: Feb 13 2021 16:31:40) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.27, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.27-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies
root@raspberrypi:~# cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
root@raspberrypi:~# uname -a
Linux raspberrypi 5.10.32-v7l+ #1413 SMP Tue Apr 27 14:43:13 BST 2021 armv7l GNU/Linux

Edit :
Je viens de tester en désactivant tous mes équipements, la charge cpu retombe sous les 1%.
Quand je réactive mon plus gros équipement (~200 commandes info) ça remonte à plus de 20% !

  1. Quel est le topic souscrit par cet équipement : image
  2. Si tu te connectes avec MQTT Explorer et que tu regardes le topic souscrit par ton équipement, Y a-t-il beaucoup de publication dessus?
  3. Avec le log en mode débug, vois-tu beaucoup d’activité sur le log jMQTT concernant cet eqpt?

Sais-tu quelles étaient les consommations avec l’ancien démon?

Le topic est homie/zehnderq350/#

Il y a une 30aine de publications par seconde.

Oui du coup, une 30aine par seconde.

Sais-tu quelles étaient les consommations avec l’ancien démon?
Pourrais-tu tester en réduisant le niveau de log aussi?

Je n’avais pas noté de surconsommation particulière (juste une fuite mémoire due au client mqtt en php).
Tous mes logs sont désactivés.

C’est peut-être pas un bug, on y peut peut-être rien.

Je ne sais pas dans quelle mesure on peut optimiser le code, c’est vrai que si on boucle des dizaines de fois par seconde tous les eqlogics, ça peut vite consommer beaucoup !

Parmis les 30 par seconde, y a-t-il des JSON?
Quel est la longueur des payload à peu près ?
Le but est de pouvoir reproduire cette charge et peut-être de pouvoir optimiser le code.
je n’ai pas encore touché à la logique de traitement des messages MQTT

Non aucun JSON et les payloads sont très court, 1 à 20 caractères.

user@raspberrypi:~ $ mosquitto_sub -h localhost -t homie/#
ready
4.0.0
ZehnderQ350
linux
stats,firmware,meta
60
107784.00025177002
29/04/2021 18:55:17
127.0.0.1
00:00:00:00:00:00
1
Fan Mode
true
true
enum
away,1,2,3
1
off
Bypass Mode
true
true
enum
auto,on,off
0
Bypass On
true
true
integer
0:4294967295
465923
Bypass Off
true
true
integer
0:4294967295
warm
Temperature Profile
true
true
enum
normal,cool,warm
manual
Operating Mode
true
true
enum
auto,manual
true
Manual Mode
true
true
boolean
Switch
balance
Ventilation Mode
true
true
enum
balance,supply only,extract only,off
0
Supply Fan Off
true
true
integer
0:4294967295
0
Exhaust Fan Off
true
true
integer
0:4294967295
0
Activate Scheduled Boost Mode
true
true
integer
0:4294967295
0
Activate Scheduled Away Mode
true
true
integer
0:4294967295
11.0
Heating Limit RMOT
true
true
°C
float
0:20
20.0
Cooling Limit RMOT
true
true
°C
float
20:40
off
Temperature Passive
true
true
enum
off,auto only,on
off
Humidity Comfort
true
true
enum
off,auto only,on
auto only
Humidity Protection
true
true
enum
off,auto only,on
0.0
Flow Unbalance
true
true
float
-15:15
60
Flow Away Speed
true
true
integer
0:350
120
Flow Low Speed
true
true
integer
60:350
250
Flow Medium Speed
true
true
integer
60:350
330
Flow High Speed
true
true
integer
60:350
Controls
controls
fan-mode,bypass-mode,bypass-on,bypass-off,temperature-profile,operating-mode,manual-mode,vent-mode,supply-fan-off,exhaust-fan-off,boost-mode,away-mode,heating-rmot,cooling-rmot,temperature-passive,humidity-comfort,humidity-protection,unbalance,flow-away,flow-low,flow-medium,flow-high
homie4
0.3.6
sensors,controls
Sensors
sensors
temperature-outdoor,temperature-supply,temperature-extract,temperature-exhaust,humidity-extract,humidity-exhaust,humidity-outdoor,humidity-supply,fan-exhaust-duty,fan-exhaust-duty-low-rate,fan-supply-duty,fan-supply-duty-low-rate,fan-exhaust-flow,fan-exhaust-flow-low-rate,fan-supply-flow,fan-supply-flow-low-rate,fan-exhaust-speed,fan-exhaust-speed-low-rate,fan-supply-speed,fan-supply-speed-low-rate,mode-end-date,mode-timer,bypass-end-date,bypass-timer,exhaust-date,exhaust-timer,supply-date,supply-timer,current-power,current-power-low-rate,energy-ytd,energy-total,preheater-current-power,preheater-current-power-low-rate,preheater-energy-ytd,preheater-energy-total,avoided-heating-current-power,avoided-heating-current-power-low-rate,avoided-heating-energy-ytd,avoided-heating-energy-total,avoided-cooling-current-power,avoided-cooling-current-power-low-rate,avoided-cooling-energy-ytd,avoided-cooling-energy-total,filter-replace,current-rmot,bypass-state,heating-season,cooling-season,current-mode
13.1
Temperature Outdoor
false
true
°C
float
23.2
Temperature Supply
false
true
°C
float
23.2
Temperature Extract
false
true
°C
float
14.6
Temperature Exhaust
false
true
°C
float
40
Humidity Extract
false
true
%
float
62
Humidity Exhaust
false
true
%
float
52
Humidity Outdoor
false
true
%
float
28
Humidity Supply
false
true
%
float
26
Exhaust Fan Duty
false
true
%
float
26
Exhaust Fan Duty
false
true
%
float
30
Supply Fan Duty
false
true
%
float
30
Supply Fan Duty
false
true
%
float
120
Exhaust Fan Flow
false
true
m³/h
float
120
Exhaust Fan Flow
false
true
m³/h
float
121
Supply Fan Flow
false
true
m³/h
float
120
Supply Fan Flow
false
true
m³/h
float
1048
Exhaust Fan Speed
false
true
rpm
float
1062
Exhaust Fan Speed
false
true
rpm
float
1199
Supply Fan Speed
false
true
rpm
float
1192
Supply Fan Speed
false
true
rpm
float
2021-04-29T15:38:17.0
Operating Mode Change Date
false
true
string
%Y-%m-%d %H:%M:%S.%f
0
Operating Mode Remaining Time
false
true
s
integer
2021-05-05T04:21:28.0
Bypass Manual Mode End Date
false
true
string
%Y-%m-%d %H:%M:%S.%f
465923
Bypass Manual Mode Remaining Time
false
true
s
integer
2021-04-29T15:38:17.0
Exhaust Fan Start Date
false
true
string
%Y-%m-%d %H:%M:%S.%f
0
Exhaust Fan Time to Start
false
true
s
integer
2021-04-29T15:38:17.0
Supply Fan Start Date
false
true
string
%Y-%m-%d %H:%M:%S.%f
0
Supply Fan Time to Start
false
true
s
integer
15
Current Power
false
true
W
float
15
Current Power
false
true
W
float
210
Energy YTD
false
true
kWh
float
210
Energy Total
false
true
kWh
float
0
Preheater Current Power
false
true
W
float
0
Preheater Current Power
false
true
W
float
6
Preheater Energy YTD
false
true
kWh
float
6
Preheater Energy Total
false
true
kWh
float
422
Avoided Heating Current Power
false
true
W
float
422
Avoided Heating Current Power
false
true
W
float
1396
Avoided Heating Energy YTD
false
true
kWh
float
3740
Avoided Heating Energy Total
false
true
kWh
float
0
Avoided Cooling Current Power
false
true
W
float
0
Avoided Cooling Current Power
false
true
W
float
0
Avoided Cooling Energy YTD
false
true
kWh
float
97
Avoided Cooling Energy Total
false
true
kWh
float
37
Filter replace
false
true
integer
13.0
Running Mean Outdoor Temperature
false
true
°C
float
0
Bypass state
false
true
%
float
INACTIVE
Heating Season
false
true
enum
INACTIVE,ACTIVE
INACTIVE
Cooling Season
false
true
enum
INACTIVE,ACTIVE
manual
Current Mode
false
true
enum
auto,temporary manual,manual,boost,scheduled away
true
Stay connected to Comfoconnect
true
true
boolean
Switch
Publish Homie Devices
true
true
boolean
Switch
ComfoAirQ Gateway Controls
controls
stayconnected,reload
4.0.0
ZehnderQ350Gateway
linux
stats,firmware,meta
60
107783.9263036251
29/04/2021 18:55:17
127.0.0.1
00:00:00:00:00:00
homie4
0.3.6
controls,sensors
ComfoAirQ Gateway Sensors
sensors
state
READY
Connection state
false
true
enum
DISCONNECTED,READY,SLEEPING,ERROR,PROBLEM
ready
29
1045
1045
2021-05-05T04:21:28.0
465922
0
465922
16
16
119
1043
2021-05-05T04:21:28.0
465921
0
465921
15
15
1041
2021-05-05T04:21:28.0
465920
0
465920
16
16
1040
1200
2021-05-05T04:21:28.0
465919
0
465919
423
15
15
27
27
1199
2021-05-05T04:21:28.0
465918
0
465918
422
16
16
1039
ready
107837.92645025253
29/04/2021 18:56:11
107838.00022530556
29/04/2021 18:56:11
READY
true
11.0
1200
2021-05-05T04:21:28.0
465917
0
465917
15
15
423
20.0
off
off
auto only
0.0
60
120
250
330
1199
2021-05-05T04:21:28.0
465916
0
465916
424
16
16
1193
2021-05-05T04:21:28.0
465915
0
465915
422
15
15
1038
118
118
120
1185
2021-05-05T04:21:28.0
465914
0
465914
419
16
16
1044
119
119
1179
2021-05-05T04:21:28.0
465913
0
465913
415
15
15
1052
120
120
118
118
1174
1174
2021-05-05T04:21:27.0
465911
0
465911
412
16
16
1058
121
1171
2021-05-05T04:21:27.0
465910
0
465910
410
15
15
1062
1062
1169
2021-05-05T04:21:27.0
465909
0
465909
16
16
26
26
1065
122
122
117
2021-05-05T04:21:27.0
465908
0
465908
409
409
15
15
31
31
1067
1174
2021-05-05T04:21:27.0
465907
0
465907
16
16
1062
1182
118
2021-05-05T04:21:27.0
465906
0
465906
15
15
412
1055
1188
121
119
2021-05-05T04:21:27.0
465905
0
465905
16
16
415
1050
1192
1192
120
120
120
120
2021-05-05T04:21:27.0
465904
0
465904
15
15
417
1046
1046
1195
2021-05-05T04:21:27.0

Pensez-vous que la branche new_daemon est prête à passer en beta?

J’ai fait pas mal de recherche sur la consommation.
Sur un RPi2, il faut 33msec pour traiter le message.
En descendant successivement, j’ai trouvé 15msec passées sur la méthode event::adds (Jeedom Core).
Elle recupère un cache d’evenements (quasi 40ko) le passe dans json_decode (7msec) puis le passe dans un json_encode (encore 7msec).

Donc au rythme de 30msg/sec, en monothread, Sur un RPi2, on est au max.
La seule chose que je peux proposer, c’est du multithreading. (Les messages doivent être traité dans l’ordre…)
La conclusion est donc que la charge provient du fonctionnement de Jeedom Core… Elle est donc normale.

1 « J'aime »

Je confirme.
Les performances sont les mêmes qu’avec l’ancien daemon.

3 « J'aime »