Raspberry Pi styr nexa uttag - lagra status på/av?

Permalänk
Medlem

Raspberry Pi styr nexa uttag - lagra status på/av?

Bygger på en lösning för att styra belysning och lite annat i hemmet genom en webbsida.
Fungerar fint, men jag skulle vilja lagra statusen på varje uttag så man ser på webbsidan om den är på eller av.

Är det någon som har ett bra tips på hur jag skulle kunna göra det? Första tanken var databas och spara där, men det känns overkill och borde gå att lösa på något smartare mindre resurskrävande sätt?

I min labbmiljö med dioder fungerar det fint, eftersom jag kan läsa statusen på GPIO, men när jag kopplar in sändaren så kommer den ju inte kunna läsa av vilket läge nexa uttaget är i.

Permalänk
Medlem

Varför inte en databas egentligen, de är ju utmärkta för ändamålet. Finns flera olika databaser beroende på ändamål och systemresurser.

Ett databasfritt alternativ vore att lagra statusen i en xml-fil. Finns fina funktioner för att hantera såna inbyggda i programspråken.

Om det är på Raspberryns minneskort du ska lagra statusen så är kanske insert/append bättre än update eftersom det finns risk att du skriver sönder minneskortet på ett och samma ställe, men append/insert skulle tvinga andra delar att användas. Alternativet är att lagra på en HDD/SSD som är mindre känsliga för sådant eller har skydd mot att en sektor skrivs sönder.

Edit: Ett tredje alternativ skulle vara att spara filen på en ramdisk/tmpfs. Enda nackdelen där är att statusen försvinner vid ett strömavbrott/reboot men det kanske är obetydligt i detta fall.

Fler alternativ
Permalänk
Medlem

Du får lagra statusen i webb appen eftersom det inte går att läsa av statusen på uttagen. Är det RFLink som du använder? Jag håller på med ett likadant projekt.

Permalänk
Medlem

Jag skulle ändå säga databas, och då specifikt SQLite[1], som i princip är gjord för ditt användningsområde och ett mycket bra verktyg att ha i bakfickan. Det är bara ett lib och en fil, ingen server/client-modell.

Om du ändå inte vill ha en SQL-DB, så beror det ju lite på vad du kör för webserver antar jag.
Antingen så implementerar du en egen flatfile-db, eller hittar något lib för det, eller så spar du det i minnet.
Förutsatt att det inte är superviktigt att den har koll mellan omstarterna eller kan ta reda på aktuell status vid uppstart så är ju minnet lättast. Det funkar ju tyvärr inte om du kör PHP som inte har något vettigt state.

Ge oss lite mer juicy info!

[1]https://www.sqlite.org/

Visa signatur

Brass knuckles and a 2x4

Permalänk
Medlem
Skrivet av MarkSix:

Du får lagra statusen i webb appen eftersom det inte går att läsa av statusen på uttagen. Är det RFLink som du använder? Jag håller på med ett likadant projekt.

Varför ska det då lagras alls? Om knappen ändrar läge kommer lagrade datan vara ur synk direkt och ingen chans att återställas automatiskt...

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av medbor:

Varför ska det då lagras alls? Om knappen ändrar läge kommer lagrade datan vara ur synk direkt och ingen chans att återställas automatiskt...

Skickades från m.sweclockers.com

förstår inte vad du menar.

Permalänk
Medlem

Ok! SQL får det bli, kanske inte så tokigt och kan säkert få användning av den på fler områden senare.

Skrivet av MarkSix:

Du får lagra statusen i webb appen eftersom det inte går att läsa av statusen på uttagen. Är det RFLink som du använder? Jag håller på med ett likadant projekt.

Nej jag köpte en sån här: https://www.electrokit.com/produkt/rf-link-433mhz-sandare-och.... Just nu sitter det på en testbräda men ska fixa ett kretskort och någon fin inkapsling till det hela sen när det är klart. Förvånansvärt bra räckvidd på den utan att ha byggt till någon extra antenn, går mellan våningarna i huset till och med. Men kommer antagligen behöva fixa en antenn sen när den ska byggas in i en låda.

Kommer kika på andra system sen med Home Assistant och antagligen Z-wave för att kunna göra mer avancerade saker. Det här fick bli en början då jag hade både en Pi och Nexa uttag liggandes som inte användes längre då kontrollen gått sönder.

Har i princip gått efter den här guiden med lite modifieringar: https://smartaguider.se/guide-styr-fjarrstrombrytare-med-rasp.... Sen bygger jag en webbsida nu för att styra det hela och det ska även styras på solens upp och nedgång.

