Raspberry pi 3 som mätstation, en vision

Hur ser ditt mät- och/eller hemautomations-system ut? Dela med dig av hur just Ditt projekt ser ut och fungerar, eller hur dina planer ser ut för framtiden. Att läsa om andra är bästa inspirationen.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

motoz skrev:Javisst kan du använda apache, eller nginx eller någon annan 'riktig' webserver. Om du vill ha något mycket enklare att testa med så kan jag tipsa om pythons inbyggda webserver SimpleHTTPServer.

Som exempel, skapa en fil 'index.html' i samma mapp som din bildfil med innehållet:

Kod: Markera allt

<img src=test.png>
sen kör du kommandot:

Kod: Markera allt

python -m SimpleHTTPServer
så har du bilden uppe på http://localhost:8000 (eller via ip:n från annan dator).
Underbart!!!! Funkar klockrent :)
Hade lite meck först och om någon googlare hittar hit så kan jag berätta att för att skapa index.html skrev jag:

echo '<img src=graph_temp.png>'index.html

Härligt lärt något nytt idag igen :)
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Givetvis finns det frågetecken kvar om detta med web-visning.
Python -m kommandot måste köras från rätt mapp, annars händer lustigheter, jag fick tillgång till hela home/pi katalogen... Sedan måste not Python -m bli en del av det som körs från helst även omstartas om något havererar.

Ja det får bli en del av morgondagens pillande... :)
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Ja, SimpleHTPPServer gör helt enkelt mappen där den startas tillgänglig över http protokollet, och om det finns en index.html fil där så får man den om man inte anger någon annan fil i URL:en.

Nu skulle jag inte rekommendera att du använder pythons SimpleHTTPServer "på riktigt", framför allt inte om du vill ha den tillgänglig över internet. Internt i ditt eget nät är det förstås ok, annars får du " sudo apt-get install apache2" och ta itu med att konfigurera en riktig website. Inte lika enkelt men inget omöjligt det heller.

Annars så är det numera ganska enkelt att köra ett enkelt kommando som "python -m SimpleHTTPServer" automatiskt vid uppstart. Först så skapar du en service fil i /etc/systemd/system/, tex /etc/systemd/system/simplehttpserver.service, innehållet kan se ut tex såhär:

Kod: Markera allt

[Unit]
Description=SimpleHTTPserver test service
Requires=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/python -m SimpleHTTPServer
Type=simple
WorkingDirectory=/home/pi/www

[Install]
WantedBy=multi-user.target
Här satte jag WorkingDirectory=/home/pi/www
Dvs index.html och bildfilen ska vara i /home/pi/www, eller så ändrar du det till var du vill ha dem

Sedan måste du meddela systemet att du har gjort en ny (eller ändrat en befintlig) service fil:

Kod: Markera allt

sudo systemctl daemon-reload
Och sen aktiverar du din service:

Kod: Markera allt

sudo systemctl enable simplehttpserver.service
Nu ska den starta automatiskt efter omstart, eller så kan du starta den manuellt:

Kod: Markera allt

sudo systemctl start simplehttpserver.service
Kolla att den kör med:

Kod: Markera allt

sudo systemctl status simplehttpserver.service
Fast kanske det är vettigare att ta itu med apache (eller tex nginx) direkt, eller nåt annat av minst flera hundra altiernativ...

Och för att vara komplett så tar du bort din service på följande sätt:

Kod: Markera allt

sudo systemctl stop simplehttpserver.service
sudo systemctl disable simplehttpserver.service
sudo rm /etc/systemd/system/simplehttpserver.service
sudo systemctl daemon-reload
Open source pellet logger: https://github.com/motoz/PellMon
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

motoz skrev:Ja, SimpleHTPPServer gör helt enkelt mappen där den startas tillgänglig över http protokollet, och om det finns en index.html fil där så får man den om man inte anger någon annan fil i URL:en.

Nu skulle jag inte rekommendera att du använder pythons SimpleHTTPServer "på riktigt", framför allt inte om du vill ha den tillgänglig över internet. Internt i ditt eget nät är det förstås ok, annars får du " sudo apt-get install apache2" och ta itu med att konfigurera en riktig website. Inte lika enkelt men inget omöjligt det heller.

Annars så är det numera ganska enkelt att köra ett enkelt kommando som "python -m SimpleHTTPServer" automatiskt vid uppstart. Först så skapar du en service fil i /etc/systemd/system/, tex /etc/systemd/system/simplehttpserver.service, innehållet kan se ut tex såhär:

Kod: Markera allt

