I brist på andra svar tar jag och svarar mig själv efter lite nötande här hemma

Med detta kanske jag lockar fram någon kunnig som sitter och gömmer sig bakom tangentbordet!
Jag har i nuläget
Raspberry Pi Rev. B
https://www.m.nu/dator-raspberry-pi-mod ... p-567.html
RFXtrx433 USB
https://www.m.nu/rfxtrx433-usb-43392mhz ... p-520.html
Oregon sändare
https://www.m.nu/thgn132n-tradlos-senso ... p-508.html
På Raspberry Pi'n har jag installerat Domoticz färdigkompilerade paketlösning för ett vanligt SD kort "domoticz-raspberrypi-sdcard-r1_1125.zip". Det kör tydligen Debian. Hur gjorde jag det nu då ? Jag följde diverse guider om att skriva en image till ett SD kort via kortläsaren på min MacBook Air. Det tog några försök och lite "plock" av olika lösningar från olika sajter men till slut lyckades det. Raspberry Pi'n startade som den skulle och Domoticz var enkelt åtkomligt från valfri dator med webbläsare enligt adressen "din raspberrys ip:8080" - internt då förstås. Domoticz kände igen och kunde direkt installera RFXtrx433 grunkan.
Trots att Domoticz är underbart önskade jag mer krångel. Självklart skulle jag försöka mig på att logga allt i en Round Robin Databas för att enkelt kunna grafa datan publikt. Via era tips och internets underbara funktion har jag lyckats med detta. Jag förklarar mer här nedan.
För att skapa en Round Robin databas måste man förstås ha RRDtool installerat, turligen nog var så fallet om jag minns rätt på denna färdiga lösning. Jag fann sedan ett skript som körs i något som kallas /bin/bash som skapar databasen:
Kod: Markera allt
#!/bin/bash
# Script to create rrd-file
# 24h with 2,5 min resolution
# 7d with 5 min resolution
# 1y with 10 min resolution
# 20y with 1h resolution
directory="/home/dittnamn/rrddata/"
filename="ute_temp.rrd"
# Check i file already exists
if [ ! -f "$directory$filename" ]
then
# File doesn't exist, create new rrd-file
echo "Creating RRDtool DB for outside temp sensor"
rrdtool create $directory$filename \
--step 150 \
DS:outsidetemp:GAUGE:300:-50:60 \
RRA:AVERAGE:0.5:1:576 \
RRA:AVERAGE:0.5:2:2016 \
RRA:AVERAGE:0.5:4:52560 \
RRA:AVERAGE:0.5:24:175200 \
RRA:MAX:0.5:1:5760 \
RRA:MAX:0.5:2:2016 \
RRA:MAX:0.5:4:52560 \
RRA:MAX:0.5:24:175200 \
RRA:MIN:0.5:1:5760 \
RRA:MIN:0.5:2:2016 \
RRA:MIN:0.5:4:52560 \
RRA:MIN:0.5:24:175200
echo "Done!"
else
echo $directory$filename" already exists, delete it first."
fi
Denna kod sparas till en fil som Du döper till exempelvis create_database.sh och sedan exekverar genom att skriva "sh create_database.sh" alternativt "sudo sh create_database.sh" det senare kör skriptet som superuser? Rätta mig ni som kan.
Nu har man databasen klar och då behövde jag 1. Få ut datan ur Domoticz 2. Kasta in den i min nyskapade RR databas.
Jag fick då hjälp med detta LUA skript (som Du lägger i /home/pi/domoticz/scripts/lua/ och döper till script_device_VALFRITT.lua):
Kod: Markera allt
commandArray = {}
if (devicechanged['Ute']) then
local file = io.open("/home/pi/domoticz/www/ute.txt", "w")
file:write(tonumber(otherdevices_temperature['Ute']))
file:close()
end
return commandArray
Detta LUA script aktiveras alltså varje gång min Device "Ute" som är Oregon sensorn rapporterar en temperatur till Domoticz. Skriptet skriver temperaturen till min fil ute.txt och stänger sedan filen. Detta sker med cirka 1.5-2 minuters intervall beroende på Oregon sensorn antar jag ? Har inte lyckats förstå det ännu men det är troligen nåt intervall som den bestämmer.
Vidare har jag luskat ut hur jag ska få datan från ute.txt in i RR databasen. Man tar och skapar ännu ett /bin/bash skript och döper det till exempelvis /home/dittnamn/update_database.sh
Kod: Markera allt
#!/bin/bash
rrdtool update /home/dittnamn/rrddata/ute_temp.rrd --template outsidetemp N:`head -n 1 </home/pi/domoticz/www/ute.txt`
Skriptet kör ett enkelt kommando mot rrdtool där den uppdaterar DS'en "outsidetemp" med första raden ur ute.txt
Sedan måste vi göra en graf av detta så man har nåt att granska

