Utilisez speedtest via docker et MQTT

Bonjour,

Un petit tuto pour mettre en place speedtest via docker et mqtt (jmqtt).
Avant toute remarque : OUI, vous pouvez utiliser le plugin speedtest. Ce tuto fera EXACTEMENT la même chose
Cette démarche vise juste à centraliser toute ma domotique autour de docker et du protocole MQTT. de manière à diminuer l’adhérence de Jeedom avec les plugins et de diminuer les pbs de migration

De mon coté, j’utilise portainer dans lequel j’ai mis en place une stack qui gère les installs de mosquitto, zigbee2mqtt, vlx2mqtt, speedtest, teslamate.
Mais ca peut aussi etre fait via docker2 sans pb.

Pour speedtest, il convient d’utiliser le docker-compose suivant :

  speedtest:
    image: moafrancky/speedtest2mqtt:latest
    container_name: speedtest2mqtt
    environment:
      - MQTT_HOST=<@IP du serveur MQTT>
      - MQTT_TOPIC=speedtest
      - MQTT_USER=<username>
      - MQTT_PASS=<mot de passe>
      - CRON=12 * * * *
    restart: unless-stopped

Puis d’importer le template jmqtt suivant (je laisse @bad l’integrer en standard dans plugin-jmqtt

Speedtest.json.txt (13,1 Ko)

Le topoic à utiliser est

speedtest/#

Et le résultat :

image

Norbert

8 « J'aime »

Salut Norbert

Pour l’ip mosquitto, tu donnes le port avec?

Antoine

Non, juste l’IP. Je pense que le port est codé en dur

Norbert

Ok, je n’ai aucune remonté du speedtest, je ne vois rien dans mqttexplorer et je trouve pas mon erreur.

version: "3"
services:
  speedtest:
    image: moafrancky/speedtest2mqtt:latest
    container_name: speedtest2mqtt
    environment:
      - MQTT_HOST=192.168.x.x
      - MQTT_TOPIC=speedtest
      - MQTT_USER=user
      - MQTT_PASS=motdepasse
      - CRON=12 * * * *
    restart: unless-stopped

Tu as bien attendu la 12 min de chaque heure pour verifier ?
(crom 12 * * * * )
user et pwd son OK ?

Cela ne fait rien au lancement ?

Nop !
Mets * * * * * pour tester

Tu peux aussi verifier les logs du docker !

Je vais rebooter. Je teste portainer pour l’occasion et le comportement est étrange. J’ai modifier le cron pour un 1 min mais le log après pull sous portainer indique toujours 12.

Antoine

Lorsque je fait une modif dans un fichier de conf, je recrée le docker et ca prend en compte le snouveaux paramétrages :

Je ne suis pas un expert, donc il y a peut-etre d’autres solutions, mais celle là fonctionne

Norbert

Fait mais sans effet, même avec un reboot de la VM. Au final, j’ai fait un remove et lancer en ssh le docker compose. Y’a bien 1 min maintenant, mais toujours rien.

Après au moins 3 min

speedtest2mqtt has been started 
starting cron (1 * * * *)

1 * * * * signifie à 21:01, 22:01, 23:01
Si tu veux toutes les minutes, c’ext * * * * *

1 « J'aime »

C’est tout bon maintenant, merci.

Ne reste pas trop longtemps en * * * * *, je me suis fait (temporairement) banir des serveurs speedtest pendant mes tests car trop de requetes

Norbert

J’ai remis au cron de ton fichier docker compose de suite.

Antoine

1 « J'aime »

Hello, j’ai essayé de mettre ça aussi en docker pour tester mais j’arrive pas a me connecter a mqtt sur la meme machine

License acceptance recorded. Continuing.
==============================================================================
Ookla collects certain data through Speedtest that may be considered
personally identifiable, such as your IP address, unique device
identifiers or location. Ookla believes it has a legitimate interest
to share this data with internet providers, hardware manufacturers and
industry regulators to help them understand and create a better and
faster internet. For further information including how the data may be
shared, where the data may be transferred and Ookla's contact details,
please see our Privacy Policy at:
       http://www.speedtest.net/privacy
==============================================================================
License acceptance recorded. Continuing.
[speedtest stdout] 2024-09-06T10:12:16+00:00 speedtest results
[speedtest stdout] 2024-09-06T10:12:16+00:00 download = 82.09 Mbps
[speedtest stdout] 2024-09-06T10:12:16+00:00 upload =  93.32 Mbps
[speedtest stdout] 2024-09-06T10:12:16+00:00 ping =  6.3 ms
[speedtest stdout] 2024-09-06T10:12:16+00:00 jitter = 0.326 ms
[speedtest stdout] 2024-09-06T10:12:16+00:00 sending results to 192.168.68.104 as clientID speedtest2mqtt with options -r using user admin
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
INFO:yacron:Job speedtest exit code 5; has stdout: true, has stderr: false; fail_reason: 'failsWhen=nonzeroReturn and retcode=5'
INFO:yacron:Job speedtest STDOUT:
2024-09-06T10:12:00+00:00 starting speedtest
2024-09-06T10:12:16+00:00 speedtest results
2024-09-06T10:12:16+00:00 download = 82.09 Mbps
2024-09-06T10:12:16+00:00 upload =  93.32 Mbps
2024-09-06T10:12:16+00:00 ping =  6.3 ms
2024-09-06T10:12:16+00:00 jitter = 0.326 ms
2024-09-06T10:12:16+00:00 sending results to 192.168.68.104 as clientID speedtest2mqtt with options -r using user admin
INFO:yacron:Cron job speedtest: reporting failure
INFO:yacron:Cron job speedtest: reporting permanent failure
INFO:yacron:Starting job speedtest
INFO:yacron:Job speedtest spawned
[speedtest stdout] 2024-09-06T11:12:00+00:00 starting speedtest
[speedtest stdout] 2024-09-06T11:12:16+00:00 speedtest results
[speedtest stdout] 2024-09-06T11:12:16+00:00 download = 80.26 Mbps
[speedtest stdout] 2024-09-06T11:12:16+00:00 upload =  93.64 Mbps
[speedtest stdout] 2024-09-06T11:12:16+00:00 ping =  6.353 ms
[speedtest stdout] 2024-09-06T11:12:16+00:00 jitter = 0.436 ms
[speedtest stdout] 2024-09-06T11:12:16+00:00 sending results to 192.168.68.104 as clientID speedtest2mqtt with options -r using user admin
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
INFO:yacron:Job speedtest exit code 5; has stdout: true, has stderr: false; fail_reason: 'failsWhen=nonzeroReturn and retcode=5'
INFO:yacron:Job speedtest STDOUT:
2024-09-06T11:12:00+00:00 starting speedtest
2024-09-06T11:12:16+00:00 speedtest results
2024-09-06T11:12:16+00:00 download = 80.26 Mbps
2024-09-06T11:12:16+00:00 upload =  93.64 Mbps
2024-09-06T11:12:16+00:00 ping =  6.353 ms
2024-09-06T11:12:16+00:00 jitter = 0.436 ms
2024-09-06T11:12:16+00:00 sending results to 192.168.68.104 as clientID speedtest2mqtt with options -r using user admin
INFO:yacron:Cron job speedtest: reporting failure
INFO:yacron:Cron job speedtest: reporting permanent failure

Bien sur , j’ai verifé user et mdp , j’ai refait mais rien n’y fait , une idée ?

version: "3"
services:
  speedtest:
    image: moafrancky/speedtest2mqtt:latest
    container_name: speedtest2mqtt
    environment:
      - MQTT_HOST=192.168.68.104
      - MQTT_TOPIC=speedtest
      - MQTT_OPTIONS=-r
      - MQTT_USER=admin
      - MQTT_PASS=xxxxxxxxxxxxxxxxx
      - CRON=12 * * * *
    restart: unless-stopped

Et avec mqttexplorer, même adresse, user et pwd, ça fonctionne ?

Si tu mets une adresse IP bidon, tu as quel message d’erreur ?

Oui tout pareil, pas de soucis avec les autres
J’ai basculé ma clé 3G hier (sms2mqtt) et cela fonctionne très bien avec les memes paramètres

Capture d'écran 2024-09-06 134100

Je l’ai recréé plusieurs fois , j’ai essayé localhost aussi mais sans résultat, j’ai toujours les memes messages

J’ai pas essayé mais je peux regarder

Oui le logs sont différents

Donc c’est mdp user qui bloque mais je viens encore de vérifier et je met toujours la meme chose
J’ai un ? dans mon mot de passe , il peut poser problème peut-etre ?

[speedtest stdout] 2024-09-06T11:50:16+00:00 sending results to 192.168.68.143 as clientID speedtest2mqtt with options -r using user admin
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
Error: Host is unreachable
INFO:yacron:Job speedtest exit code 1; has stdout: true, has stderr: false; fail_reason: 'failsWhen=nonzeroReturn and retcode=1'
INFO:yacron:Job speedtest STDOUT:

Je ne vois pas pourquoi ça poserait PB. Essaye de créé un autre compte et un autre pwd plus simple sur mqtt pour voir

C’est possible de creer 2 comptes pour l’accés à mqtt ? Je n’ai pas l’impression en docker :thinking: (Je ne souhaite pas modifier l’actuel , ou plus tard car faudra le changer partout )