Script till LCD

OWFS - One Wire File System är en Linuxmjukvara som stödjer de flesta kommersiellt tillgängliga 1wire-enheterna. OWFS saknar helt möjligheter att presentera data - detta måste göras med tex RRDTool

Moderator: elf98

Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
chris
Inlägg: 2
Blev medlem: 21 sep 2014, 07:23
Ort: Huskvarna

Script till LCD

Inlägg av chris » 15 nov 2015, 21:03

Hej har en RPI med owfs och 5 tempgivare och en lcd. Allt fungerar kan tända LCDn men har ingen aning hur jag ska göra ett script som visar temperaturerna och tid i displayen. Antar att det är ett script som behövs vet dock inte hur det ska göras och var det ska läggas i RPI:n. Tacksam om någon kan hjälpa mig
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 388
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Script till LCD

Inlägg av flyvert » 20 nov 2015, 18:34

Hej.

Den allra enklaste varianten är nog att lägga in ett permanent körande script som du anropar från /etc/rc.local (ett script som körs en gång vid boot)

Det här skulle ta inne och utetemp från mina två EDS0068 och lägga ut dem på displayen tillsammans gradtecken och klockslag och upprepas c:a 1 ggr per minut.

#!/bin/bash

while [ true ];do
# Indoor temp, corridor
sens1temp=$(cat /mnt/1wire/7E.C42600001000/EDS0068/temperature)
sens1humi=$(cat /mnt/1wire/7E.C42600001000/EDS0068/humidity)
sens1lite=$(cat /mnt/1wire/7E.C42600001000/EDS0068/light)
sens1pres=$(cat /mnt/1wire/7E.C42600001000/EDS0068/pressure)

# Outside temp, north wall
sens8temp=$(cat /mnt/1wire/7E.DE2600001000/EDS0068/temperature)
sens8humi=$(cat /mnt/1wire/7E.DE2600001000/EDS0068/humidity)
sens8lite=$(cat /mnt/1wire/7E.DE2600001000/EDS0068/light)
sens8pres=$(cat /mnt/1wire/7E.DE2600001000/EDS0068/pressure)

printf "$(date +%H:%M)" > /mnt/1wire/bus.1/FF.CA0800000100/line20.0
printf "In%5.1f\xDF %3.0f%%" $sens1temp $sens1humi > /mnt/1wire/bus.1/FF.CA0800000100/line20.1
printf "Ut%5.1f\xDF %3.0f%% %4dmb" $sens8temp $sens8humi $sens8pres > /mnt/1wire/bus.1/FF.CA0800000100/line20.2

sleep 55
done


Om du sparar ovanstående som med t.ex. filnamnet "/usr/local/bin/uppdatelcd" (givetvis måste du ändra 1-wire filnamnen att matcha dina givare).

Sen gör du skriptet körbart med "chmod 755 /usr/local/bin/uppdatelcd" kan du anropa det från /etc/rc.local genom att lägga till dessa två rader innan "exit 0"


# Start temperature updater
/usr/local/bin/uppdatelcd &


exit 0




Jag håller dock på att övergå från Bash-script till Python med vilket man kan göra så mycket mer (och för en som kan lite programmering, enklare).

Vidare kan man använda "cron" för att få saker utförda på exakt tid (det är faktiskt det jag gör idag; min LCD uppdateras någon sekund efter äkta tid, skriptexemplet ovan kommer att ligga 0-60 sekunder efter RPins klocka)
Min LCD infälld i väggen i köket
Min LCD infälld i väggen i köket


/f
Om traktorn stjälper; håll i ratten, hoppa ej!
chris
Inlägg: 2
Blev medlem: 21 sep 2014, 07:23
Ort: Huskvarna

Re: Script till LCD

Inlägg av chris » 24 nov 2015, 22:16

Tack ska testa när jag kommer till den nästa gång. Tack för hjälpen :)
P-G
Gillar hemautomation
Inlägg: 27
Blev medlem: 14 jun 2009, 11:32
Ort: Vellinge/Eskilstorp

Re: Script till LCD

Inlägg av P-G » 28 jul 2016, 10:54

Skulle vilja få lite hjälp med initieringen av LCD

Använder mig av OWFS och raspberry

Det löste sig
Temp
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 388
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Script till LCD

Inlägg av flyvert » 30 jul 2016, 09:11

Antagligen lite för sent, men så här har jag moddat (i rött) i start1wire.sh skriptet för att min LCD skall initieras och få bakgrundsbelysningen påslagen varje gång jag startar owserver och owfs (jag har delat upp min 1-wirebus över två Raspberrys och "speglar" dessa mellan båda enheterna så att "alla ser alla givare"):

# Start local owserver hosting own I2C 1-wire bus master
/opt/owfs/bin/owserver --i2c=ALL:ALL