[Unit]
Description=SimpleHTTPserver test service
Requires=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/python -m SimpleHTTPServer
Type=simple
WorkingDirectory=/home/pi/www

[Install]
WantedBy=multi-user.target
Här satte jag WorkingDirectory=/home/pi/www
Dvs index.html och bildfilen ska vara i /home/pi/www, eller så ändrar du det till var du vill ha dem

Sedan måste du meddela systemet att du har gjort en ny (eller ändrat en befintlig) service fil:

Kod: Markera allt

sudo systemctl daemon-reload
Och sen aktiverar du din service:

Kod: Markera allt

sudo systemctl enable simplehttpserver.service
Nu ska den starta automatiskt efter omstart, eller så kan du starta den manuellt:

Kod: Markera allt

sudo systemctl start simplehttpserver.service
Kolla att den kör med:

Kod: Markera allt

sudo systemctl status simplehttpserver.service
Fast kanske det är vettigare att ta itu med apache (eller tex nginx) direkt, eller nåt annat av minst flera hundra altiernativ...

Och för att vara komplett så tar du bort din service på följande sätt:

Kod: Markera allt

sudo systemctl stop simplehttpserver.service
sudo systemctl disable simplehttpserver.service
sudo rm /etc/systemd/system/simplehttpserver.service
sudo systemctl daemon-reload
Tusen tack för all hjälpen där! Sparade mig rätt många timmar!!!
Ibland önskar man att det fanns en modifierad "Gilla-knapp" på sådana här forum, helt enkelt en "Ge en öl-knapp" där man rent fysiskt bjöd det gillade inlägget på en öl! Tusen tack för din tid!

Och givetvis fungerade det klockrent!
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Ja, ju mer man läser desto fler frågor får man. Nu har jag läst att SD-korten inte lämpar sig för upprepade skrivningar av data. Tydligen har dessa lite begränsningar i livslängd om det blir mycket skrivande. Begränsningen är lite olika beroende av typ av minnesceller på kortet.
http://en.wikipedia.org/wiki/Wear_leveling

There are different types of flash chips available. SLC chips store only one bit per memory cell (it is either 0 or 1), MLC cells store two or three bits. Naturally, MLC chips are more sensitive to ageing. Three-bit (eight level) cells may not endure more than 1000 writes. So, if you need reliability, take a SLC card despite its higher price,
De flesta verkar ju logga temperaturer med en upplösning på några minuter och på ett helår. Blir det ju lätt ganska många skrivcykler. Visserligen är säkert innehållet i varje enskild temperaturlogg ganska litet, men med grafgenerering i form av png-filer så rasar det nog snabbt iväg tänker jag. Kan det vara smart tror ni att lägga rörd-databasen och grafiken på ett USB-minne istället, då är det mindre risk för systemkrasch pga dataskrivning av temploggar. Visst, ett USB är lika känsligt som ett SD-kort, men om inga systemfiler finns där så blir ju jobbet mindre ansträngande om minnescellerna skulle ge upp.
Vidare har jag läst att somliga lägger över hela raspbian på USB för att skapa ett mer robust system, men jag har lite svårt att se att det skulle ge någon skillnad.
Däremot är det tydligen så att i raspbian loggas samtliga ändringar och läsningar av systemfiler som standard. Hette tydligen atime och noatime attribut.
http://tldp.org/LDP/solrhe/Securing-Opt ... sec73.html
Är detta något ni andra har brytt er om, eller är det liksom bara humbug med havererade SD-kort?
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Nej det är inte humbug, om du loggar var tredje minut till sd-kortet så kommer med stor sannolikhet ett haveri inom några månader till några år. Ett sätt att komma runt det är att logga till en extern hårddisk via usb, inte ett usb-flashminne eftersom det mycket riktigt inte är bättre på något sätt. Problemet är då att raspberryn inte riktigt orkar ge tillräckligt mycket ström för en extern hårddisk, så den behöver ofta matas via en hub med egen strömförsörjning för att det ska fungera, men det kan också gå direktkopplat.

Sättet jag har löst det på är att jag skapar en ramdisk, alltså ett filsystem i ram-minnet, där databasen placeras. Med jämna mellanrum, tex två timmar, och vid nedstänging kopieras databasen till sd-kortet, och vid uppstart koperas den till ramdisken. På det sättet har jag loggat var 10:e sekund till samma sd-kort i över tre år. Jag tappar förstås upp till två timmar vid strömavbrott, men det kan jag leva med.

Bildfilen kan förstås med fördel placeras i ramdisken den också, den ska ju hur som helt inte lagras. Annars kan man förstås rita en ny bild då någon öppnar webbsidan istället för att rita om den hela tiden utan att någon ser den, vilket går att lösa på minst några hundra olika sätt.

