Hjälp med status uppdatering MQTT Android -> Raspberry PI -> Arduino

Permalänk
Medlem

Hjälp med status uppdatering MQTT Android -> Raspberry PI -> Arduino

Hej!

Jag håller på ett projekt hemma för lampstyrning.
Det funkar som så att jag kan tända och släcka lampor med knappar som är kopplade till respektive Arduino, sen har jag även gjort en app till min telefon som jag kan tända och släcka med.

Så här ser mitt system ut

Raspberry Pi agerar som broker, finns även en client här som skickar ut kommandon via usb till Arduino för att tända och släcka.
På varje Arduino finns det även en tryckknappslåda för att tända/släcka om inte telefonen är ansluten.

(OBS. Har ritat snabbt i paint, hade inte så jag kan visa upp bilder på appen på denna dator.)

Så här ser första sidan ut på appen (anslutning till mqtt-broker)

Så här ser det ut när jag har anslutit

Så nu till min fråga jag har:
Hur gör jag lättast för att få reda på status på lamporna när jag ansluter till min broker?
T.ex. om jag har tänt en lampa när jag inte är ansluten med telefonen?
Någon som har en bra idé hur jag ska lägga upp min kod så att jag kan skicka en fråga till min broker och få svar?

Ursäkta för ett rörigt inlägg, ställ gärna frågor.

Mvh

Visa signatur

|CPU: Intel Core i7 2600k | GPU: ASUS GeForce GTX680 |Moderkort: Asus Maximus IV Extreme-B3 | Chassi: Fractal Design XL | PSU: Corsair AX850 | Minne: Corsair Dominator GT 2133MHz | Hårddisk: 1tb Western Digital Caviar Black, 1tb Western Digital Caviar Blue |

Permalänk
Medlem

På moln tjänster som Aws och azure finns det någon som kallas Device shadow respektive twin på azure.
Det är som en spegling av enhetens status och inställningar i ditt fall ”lightstatus:On”

Kolla om den mqtt systemet du använder stödjer det. Skulle man kunna skapa egen lösning med lokal databas eller json object i en fil. Och där lägga in status. Det kan du då lägga online in valfri tjänst tex.

Om det är det du menar attt kunna se status utan att vara kopplad i hemmet?

Skickades från m.sweclockers.com

Visa signatur

Intel Core i5 2500k @ 4.3 GHz| Asus Geforce GTX580 DUII OC 930MHz | Asus P8P67 LE | 4GB RAM | Win 8.

Permalänk
Medlem
Skrivet av C20N31:

Så nu till min fråga jag har:
Hur gör jag lättast för att få reda på status på lamporna när jag ansluter till min broker?
T.ex. om jag har tänt en lampa när jag inte är ansluten med telefonen?
Någon som har en bra idé hur jag ska lägga upp min kod så att jag kan skicka en fråga till min broker och få svar?

Ursäkta för ett rörigt inlägg, ställ gärna frågor.

Mvh

Det du söker kallas för "retention" och är inbyggt i mqtt-protokollet. Se tex här : https://www.hivemq.com/blog/mqtt-essentials-part-8-retained-m...

Skickades från m.sweclockers.com

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk
Medlem

@chaval: Nej, jag var inte ute efter att se status när jag inte är kopplad till hemmet, utan att så fort jag kopplar upp mig så uppdateras all status till nuvarande.

Men det kanske går att göra så, så fort en status uppdateras, så uppdateras även en databas/json-fil på min Raspberry.
Men då till nästa bekymmer, har hört att sd-kort inte klarar av jätte många skrivningar till sig, vet inte hur livslängden är på dom.
Något du har erfarenhet om?

@zarkov: Ja, det får jag kolla upp.
Däremot funkar det inte med så jag har gjort nu, för nu har gjort så här när jag subscribe'ar: "get/light/#"
Så om jag förstår det så sparas bara det senaste meddelandet? Så om jag tänder light1 först och sedan light2, så får jag bara
status från light2?

Jag får helt enkelt subsribe'a såhär "get/light/1", "get/light/2" osv?

Tack för input båda två!

Visa signatur

|CPU: Intel Core i7 2600k | GPU: ASUS GeForce GTX680 |Moderkort: Asus Maximus IV Extreme-B3 | Chassi: Fractal Design XL | PSU: Corsair AX850 | Minne: Corsair Dominator GT 2133MHz | Hårddisk: 1tb Western Digital Caviar Black, 1tb Western Digital Caviar Blue |