# Connect to local and remote owserver at RPI2
/opt/owfs/bin/owfs -s 127.0.0.1 -s RPI2:4304 --allow_other /mnt/1wire

# Wait 5 seconds, then turn on LCD
sleep 5
echo "1" > /mnt/1wire/FF.CA0800000100/LCDon
echo "1" > /mnt/1wire/FF.CA0800000100/backlight
Om traktorn stjälper; håll i ratten, hoppa ej!
P-G
Gillar hemautomation
Inlägg: 27
Blev medlem: 14 jun 2009, 11:32
Ort: Vellinge/Eskilstorp

Re: Script till LCD

Inlägg av P-G » 30 jul 2016, 16:04

Tack för ditt svar ändå.

Det jag skulle behöva hjälp med är hur man skriver ut elförbrukningen på displayern från databasen
elförbrukning nu och månaden.
Temp
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 388
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Script till LCD

Inlägg av flyvert » 31 jul 2016, 07:55

P-G skrev:Tack för ditt svar ändå.

Det jag skulle behöva hjälp med är hur man skriver ut elförbrukningen på displayern från databasen
elförbrukning nu och månaden.
Jag kör en hemmasnickrad lösning baserad på MySQL o diverse skriptspråk, antar att du kör RRD...

I det stora så går det ju ut på att omvandla räknaren (som i mitt fall räknar 1/1000 kWh).

Jag har ett skript som går en gång per minut, läser av räknaren och lägger ut värdet "X Watt" där X är antalet uppmätta elräknarpulser senaste minuten multiplicerat med 60. 1/1000 kWh förbrukat under en minut = 60 watt i snittförbrukning. Skulle det komma 10 pulser i minuten under en hel timme motsvarar det 10 pulser x 60 minuter = 600/1000 kWh = 0.6 kWh (eller i klarspråk en snittförbrukning om 600 watt per minut).

Jag lägger inte upp någon historisk data på displayen, den publicerar jag via Apache (webbserver) och mha Flot (JavaScript) diagram. Flot är relativt enkelt att använda om man kan lite Java och JSON (jag lade ut min kod här på forumet för en par år sedan) och har fördelen att basera sig på sekundfärsk data, varje gång en webklient frågar efter ett diagram läses data från MySQL och omvandlas till kurvor av Flot.

Så här ser min rullande dagförbrukning ut:
Rullande dagsmedelförbrukning av el
Rullande dagsmedelförbrukning av el
I och med att datat är lagrat i SQL är det busenkelt att vrida o vända på det, här tex den genomsnittliga elförbrukningen per timme på dygnet:
Genomsnittlig elförbrukning, per timme på dygnet
Genomsnittlig elförbrukning, per timme på dygnet
Om traktorn stjälper; håll i ratten, hoppa ej!
P-G
Gillar hemautomation
Inlägg: 27
Blev medlem: 14 jun 2009, 11:32
Ort: Vellinge/Eskilstorp

Re: Script till LCD

Inlägg av P-G » 31 jul 2016, 22:11

Hej

Jag håller på att konvertera från Msure som jag har kört sedan juni 2009 på en XP. Jag kommer att fortsätta med samma MySql databaser om det går. (Det är bara en anpassning).
Jag skall titta på Flot.

Vet du hur man kan få ut LAST från en RRDDATA till en vaiabel?

Jag återkommer om jag har några frågor.
Temp
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 388
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Script till LCD

Inlägg av flyvert » 31 jul 2016, 23:46

P-G skrev:Vet du hur man kan få ut LAST från en RRDDATA till en vaiabel?
Tyvärr, har aldrig jobbat med RRD. Men det finns mycket kunskap här på forumet...
Om traktorn stjälper; håll i ratten, hoppa ej!
P-G
Gillar hemautomation
Inlägg: 27
Blev medlem: 14 jun 2009, 11:32
Ort: Vellinge/Eskilstorp

Re: Script till LCD

Inlägg av P-G » 21 sep 2016, 22:19

Skulle någon kunna ge mig ett exempel på kod för att skapa grahp med mysql. Har försökt att hitta någon exempel på flot hemsida men hittar inget. Gärna med elmätare och temp.
Temp
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 388
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Script tiill LCD

Inlägg av flyvert » 22 sep 2016, 00:40

P-G skrev:Skulle någon kunna ge mig ett exempel på kod för att skapa grahp med mysql. Har försökt att hitta någon exempel på flot hemsida men hittar inget. Gärna med elmätare och temp.
Kolla mina första inlägg här - vid något tillfälle vintern 2013/2014 la jag ut stommen av min MySQL/PHP/Apache/Flot lösning.
I korthet, MySQL->PHP->Apache->Flot.

Ladda ned o studera det jag lade upp, ställ sen en mer specifik fråga så skall jag försöka fylla i.
Om traktorn stjälper; håll i ratten, hoppa ej!
Skriv svar