Programmet i min signatur har allt det färdigt inbyggt och gör i princip precis det du vill, men du vill ju bygga något själv vilket förstås är mycket roligare :D I PellMon wikin finns beskrivet hur man kan göra en ramdisk https://github.com/motoz/PellMon/wiki/H ... asperry-Pi

I raspbian loggas inte läsningar (noatime), alternativet att alla läsningar uppdaterar filsystemet med en tidsstämpel för senaste läsning skulle nog bränna upp kortet mer eller mindre direkt.

(Och tack för den virtuella ölen)
Open source pellet logger: https://github.com/motoz/PellMon
larky
Moderator
Inlägg: 1166
Blev medlem: 01 feb 2008, 12:21
Ort: Skellefteå
Kontakt:

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av larky »

Alternativt ladda upp loggen till dropbox eller liknande från ramdisk, då kan man ha skrivskyddat SD-kort
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 393
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av flyvert »

motoz skrev:Sättet jag har löst det på är att jag skapar en ramdisk, alltså ett filsystem i ram-minnet, där databasen placeras
Intressant!

Hur stor RAM-disk? Hur många rader får plats?
Om traktorn stjälper; håll i ratten, hoppa ej!
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

motoz skrev:Nej det är inte humbug, om du loggar var tredje minut till sd-kortet så kommer med stor sannolikhet ett haveri inom några månader till några år. Ett sätt att komma runt det är att logga till en extern hårddisk via usb, inte ett usb-flashminne eftersom det mycket riktigt inte är bättre på något sätt. Problemet är då att raspberryn inte riktigt orkar ge tillräckligt mycket ström för en extern hårddisk, så den behöver ofta matas via en hub med egen strömförsörjning för att det ska fungera, men det kan också gå direktkopplat.

Sättet jag har löst det på är att jag skapar en ramdisk, alltså ett filsystem i ram-minnet, där databasen placeras. Med jämna mellanrum, tex två timmar, och vid nedstänging kopieras databasen till sd-kortet, och vid uppstart koperas den till ramdisken. På det sättet har jag loggat var 10:e sekund till samma sd-kort i över tre år. Jag tappar förstås upp till två timmar vid strömavbrott, men det kan jag leva med.

Bildfilen kan förstås med fördel placeras i ramdisken den också, den ska ju hur som helt inte lagras. Annars kan man förstås rita en ny bild då någon öppnar webbsidan istället för att rita om den hela tiden utan att någon ser den, vilket går att lösa på minst några hundra olika sätt.

Programmet i min signatur har allt det färdigt inbyggt och gör i princip precis det du vill, men du vill ju bygga något själv vilket förstås är mycket roligare :D I PellMon wikin finns beskrivet hur man kan göra en ramdisk https://github.com/motoz/PellMon/wiki/H ... asperry-Pi

I raspbian loggas inte läsningar (noatime), alternativet att alla läsningar uppdaterar filsystemet med en tidsstämpel för senaste läsning skulle nog bränna upp kortet mer eller mindre direkt.

(Och tack för den virtuella ölen)
Ramminnet! Perfekt ju, som gjort för upprepade skrivningar. Hade ingen aning att man kunde använda det för filsystem. Smart så in i bängen!
Då gäller det nu att anpassa dina rader till mitt lite mindre omfattande system.
Du kör alltså alla dina loggar i samma rdddatabas, eller?
Jag ser en fördel sedan med att dumpa basen på USB, då är det enkelt att ta backup, men givetvis hålla ner antalet skrivtillfällen som du till varannan timme.
Extern hdd, för att det ska fungera bra lär det väl vara en mekanisk med skivor, eller? För Ssd diskar är väl egentligen mest bara stora USB.

Ja då blir det till att studera ditt upplägg. Ja, jag vet att det är enklare att bara sno ditt program, men som du skrev, det hela blir så mycket roligare om man bygger själv. Då lär man sig något nytt och det är egentligen tanken med hela den här temperaturloggarhistorien. Frun anser att jag är knäpp, man kan ju köpa en termometer på ICA :)
Ja tusen tack för länken, jag tror redan att fler har hittat hit och läst om ramdiskar, antar att du kommer se en ökning av trafik till din wiki. :)
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Hur stor RAM-disk? Hur många rader får plats?
10M ramdisk, databasen är 8M. 13 st DS, 4 st RRA med vardera 20000 sampel och medelvärdet av 1, 10, 100 och 1000 ger data i över 15 år med 30s sampeltid.
Du kör alltså alla dina loggar i samma rdddatabas, eller?
Samma databas ja, men jag funderar på att eventuellt bygga ut med stöd för flera databaser för ökad flexibilitet. Nu har ju alla data samma RRA definitioner trots att jag längre bakåt i tid egentligen inte är intresserad av annat än pelletförbrukningen.
Open source pellet logger: https://github.com/motoz/PellMon
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

