Puis-je allumer le relais de mon radiateur à la maison depuis mon téléphone pendant que je suis sur le campus ?
Traduit de English par IA ·
Premier message, désolé si ce n’est pas le bon endroit. J’ai un Pi Zero 2 W à la maison avec une carte relais sur GPIO17 qui commande un petit radiateur à huile dans ma chambre (oui, c’est un vrai relais prévu pour cet usage, mon père l’a vérifié). Il envoie déjà la température de la pièce à Hermetry toutes les minutes avec paho-mqtt.Ce que je veux : quand je quitte la bibliothèque à 21 h, allumer le radiateur depuis mon téléphone pour que la pièce soit chaude quand je rentre. J’ai trouvé l’application Hermetry, mais elle semble servir aux notifications. Peut-elle commander des appareils ? Sinon, dois-je ouvrir un port sur notre routeur et faire tourner une page web sur le Pi ? Je ne sais pas trop comment faire cela en toute sécurité.
first post, sorry if this is the wrong place. I have a Pi Zero 2 W at home with a relay board on GPIO17 that switches a little oil heater in my room (yes it’s a proper relay rated for it, my dad checked). It already sends room temperature to Hermetry every minute with paho-mqtt.
What I want: when I leave the library at 9 pm, turn the heater on from my phone so the room is warm when I get back. I found the Hermetry app but it looks like it’s for notifications. Can it switch things? Or do I need to open a port on our router and run a web page on the Pi? I don’t really know how to do that safely.
Traduit de English par IA ·
La redirection de port sur le routeur fonctionne, je l’ai déjà fait une fois pour une caméra. Choisis simplement un port élevé.
Port forwarding on the router works, I did that for a camera once. Just pick a high port.
Traduit de English par IA ·
Merci de ne pas exposer un Pi à Internet avec un « port élevé ». Votre Pi maintient déjà une connexion sortante vers le broker, vous pouvez envoyer des données par ce biais.
Please don’t expose a Pi to the internet with a « high port ». Your Pi already keeps an outbound connection to the broker, you can send stuff down that.
Traduit de English par IA ·
Ah, donc le cloud peut répondre à l’appareil ? Mais comment le téléphone intervient-il dans tout ça ?
oh so the cloud can talk back to it? How does the phone come into it though?
Traduit de English par IA ·
D’après la documentation, l’application mobile sert aux notifications et aux validations. Pour la commande, la console web dans le navigateur du téléphone fonctionne très bien : c’est ainsi que je pilote la pompe de mon jardin partagé.Mise en place :
- Dans le profil d’appareil du Pi, onglet Commands, ajoutez une commande, par exemple la méthode
heater.set, avec un paramètre Oui/Nonon, niveau Basic. Les cartes n’envoient que des commandes de niveau Basic. - Créez un tableau de bord, ajoutez un contrôle Switch, action Run a command, choisissez le Pi et
heater.set, puis liez l’état actuel à une clé que le Pi remonte (par exempleheater_onen 0/1). - Sur le Pi :
def on_connect(c, u, f, rc):
c.subscribe("v1/rpc/req/+", qos=1)
def on_message(c, u, msg):
req_id = msg.topic.rsplit("/", 1)[1]
body = json.loads(msg.payload)
if body.get("method") == "heater.set":
on = bool(body["params"]["on"])
GPIO.output(17, on)
c.publish("v1/telemetry", json.dumps({"heater_on": int(on)}), qos=1)
c.publish(f"v1/rpc/res/{req_id}", json.dumps({"ok": True}), qos=1)
Aucun port n’est ouvert. Ajoutez la carte à l’écran d’accueil de votre téléphone en signet, elle fonctionne pratiquement comme une application. Pour les alertes (pièce trop froide, etc.), l’application envoie des notifications push sur le téléphone, ou vous pouvez utiliser l’e-mail ou une application de messagerie reliée.
From what the docs say, the mobile app is for notifications and approvals. For the switch, the web console in the phone browser works fine, that’s how I run my allotment pump.
What to set up:
- On the Pi’s device profile, Commands tab, add a command, e.g. method
heater.set, one Yes/no parameteron, tier Basic. Boards only send Basic tier commands. - Make a dashboard, add a Switch control, action Run a command, pick the Pi and
heater.set, and bind the current state to a key the Pi reports (sayheater_onas 0/1). - On the Pi:
def on_connect(c, u, f, rc):
c.subscribe("v1/rpc/req/+", qos=1)
def on_message(c, u, msg):
req_id = msg.topic.rsplit("/", 1)[1]
body = json.loads(msg.payload)
if body.get("method") == "heater.set":
on = bool(body["params"]["on"])
GPIO.output(17, on)
c.publish("v1/telemetry", json.dumps({"heater_on": int(on)}), qos=1)
c.publish(f"v1/rpc/res/{req_id}", json.dumps({"ok": True}), qos=1)
No ports opened. Bookmark the board on your phone’s home screen and it’s basically an app. For alerts (room too cold etc.) the app gives you push on the phone, or use e-mail or a linked chat app.
Traduit de English par IA ·
ça marche !!! testé depuis le bus. Un point qui m’a piégé : j’ai d’abord créé la commande en Privileged parce qu’elle commute le secteur, et l’interrupteur de la carte indiquait qu’elle ne pouvait pas être envoyée depuis une carte. Je l’ai passée en Basic et ça a fonctionné. Sinon, je m’abonne maintenant dans on_connect comme tu l’as écrit ; avant, ça cessait de fonctionner après une coupure du Wi-Fi du Pi.
it works!!! tested from the bus. One thing that tripped me: I first made the command Privileged because it switches mains and the switch on the board just said it can’t be sent from a board. Changed it to Basic and it went through. Also I subscribe in on_connect now like you wrote, before it stopped working after the Pi’s Wi-Fi blipped.
Traduit de English par IA ·
Juste, la connexion sortante est plus propre. Je retire mon conseil sur la redirection de port.
Fair enough, outbound is cleaner. Taking my port forwarding advice back.
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