Permalänk
Medlem
Skrivet av medbor:

Varför ska det då lagras alls? Om knappen ändrar läge kommer lagrade datan vara ur synk direkt och ingen chans att återställas automatiskt...

Skickades från m.sweclockers.com

Hur menar du? Jag vill se på webbsidan om lampan är på eller ej, alltså vilken status den fick senast någon tryckte på knappen eller när den schemaläggningen slår av eller på. Så jag kan ligga i sängen och se så allt är släckt t.ex. eller slå på något när jag inte är hemma.

Permalänk
Medlem
Skrivet av MarkSix:

förstår inte vad du menar.

Jag kanske missar något men om man inte kan känna av vilken status brytaren har och läget går att ändra på andra sätt, då kan du inte vara säker att ditt sparade värde är rätt. Switchen kan vara ’on’ och du sparar det, någon ändrar switchen utan att uppdatera värdet, då kommer program som kolla värdet tro att den är på när den är av... borde kunna hända efter strömbortfall eller liknande?

Som sagt jag missar säkert något uppenbart...

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av raubt1er:

Ok! SQL får det bli, kanske inte så tokigt och kan säkert få användning av den på fler områden senare.

Nej jag köpte en sån här: https://www.electrokit.com/produkt/rf-link-433mhz-sandare-och.... Just nu sitter det på en testbräda men ska fixa ett kretskort och någon fin inkapsling till det hela sen när det är klart. Förvånansvärt bra räckvidd på den utan att ha byggt till någon extra antenn, går mellan våningarna i huset till och med. Men kommer antagligen behöva fixa en antenn sen när den ska byggas in i en låda.

Kommer kika på andra system sen med Home Assistant och antagligen Z-wave för att kunna göra mer avancerade saker. Det här fick bli en början då jag hade både en Pi och Nexa uttag liggandes som inte användes längre då kontrollen gått sönder.

Har i princip gått efter den här guiden med lite modifieringar: https://smartaguider.se/guide-styr-fjarrstrombrytare-med-rasp.... Sen bygger jag en webbsida nu för att styra det hela och det ska även styras på solens upp och nedgång.

OK nice. Jag körde på RFlink och är väl i princip färdig med min första version. Jag kör med direkt och timer styrning och webb appen är responsiv så jag kan köra appen i mobilen också.

Permalänk
Medlem
Skrivet av medbor:

Jag kanske missar något men om man inte kan känna av vilken status brytaren har och läget går att ändra på andra sätt, då kan du inte vara säker att ditt sparade värde är rätt. Switchen kan vara ’on’ och du sparar det, någon ändrar switchen utan att uppdatera värdet, då kommer program som kolla värdet tro att den är på när den är av... borde kunna hända efter strömbortfall eller liknande?

Som sagt jag missar säkert något uppenbart...

Skickades från m.sweclockers.com

Aha, ja självklart man får inte ändra läget på brytaren på något annat sätt då kommer det inte fungera. Men min fjärrkontroll är trasig så det är ingen risk.

Permalänk
Medlem
Skrivet av medbor:

Jag kanske missar något men om man inte kan känna av vilken status brytaren har och läget går att ändra på andra sätt, då kan du inte vara säker att ditt sparade värde är rätt. Switchen kan vara ’on’ och du sparar det, någon ändrar switchen utan att uppdatera värdet, då kommer program som kolla värdet tro att den är på när den är av... borde kunna hända efter strömbortfall eller liknande?

Som sagt jag missar säkert något uppenbart...

Skickades från m.sweclockers.com

Tanken är att man styr uttagen via en webb applikation som då håller koll på statusen. Skulle man vilja styra uttagen via en fjärrkontroll också så måste applikationen ligga och lyssna på Nexa meddelandena som skickas ut från fjärrkontrollen.

Permalänk
Medlem

Såg nu att man kan anropa egna script från Home Assistant, så jag ska nog pinna iväg och köpa ett till minneskort imorgon att labba med, så har man ett system som kan stryra allt. Skulle vara riktigt nice.

Permalänk
Medlem

OT: (ej Raspberry pi)

Men jag kör Tellstick znet lite v2 med 433 Mhz strömbrytare och temperatur sensors.

Och styr över allt via Internet/wifi med appen TelLIVE Remote Lite för Android.
Kan sätta på och stänga av strömbrytare samt se status av/på och temperaturer.
Behöver alltså inte vara hemma för att det skall fungera.

