Kampüsteyken telefonumdan evdeki soba rölemi açabilir miyim?
Yapay zekâ tarafından English dilinden çevrildi ·
İlk gönderim, yanlış yerde açtıysam özür dilerim. Evde, odamdaki küçük yağlı radyatörü açıp kapatan bir röle kartına bağlı bir Pi Zero 2 W’m var; röle GPIO17’de. (Evet, bu iş için uygun gerçek bir röle, babam kontrol etti.) Şu an paho-mqtt ile her dakika oda sıcaklığını Hermetry’ye gönderiyor.İstediğim şu: saat 21.00’de kütüphaneden çıktığımda, eve döndüğümde oda ısınmış olsun diye telefonumdan radyatörü açmak. Hermetry uygulamasını buldum ama bildirimler için gibi duruyor. Cihazları da açıp kapatabiliyor mu? Yoksa router’da bir port açıp Pi üzerinde bir web sayfası mı çalıştırmam gerekiyor? Bunu güvenli şekilde nasıl yapacağımı pek bilmiyorum.
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.
Yapay zekâ tarafından English dilinden çevrildi ·
Router üzerinde port yönlendirme çalışıyor, bir keresinde bir kamera için bunu yapmıştım. Sadece yüksek bir port seç.
Port forwarding on the router works, I did that for a camera once. Just pick a high port.
Yapay zekâ tarafından English dilinden çevrildi ·
Lütfen bir Pi’yi “yüksek port” ile internete açmayın. Pi’niz zaten brokera giden bir bağlantıyı açık tutuyor, bu bağlantı üzerinden veri gönderebilirsiniz.
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.
Yapay zekâ tarafından English dilinden çevrildi ·
Yani bulut ona geri komut gönderebiliyor mu? Peki telefon bunda nasıl devreye giriyor?
oh so the cloud can talk back to it? How does the phone come into it though?
Yapay zekâ tarafından English dilinden çevrildi ·
Dokümanlara göre mobil uygulama bildirimler ve onaylar içindir. Anahtarlama için telefon tarayıcısındaki web konsolu sorunsuz çalışıyor; bahçe pompamı da böyle çalıştırıyorum.Kurulum adımları:
- Pi’nin cihaz profilinde, Commands sekmesinde bir komut ekleyin, örneğin yöntem
heater.set, tek bir Evet/Hayır parametresion, katman Basic. Kartlar yalnızca Basic katmanlı komutları gönderir. - Bir pano oluşturun, bir Switch kontrolü ekleyin, eylem olarak Run a command seçin, Pi’yi ve
heater.set‘i seçin, mevcut durumu Pi’nin bildirdiği bir anahtara bağlayın (örneğin 0/1 değerliheater_on). - Pi üzerinde:
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)
Hiçbir port açılmıyor. Kartın sayfasını telefonunuzun ana ekranına yer imi olarak ekleyin, neredeyse bir uygulama gibi çalışır. Uyarılar için (oda çok soğuk vb.) uygulama telefonunuza anlık bildirim gönderir; alternatif olarak e-posta veya bağlı bir sohbet uygulaması kullanabilirsiniz.
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.
Yapay zekâ tarafından English dilinden çevrildi ·
çalıştı!!! Otobüsten test ettim. Beni takılan bir şey: Komutu önce Privileged olarak oluşturdum, çünkü şebeke gerilimini anahtarlıyor ve karttaki anahtar komutun karttan gönderilemediğini söyledi. Basic olarak değiştirdim ve geçti. Ayrıca artık on_connect içinde abone oluyorum, sizin yazdığınız gibi; önceden Pi’nin Wi-Fi’si kısa süreliğine kesildikten sonra çalışmayı bırakıyordu.
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.
Yapay zekâ tarafından English dilinden çevrildi ·
Haklısın, giden bağlantı daha temiz. Port yönlendirme önerimi geri alıyorum.
Fair enough, outbound is cleaner. Taking my port forwarding advice back.
- Bu konuyu yanıtlamak için giriş yapmış olmalısınız.
Sohbete katılın
Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