Jag gjorde då ett nytt skript i /bin/bash som skapar en graf och laddar upp den till min Synology NAS som agerar webbserver här hemma. Detta skript döpte jag till /home/dittnamn/create_graph.sh
Kod: Markera allt
#!/bin/bash
rrdtool graph /home/dittnamn/rrddata/temp_graph.png \
-w 697 -h 287 -a PNG \
--slope-mode \
--start -86400 --end now \
--vertical-label "temperature (°C)" \
DEF:temp1=/home/dittnamn/rrddata/ute_temp.rrd:outsidetemp:AVERAGE \
LINE1:temp1#ff0000:"Utetemperatur - Där du bor" \
LINE1:0#0000FF: \
GPRINT:temp1:LAST:"Senast\:%4.1lf (°C)" \
GPRINT:temp1:AVERAGE:"Medel\:%4.1lf (°C)" \
GPRINT:temp1:MAX:"Max\:%4.1lf (°C)\n" \
sudo -u pi scp /home/dittnamn/rrddata/temp_graph.png root@10.0.1.4:/volume1/web/loggning/temp_graph.png
Förutom allt grafskapande där i början lade jag till en rad som i samma sekund som grafen är skapad skickar upp den till min webbserver som sagt. Jag kör sudo -u för att byta användare i ett skript, i detta fall till "pi" eftersom jag tydligen kör dessa /bin/bash script som root eller SU, hjälp mig att förklara ni som kan! Jag fick hur som, ändra user till pi för att kunna använda protokollet scp och med detta lägga upp filen per automatik. Hur fungerar detta nu då tänker någon, inget lösenord ? Nä jag fick nöta några timmar internet för att få till detta.
Lösningen var att sätta upp en ssh nyckel på min NAS och sedan installera denna nyckel även på raspberryn. På så vis skakar de hand och släpper in pi'n i NAS'en utan lösen. Smutt!
http://www.chainsawonatireswing.com/201 ... -ssh-keys/
Jag hade tänkt förklara det men orkar inte i nuläget, dessutom kommer jag inte ihåg exakt de steg jag fick göra. I korta ordalag skapar men en publik nyckel på mottagande server med ett kommando och ser sedan till att denna nyckel även finns tillgänglig på avsändande server (den som vill logga in utan att leverera ett lösen).
Jag höll nästan på att glömma, de två .sh skripten för att uppdatera databasen och sedan skapa grafen har jag självklart lagt till på 5 minuters intervall med crontab. Läs på om crontab men med kommandot "crontab -e" kommer man in i och redigerar sin crontab fil där Du kommer att behöva specificera vilka skript du vill köra i vilka intervall. Se också till att tjänsten är igång sedan! "/etc/init.d/cron status" ger Dig svaret. Jag gick på en nöt och det var att jag satte en enkel 5:a i början och i min stilla tro då tänkte mig att nu kommer skriptet i fråga köras var femte minut men ack vad jag bedrog mig efter ett antal "nu-lämnar-jag-datorn-i-5-minuter-och-kommer-tillbaka-för-att-se-att-det-fungerat". Tänk va irriterad jag dessutom blev när jag 5 minuter över 19 såg att den utförde kommandot men ej igen 5 minuter senare. Det visade att dumheten slog visheten, jag hade specificerat att den SKULLE uppdatera en gång varje timme, 5 över...svaret var att specificera */5. Då blir det var femte minut.
https://calomel.org/rrdtool.html
Sammanfattningsvis: Domoticz får en temperatur cirkus varannan minut från Oregonsensorn. Den skrivs då varje gång mha LUA skriptet till en txt-fil. .txt filen i sig läses var 5:e minut av ett /bin/bash skript mha crontab och slutligen så skapas en graf och laddas upp var 5:e minut med /bin/bash och crontab även där.
Ge mig nu ris och ros samt tips inför kommande 1-wire-installation här hemma!