RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

I detta forum hör diskussioner gällande teknik i största allmänhet och hemautomation i synnerhet hemma.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
grelle
Gillar hemautomation
Inlägg: 39
Blev medlem: 08 dec 2013, 00:13
Ort: Östersund

RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av grelle »

Kan jag logga temperaturer (från RfxTrx433'n) med hjälp av RRDtool samtidigt som jag använder Domoticz tillsammans med min RfxTrx433 för att styra mina brytare ? Eller blir det konflikt...
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1246
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av Plutonium »

Det är inga konstigheter. Hur har du tänkt att RRDtool ska läsa av dina temperaturer från domoticz?
Skapa ett lua skript i domoticz/script/lua mappen som tar temperaturen och lägger den i en txt fil. Varje gång domoticz läser av temperaturen uppdateras txt filen. Sen gör du ett skript med rrd som läser av det och gör en graf åt dig, kort förklarat. Så det är inga konstigheter.
http://essunga.org
Moderator - Temperatur.nu
grelle
Gillar hemautomation
Inlägg: 39
Blev medlem: 08 dec 2013, 00:13
Ort: Östersund

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av grelle »

Låter bra! Är i startgroparna och försöker läsa in mig på vilket/vilka system jag ska välja. Har således ingen djup kunskap om ffa programmeringen men känner att jag vill välja rätt uppsättning från början. Anledningen till att jag frågar är att Domoticz verkar i nuläget inte spara högre upplösning än 5 min. Begränsar det också möjligheten att läsa ur data mha LUA script till 5 min?

Samtidigt frågar jag mig om det saknade fulla stödet i Domoticz för 1-wire också skulle ge mig problem i framtiden.

Så innan jag ger mig in på Domoticz vill jag veta om jag kan skriva temperaturer, fuktighet och exempelvis elförbrukning till en RRD databas utan begränsning trots att jag använder Domoticz på samma maskin (RPI + RfxTrx433). Detta var mer än förklaring över hur jag tänker, tolkar ditt första svar som att jag borde kunna få detta att fungera.
filiphag
Wannabe
Inlägg: 9
Blev medlem: 13 sep 2013, 11:22
Ort: Skurup

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av filiphag »

Du kan göra ett script som anropas varje gång domoticz tar emot ett värde från RFXCOM det scriptet kan spara det till rrd databasen. På så sätt slipper du 5min begränsningen i domoticz.

Sent from my Nexus 4 using Tapatalk
grelle
Gillar hemautomation
Inlägg: 39
Blev medlem: 08 dec 2013, 00:13
Ort: Östersund

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av grelle »

Har så smått börjat med ett lua script som läser ur värdet när det uppdateras i Domoticz.

Kod: Markera allt

commandArray = {}
if (devicechanged['Ute']) then
        local file = io.open("/home/pi/domoticz/www/ute.txt", "w")
        file:write("Ute,")
        file:write(tonumber(otherdevices_temperature['Ute']))
        file:write(",")
        file:write(otherdevices_lastupdate['Ute'])
        file:close()
end
return commandArray
Får på så vis ut namnet på min tempgivare (namngiven av mig själv), temp samt datum och tid till en txt fil. Funderar på några saker dock, om jag i framtiden ska läsa ur säg 15 temp och några fuktgivare, kan/är det bäst att få dessa skrivna till samma fil eller ska var och en ha varsin fil ?

Vidare, Domoticz nämner "last seen" om tempgivaren jag använder för tillfället vilken är en Oregon trådlös sändare, den verkar inte följa ett fast intervall, strax över minuten noterar jag. Är detta ett intervall som sändaren i sig sätter genom att skicka signal själv eller är det när Domoticz väljer att fråga (notera att jag inte kan basteorin kring oregon och trådlösa sändare).
grelle
Gillar hemautomation
Inlägg: 39
Blev medlem: 08 dec 2013, 00:13
Ort: Östersund

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av grelle »

Plutonium skrev:Det är inga konstigheter. Hur har du tänkt att RRDtool ska läsa av dina temperaturer från domoticz?
Skapa ett lua skript i domoticz/script/lua mappen som tar temperaturen och lägger den i en txt fil. Varje gång domoticz läser av temperaturen uppdateras txt filen. Sen gör du ett skript med rrd som läser av det och gör en graf åt dig, kort förklarat. Så det är inga konstigheter.
Ok, nu kliar det i fingrarna och jag måste få någon ordning på detta. Var dag som inte elförbrukningen loggas är en förlorad elförbrukningsloggningsdag! :) Du skriver plutonium att man kan läsa av domoticz värdena till en txt fil. Det har jag med lua lyckats med, en Oregonsensor (trådlös). Har ännu ej lyckats skriva nåt RRD script som i sin tur läser in det till databasen. Några frågor på detta. När jag i framtiden har 4 trådlösa och 10 1-wire sensorer, ska jag läsa alla i samma lua script till samma txt fil på givet intervall med crontab, låt oss säga 2 minutersintervall, eller ska jag läsa var och en i varsin txt fil etc ? Ge mig en spark i rätt riktning iaf så får jag försöka hitta lösningen.
filiphag skrev:Du kan göra ett script som anropas varje gång domoticz tar emot ett värde från RFXCOM det scriptet kan spara det till rrd databasen. På så sätt slipper du 5min begränsningen i domoticz.

Sent from my Nexus 4 using Tapatalk
I vilket språk och eller vart hur när ska jag göra scriptet :) ? Jag tänker mig att slopa "när domoticz tar emot ett nytt värde" till fördel för var annan minut eller så, eftersom jag antar att vid 1-wire avläsning måste man specificera intervall alt. låta ett script gå på crontab med specade intervall. Hur funkar intervallen i domoticz med 1-wire ? Mina Oregonsensorer på trådlös våg verkar sända olika, 1-2 minuter ungefär mellan uppdateringarna.
grelle
Gillar hemautomation
Inlägg: 39
Blev medlem: 08 dec 2013, 00:13
Ort: Östersund

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av grelle »

I brist på andra svar tar jag och svarar mig själv efter lite nötande här hemma 8) 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 8) 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!
Senast redigerad av grelle den 05 jan 2014, 16:13, redigerad totalt 2 gång.
PatrikN78
Tar hemautomation på allvar
Inlägg: 99
Blev medlem: 24 dec 2011, 16:24
Ort: Jämjö

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av PatrikN78 »

Bra jobbat!
Användarvisningsbild
Loranga
Tar hemautomation på allvar
Inlägg: 119
Blev medlem: 06 sep 2010, 15:35
Ort: Östersund

Re: RRDtool och Domoticz samtidigt - Raspberry Pi/RfxTrx433

Inlägg av Loranga »

Perfekt!
Precis vad jag är ute efter
Skriv svar