Kann ich das Heizungsrelais zu Hause vom Handy aus schalten, während ich auf dem Campus bin?
Von English mit KI übersetzt ·
Erster Beitrag, entschuldigt, falls ich hier falsch bin. Ich habe einen Pi Zero 2 W zu Hause mit einem Relaisboard an GPIO17, das einen kleinen Ölradiator in meinem Zimmer schaltet (ja, es ist ein richtiges Relais, das dafür ausgelegt ist, mein Vater hat es geprüft). Er sendet bereits jede Minute die Raumtemperatur an Hermetry mit paho-mqtt.Was ich möchte: Wenn ich um 21 Uhr die Bibliothek verlasse, soll ich den Heizkörper per Handy einschalten, damit es im Zimmer warm ist, wenn ich zurückkomme. Ich habe die Hermetry-App gefunden, aber sie scheint nur für Benachrichtigungen gedacht zu sein. Kann sie auch Geräte schalten? Oder muss ich an unserem Router einen Port öffnen und auf dem Pi eine Webseite laufen lassen? Ich weiß nicht richtig, wie ich das sicher mache.
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.
Von English mit KI übersetzt ·
Portweiterleitung am Router funktioniert, das habe ich einmal für eine Kamera gemacht. Wähl einfach einen hohen Port.
Port forwarding on the router works, I did that for a camera once. Just pick a high port.
Von English mit KI übersetzt ·
Bitte setzen Sie einen Pi nicht mit einem „hohen Port“ dem Internet aus. Ihr Pi unterhält bereits eine ausgehende Verbindung zum Broker, darüber können Sie Daten senden.
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.
Von English mit KI übersetzt ·
Ach so, die Cloud kann also zurücksprechen? Wie kommt das Handy dabei aber ins Spiel?
oh so the cloud can talk back to it? How does the phone come into it though?
Von English mit KI übersetzt ·
Laut Dokumentation ist die mobile App für Benachrichtigungen und Freigaben gedacht. Zum Schalten funktioniert die Web-Konsole im Handy-Browser gut, so steuere ich auch meine Parzellenpumpe.Einrichtung:
- Im Geräteprofil des Pi, Reiter Commands, einen Befehl hinzufügen, z. B. Methode
heater.set, ein Ja/Nein-Parameteron, Tier Basic. Boards senden nur Befehle der Stufe Basic. - Ein Dashboard erstellen, ein Switch-Steuerelement hinzufügen, Aktion Run a command, den Pi und
heater.setauswählen und den aktuellen Zustand an einen Schlüssel binden, den der Pi meldet (z. B.heater_onals 0/1). - Auf dem 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)
Es werden keine Ports geöffnet. Lege das Board als Lesezeichen auf dem Startbildschirm deines Handys ab, dann verhält es sich praktisch wie eine App. Für Warnungen (Raum zu kalt usw.) bietet die App Push-Benachrichtigungen auf dem Handy, alternativ kannst du E-Mail oder eine verknüpfte Chat-App nutzen.
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.
Von English mit KI übersetzt ·
es funktioniert!!! Vom Bus aus getestet. Eine Sache hat mich aufgehalten: Ich habe den Befehl zuerst als Privileged erstellt, weil er Netzspannung schaltet, und der Schalter auf dem Board meldete nur, dass er nicht von einem Board gesendet werden kann. Auf Basic umgestellt, dann ging es durch. Außerdem abonniere ich jetzt in on_connect, wie du geschrieben hast; vorher hat es aufgehört zu funktionieren, nachdem das WLAN des Pi kurz ausgefallen war.
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.
Von English mit KI übersetzt ·
Fair genug, ausgehend ist sauberer. Meinen Tipp zur Portweiterleitung nehme ich zurück.
Fair enough, outbound is cleaner. Taking my port forwarding advice back.
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