motoz skrev: Samma databas ja, men jag funderar på att eventuellt bygga ut med stöd för flera databaser för ökad flexibilitet. Nu har ju alla data samma RRA definitioner trots att jag längre bakåt i tid egentligen inte är intresserad av annat än pelletförbrukningen.
Har nu lyckats skapa en ramdisk som existerar även efter reboot :)
Jag kan få till en rdd-databas i mappen manuellt, men jag har inte lyckats få med scriptet som skapar denna i någon form av boot-instruktion.

Skapade sedan även en mapp /www lite som i min förra setup där det sedan fanns en index.html med bilden graph_temp.png. I förra setupen så blev ju denna tillgänglig via SimpleHttp nu vet jag nog att SimpleHttp inte kommer funka, men mest för att testa med samma utgångsläge. Dock finns inte mappen /www kvar efter reboot, här är det säkert något finurligt kommando som krävs för att lista skapandet av mappar som en del av en startup.
Men med manuellt startad rrd och manuellt skapad /www-mapp så skapades en graph_temp.png :)
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 393
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av flyvert »

Holton skrev:Extern hdd, för att det ska fungera bra lär det väl vara en mekanisk med skivor, eller? För Ssd diskar är väl egentligen mest bara stora USB.
Jag har en 2.5" Intel 60GB SSD i ett litet USB-kabinett (där en mekanisk disk för ett helt annat ändamål satt tills den vek ned sig); mängden ström en RPi kan leverera över USB räcker till, men marginalen tillåter inte mycket mer förbrukare antar jag.

En SSD är konstruerad för att tåla mer skrivningar än ett vanligt USB-minne; SSD sitter ju i dom flesta nya datorer idag.
En mekanisk disk kanske har längre livslängd, vem vet, men extern matning är då ett måste vilket fick mig att välja SSD.

Ett krux jag fått bygga runt med skript är att om man mountar dom externa partitionerna mha /etc/fstab blir RPin hängande vid boot om något strular med disken. Orkade inte felsöka så jag struntade i fstab o lade till ett manuellt mountkommando i /etc/rc.local - går inte disken att montera går RPin iaf upp på nätverket o skickar ett "mount failed" till min mobil.

Jag tittade ursprungligen på RRD men valet föll på MySQL då jag är bekväm med relationsdatabaser o SQL-språket sedan många år. Ganska enkelt att generera trendkurvor "on the fly" mha PHP o JavaScript. Jag har även annan typ av data som bättre lämpar sig i en SQL databas - motion detection från kameror, låsstatus från dörrar, etc.
Om traktorn stjälper; håll i ratten, hoppa ej!
Holton
Tar hemautomation på allvar
Inlägg: 128
Blev medlem: 26 apr 2016, 21:45
Ort: Djurmo

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av Holton »

Finns det något härligare än att sitta på altanen en solig söndag och grotta ner sig i ramdiskar och auto mountning av mappar?
Hittade denna https://www.a-netz.de/blog/2013/02/ramd ... raspberry/
Här beskrivs massor av det jag behöver, Andreas har även fler guider på samma site.

Semester omen vecka, tror det blir den nördigaste sommaren någonsin. :D
Användarvisningsbild
motoz
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 feb 2015, 15:05
Ort: ostrobothnia

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av motoz »

Hur du mountar ramdisken automatiskt vid uppstart finns med i länken jag skickade, du ska lägga till raden som beskrivs till filen /etc/fstab, tex mha 'sudo nano /etc/fstab'.

Flyvert, om du lägger till nofail till mountoptions i fstab så bootar den vidare efter timeout om disken inte kan mountas.
Open source pellet logger: https://github.com/motoz/PellMon
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 393
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Raspberry pi 3 som mätstation, en vision

Inlägg av flyvert »

Vill minnas att jag provade "nofail" utan att det hjälpte...

Nåväl, har två "pajer" med extern disk o samma skrotlösning för att montera de externa partitionerna o lär behöva återbesöka dem båda vad det lider. Så j*vla trist när det hänger upp sig; båda enheterna sitter otillgängligt utan skärm o tgb... inte kul när dom fryser i boot utan nätverk... i princip bara att göra reset.
Om traktorn stjälper; håll i ratten, hoppa ej!
Skriv svar