Har även satt upp tidsstyrning så att min Raspberry pi 2 startar och stänger av sig 2 gånger i veckan. (skapar lotto och jokernummer och skickar dessa via e-post)

Väldigt enkel lösning som fungerar klockrent.

Visa signatur

Windows 11 pro, Corsair 4000D Airflow, MSI PRO B660M-A WIFI D4, Intel Core i5 12600K, Corsair 32GB (2x16GB), PowerColor Radeon RX 6900 XT, Kingston NV1 500GB M.2 NVMe, WD Black SN850 1TB Gen 4, Seasonic Focus GX 850W, LG UltraGear 32GP850

Permalänk
Medlem
Skrivet av raubt1er:

Aha, ja självklart man får inte ändra läget på brytaren på något annat sätt då kommer det inte fungera. Men min fjärrkontroll är trasig så det är ingen risk.

Vad händer när ’strömmen går’? Kommer uttaget ihåg sitt läge sen innan? Startar servern vid omstart? Tror inte detta blir helt stabilt, men kanske räcker för dig...

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Zirgo:

OT: (ej Raspberry pi)

Men jag kör Tellstick znet lite v2 med 433 Mhz strömbrytare och temperatur sensors.

Och styr över allt via Internet/wifi med appen TelLIVE Remote Lite för Android.
Kan sätta på och stänga av strömbrytare samt se status av/på och temperaturer.
Behöver alltså inte vara hemma för att det skall fungera.

Har även satt upp tidsstyrning så att min Raspberry pi 2 startar och stänger av sig 2 gånger i veckan. (skapar lotto och jokernummer och skickar dessa via e-post)

Väldigt enkel lösning som fungerar klockrent.

Ja Tellstick är fint även Z-wave. Men tanken nu var att bygga något med det jag hade hemma + en sändare som kostade 50 pix. Med tiden kommer det hela byggas ut och säkert bytas ut flertalet gånger, man blir ju aldrig nöjd.

Skrivet av medbor:

Vad händer när ’strömmen går’? Kommer uttaget ihåg sitt läge sen innan? Startar servern vid omstart? Tror inte detta blir helt stabilt, men kanske räcker för dig...

Skickades från m.sweclockers.com

Det är så pass sällan strömmen går för mig, tror vi haft ett avbrott som inte varit planerat de senaste 8 åren. Går ju ställa in så att allt nollas och den skickar tänd-kommando till all belysning varje gång den startar om, för det ska den ju inte göra normalt sett.

Men efter att ha sovit på saken tror jag att jag kommer satsa på Home Assistant istället. Jag kan fortfarande styra mina nexa-brytare genom den och då får jag ett färdigt interface som är kompatibelt med andra lösningar också på sikt.

Permalänk
Medlem

Har också Homeassistant som styr ett par enheter med tellstick duo och lyssnar på 433 trafik via RTL433 sdr-sticka.
Nu tänds och släcks de lamporna via 433 fjärren (dimming lär ju bli svårt att fixa då det är helt utan intelligens)
men jag har funderat på att åtminstone lyssna på kommandona och ha ett internt state för brytarna,
eventuellt för att låta homeassistant lyssna på fjärren istället och styra brytarna den vägen.

Nu köpte jag ett gäng zigbee knappar på ikea så behovet att styra via homeassistant är ännu större.

Permalänk
Medlem

@medbor:
Uttagen kommer ihåg sin konfiguration tills man genomför en erase procedur på dom. Så man kan dra ut uttagen utan att dom tappar sin konfig.

Permalänk
Medlem

Ett problem med smart belysning är när man har barn som inte är så sugna på att använda mobiler o.s.v. för att styra belysning är att de stänger av lamporna på strömbrytaren istället.

Hittade den här varianten för att kunna använda IKEA Trådfri till t.ex. taklampor. Jag har hittills fokuserat på punktbelysning och trivsel, som fönsterlampor och enskilda spottar för hyllor m.m. Är det någon som testat den här eller något liknande?

https://www.m.nu/vagghallare-for-fjarrkontroller-ikea-hue-xia...

Permalänk
Medlem
Skrivet av MarkSix:

@medbor:
Uttagen kommer ihåg sin konfiguration tills man genomför en erase procedur på dom. Så man kan dra ut uttagen utan att dom tappar sin konfig.

Inga av mina nexa-prylar kommer ihåg status efter strömavbrott. Lagrade fjärrkontroll-koder kommer de ihåg, men inte av/på.

Permalänk
Medlem
Skrivet av Lilak:

Inga av mina nexa-prylar kommer ihåg status efter strömavbrott. Lagrade fjärrkontroll-koder kommer de ihåg, men inte av/på.

Borde man ju kunna testa i ett vanligt grenuttag på 2 minuter... tack för uppdateringen. Då känner jag ännu mer att detta är en ful lösning, trodde nexa var hyfsade grejer, känns inte så smart nu...

Ett alternativ kan ju vara att ändra till det läget man tror att det ska vara när strömmen kommer tillbaka kanske? Men då måste man kunna säga vilket läga man vill ha och inte bara ’toggle’. Dessutom behöver man något som upptäcker att strömmen gått och kommit tillbaka... sjukt jobbigt

Skickades från m.sweclockers.com

Permalänk
Medlem

De gamla hederliga nexa uttag som jag avser att styra är ju inte smarta, men man kan genom lite olika trick få dem att fungera skapligt i en automationsmiljö om man inte lider av frekventa strömavbrott. Det finns ju enkla knep där också, t.ex. som jag sa innan att nolla status som sparats vid varje uppstart av raspberryn.

Självklart finns smartare brytare idag, men i mitt fall har jag 6st Nexa som är fullt fungerande, men saknar fjärrkontroll och ville ersätta den med något smartare som kan sköta sig själv också.

Permalänk
Medlem

Jag skulle byta till Z-Wave eller ZigBee där du kan läsa av status..

433MHZ enligt mig är inte tillräckligt tillförlitligt då det lätt kan missas..

Ikea's uttag är väldigt prisvärda samt Zigbee sticka är ju inte så dyrt!

Visa signatur

I7 12700K | Noctua Chromax NH-D15 | 48GB Corsair 3200MHZ | MSI PRO Z690-A | XFX MERC 310 Radeon 7900 XTX |1 TB WD Black NVME | 34" Samsung C34H890 100HZ Freesync | Fractal Design R6 | Corsair RMX 850W 80+ Gold | Win11 Pro | 500/100 Fiber

Permalänk
Medlem

Klart man kan, men jag gillar att återbruka den elektronik jag kan och är förskonad från strömavbrott.

Permalänk
Medlem

@Lilak:
Jag pratar om konfiguration dvs id inte status (av/på).

Skrivet av medbor:

Borde man ju kunna testa i ett vanligt grenuttag på 2 minuter... tack för uppdateringen. Då känner jag ännu mer att detta är en ful lösning, trodde nexa var hyfsade grejer, känns inte så smart nu...

Ett alternativ kan ju vara att ändra till det läget man tror att det ska vara när strömmen kommer tillbaka kanske? Men då måste man kunna säga vilket läga man vill ha och inte bara ’toggle’. Dessutom behöver man något som upptäcker att strömmen gått och kommit tillbaka... sjukt jobbigt

Skickades från m.sweclockers.com

Nexa uttagen är så att säga remote kontroll inget annat, men det är ju lite skillnad i pris också mot smarta grejer som z-wave och zig-bee.

Permalänk
Medlem

Jag har byggt liknande applikation för en väggpanel. Jag sparade ner id och status i firebase dokumentdatabas, fungerade smidigt för ändamålet. MEN det är som de skriver (Har inte läst allt). Det finns en chans att de kommer ur sync om något då skulle bli knas med ett anrop som tex inte kommer fram. Det kan du tyvärr inte hålla koll på med vanlig 433mhz. Men räknar du kallt med att de alltid kommer fram så spara bara ner värdet hämta upp och markera statusen som du önskar
Har för mig faktiskt fungerat prima. (Rullat något år nu).

Ha det bäst !
/Daniel

Visa signatur

Rig: Ryzen 7 5800X - Crucial Ballistix Black 3200 Mhz 32 GB - MSI RTX 4060 TI OC 8 GB - Fractal Design Define C
Laptop: Macbook Pro M1 Max - 32GB - 14"
Media/Server: Raspberry PI 4 - 2 GB - Plex Media Server - KODI - PiHole - qBittorrent - HomeAssistant
Media/Server: NUC - i7-7567U - 32GB - Plex Media Server - Uptime Kuma - mineCraft - qBittorrent - 10 TB Storage
NAS: Zyxel 325v2 - 5 TB

Permalänk
Medlem
Skrivet av Ethnic:

Jag har byggt liknande applikation för en väggpanel. Jag sparade ner id och status i firebase dokumentdatabas, fungerade smidigt för ändamålet. MEN det är som de skriver (Har inte läst allt). Det finns en chans att de kommer ur sync om något då skulle bli knas med ett anrop som tex inte kommer fram. Det kan du tyvärr inte hålla koll på med vanlig 433mhz. Men räknar du kallt med att de alltid kommer fram så spara bara ner värdet hämta upp och markera statusen som du önskar
Har för mig faktiskt fungerat prima. (Rullat något år nu).

Ha det bäst !
/Daniel

Ja det är klart det kan bli så, får såklart testa så signalerna verkar gå fram som de ska på de avstånd jag tänkt mig, alternativt i annat fall bygga ut med en sändare till. Men mina tester hittills verkar lovande.

För att förhindra syncproblem tänkte jag ställa in någon form av återställning varje natt då all belysning som kommer styras med Nexa uttag kommer att vara släckt, så om någon av dem kommit ur sync så nollas det då. Borde också fungera som lite "skydd" mot eventuella strömavbrott så man slipper vakna till ett disco.

Permalänk
Medlem
Skrivet av raubt1er:

Ja det är klart det kan bli så, får såklart testa så signalerna verkar gå fram som de ska på de avstånd jag tänkt mig, alternativt i annat fall bygga ut med en sändare till. Men mina tester hittills verkar lovande.

För att förhindra syncproblem tänkte jag ställa in någon form av återställning varje natt då all belysning som kommer styras med Nexa uttag kommer att vara släckt, så om någon av dem kommit ur sync så nollas det då. Borde också fungera som lite "skydd" mot eventuella strömavbrott så man slipper vakna till ett disco.

Jag är utvecklare och tänker därför på edge cases. Jag har full förståelse för att alla lösningar inte är perfekta och det är säkert okej det med. Kan ändå vara bra att vara medveten om att de finns och kanske fundera på om det går att lösa på andra sätt. Sätt inte återställningen vid midnatt bara, då kommer saker gå fel på nyår eller nåt säkert!

Skickades från m.sweclockers.com

Permalänk
Medlem

Om du förlitar dig på att statusen är konsekvent _tillräckligt_ mycket, notera att tillräckligt är subjektivt, så kan du ha en databas där du sparar ner senaste värde och en funktion i din webapp för att bara skifta värde i databasen när den visar felaktigt. På så vis kan du manuellt kalibrera värdet om den går ur synk. En annan idé vore att dra nytta av ett konsekvent scenario, t.ex. om det skickas en på- eller avsignal istället för "skifta läge" och kalibrera genom att skicka avsignal till alla, och sedan slå på de som ska vara på med visst intervall/med manuell initialisation.

Om det är en "skifta läge"-signal som skickas så kanske det finns något annat konsekvent scenario som går att kalibrera mot. T.ex. om de nollas vid strömavbrott så kan du ha en timer på dem som stänger av strömmen med jämna mellanrum och så låter du Raspberryn anta att lamporna står i nollat läge, vilket det nu är, efter vad timrarna är inställda på.

En tredje metod vore att ha en sensor på varje lampa som läser av status, vore kanske bästa setupen, och rapporterar det till din Raspberry. På så vis skulle du även få information om en lampa gått sönder.

Permalänk
Medlem
Skrivet av Marida:

Om du förlitar dig på att statusen är konsekvent _tillräckligt_ mycket, notera att tillräckligt är subjektivt, så kan du ha en databas där du sparar ner senaste värde och en funktion i din webapp för att bara skifta värde i databasen när den visar felaktigt. På så vis kan du manuellt kalibrera värdet om den går ur synk. En annan idé vore att dra nytta av ett konsekvent scenario, t.ex. om det skickas en på- eller avsignal istället för "skifta läge" och kalibrera genom att skicka avsignal till alla, och sedan slå på de som ska vara på med visst intervall/med manuell initialisation.

Om det är en "skifta läge"-signal som skickas så kanske det finns något annat konsekvent scenario som går att kalibrera mot. T.ex. om de nollas vid strömavbrott så kan du ha en timer på dem som stänger av strömmen med jämna mellanrum och så låter du Raspberryn anta att lamporna står i nollat läge, vilket det nu är, efter vad timrarna är inställda på.

En tredje metod vore att ha en sensor på varje lampa som läser av status, vore kanske bästa setupen, och rapporterar det till din Raspberry. På så vis skulle du även få information om en lampa gått sönder.

Alternativ tre är ju trevligt, men det kräver dock ganska mycket mer hårdvara och bygge gissar jag.

Skickades från m.sweclockers.com