Mjukvaran för styrsystemet är byggt med Node.js, Express, React och Sqlite3.
git clone https://github.com/guni12/bbbnode
Med Markdown Viewer kan du läsa README-filen lokalt (om du vill). Skriv då /home/pi/bbbnode/README.md
i webbläsaren
Öppna filen /home/pi/bbbnode/scripts/install.sh
och ändra LååångtLösenord till ditt eget val (rad 47)
Ändra i filen /home/pi/bbbnode/scripts/curls.sh
din@email.se och hemlig till dina val.
Öppna en terminal och kör följande kommando - (det kan ta en stund, sqlite ger många varningar, men fungerar):
sh /home/pi/bbbnode/scripts/install.sh
Efter detta startas systemet om.
Öppna en egen terminal och kör följande kommandon:
cd bbbnode
npm run dev
Processen ska rulla under installationen.
Öppna en ny terminal och kör filen:
cd bbbnode
sh /home/pi/bbbnode/scripts/curls.sh
Det som händer här är att alla installerade sensorer hittas av systemet.
En lista med alla relän initieras. Aktuellt spotpris hämtas. Temperaturerna uppdateras och styrning enligt default inställningar räknas ut.
Gå till hemsidan utan inloggning http://ditt.ip.n.r:8686
.
(Det finns två alternativa portnummer till gränssnittet. :8787
är med inloggning.)
Börja med att ge namn till dina sensorer (sidan Sensorer) allteftersom du identifierar dem.
Du kan värma sensorerna i handen och använda http://ditt.ip.n.r:1337/tempupdate
för att uppdatera värdena.
Alternativt använd terminalen direkt med kommandot ds18b20 -a -d 2
.
Uppdatera sidan Sensorer och klicka på den hittade sensorn.
Ge den ett alias, så du lättare kan hålla reda på den.
På sidan Rum kan man välja de sensorer som man vill ska styra relän.
Namnge rummet och välj sensor, respektive relä i varsin dropdown-lista.
Här ställer du också in önskade temperaturer.
På sidan Rpio kan du se dina aktiva relän.
OBS!!! Om du har omvänd funktion på reläna (till och från), gå in i filen
/home/pi/bbbnode/public/javascripts/hour-control/controls.js
och på rad 18 ändra etta och nolla till
return c1 < c2 ? 1 : 0;
På hem-sidan Hub finns dags-info om priser mm.
När du är nöjd med ovanstående är det dags att installera några kommandon som körs regelbundet via cron. Om du vill ändra hur ofta uppdateringar körs, är det här du ska gå in och ändra (med sudo crontab -e
).
sudo crontab -l -u root | cat /home/pi/bbbnode/scripts/cron.txt | sudo crontab -u root -
Det är också bra att avsluta development-server-processen (ctrl + c) och starta en pm2 process som sedan startar om automatiskt vid reboot eller strömavbrott.
https://pm2.keymetrics.io/
cd bbbnode
sudo fuser -k 1337/tcp
pm2 start npm -- start
pm2 save
För att läsa temperaturerna direkt i terminalen, skriv:
ds18b20 -a -d 2
För att se eller döda processer (-i info, -k kill)
sudo lsof -i -P -n | grep LISTEN
sudo lsof -i :1337
sudo fuser -k 1337/tcp
För att studera pm2 log, se info om processen eller döda den
pm2 log
pm2 show npm
pm2 delete npm
För att starta om.
pm2 start npm -- start
pm2 save
Utvecklare? För att dina egna ändringar i koden ska slå igenom måste servern startas om. Det finns ett kommando för det också.
pm2 start npm -- start --watch --ignore-watch="node_modules"
pm2 save
För att använda hemsidan från fjärr behöver port 8686 (utan inloggning) öppnas eller företrädesvis 8787 (med inloggning).
Sökväg | Uträttar |
---|---|
(GET) | |
/ | Testsida |
/savesensors | Hittar och sparar nya sensorer till databasen |
/showsensors | Visar de sparade senorerna med ev alias |
/showsensors/id(int) | Visar sensor med id |
/deletesensor/id(int) | Tar bort sensor med id |
/initgpios | Initierar gpio-pinnarna till databasen |
/showgpios | Visar de sparade gpio-pinnarna från databasen |
/showgpios/id(int) | Visar gpio-pinne med id |
/settings | Visar inställda värden |
/spotcal | Plockar ut dagens spotpriser enligt settings |
/spotcal/2 | Plockar ut morgondagens spotpriser, om efter kl.16 |
/today | Visar dagens utvunna spotprislista enligt settings |
/today2 | Visar morgondagens utvunna spotprislista |
/addroom | Lägger till rum om kopplad sensor finns |
/rooms | Visar info om tillagda rum |
/rooms/id(int) | Visar info om rum (id) |
/deleteroom/id(int) | Tar bort rum med id |
/roomssensors | Visar all rum med kopplad sensor |
/roomssensors/id(int) | Visar rum med kopplad sensor (rum-id) |
/controlupdate | Räknar ut styrning enligt spotpris |
/controls | Visar kontroll-inställningarna |
/hourcontrol | Ställer in styrning, inställd att köras var 10e minut |
/tempupdate | Läser av gpio-sensorerna och uppdaterar zonerna |
(POST) | |
/login | Inloggning som skapar en tidsbegränsad token |
/register | Skapa ny medlem (email, password) i tabell 'user' |
/editroom | Uppdatera 'room' med ett nytt värde |
/editsettings | Uppdatera 'settings' med ett nytt värde |
/editgpio | Uppdatera 'gpios' med (mode, status) |
/editsensor | Uppdatera 'sensors' med (namn, temp, gpio, rum) |