Gå til innhold

Domoticz tråden - For oss som bruker Domoticz


Anbefalte innlegg

Videoannonse
Annonse

Litt rotete script, men det skal fungere :)
Du kan finne lat og long her http://www.latlong.net/

 

Forklaring:

Lag en virtual device av valgfri type.

Skriv inn navnet på denne på linje 30 (bytt ut ETA Work)

Skriv inn idx på linje 71

Hjemmekoordinater på linje 73 og 74

Jobbkoordinater på linje 76 og 77

 

Edit:

Har tatt det meste fra dette scriptet http://www.domoticz.com/forum/viewtopic.php?t=7777&p=63041#p63041
 

 

--domoticz/scripts/lua/script_time_waze.lua
------------- Begin time functions -------------

function timedifference_lastupdate_homework (s)
	if s == nil then 
		print('Error: Could not get lastupdate from device')
		difference = 1000 --value have to be larger than timeout. new virtual devices don't get corrent lastupdate value, skips the first check
		return difference
	end
	year = string.sub(s, 1, 4)
	month = string.sub(s, 6, 7)
	day = string.sub(s, 9, 10)
	hour = string.sub(s, 12, 13)
	minutes = string.sub(s, 15, 16)
	seconds = string.sub(s, 18, 19)
	t1 = os.time()
	t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
	difference = os.difftime (t1, t2)
	return difference
end

------------- End time functions -------------


------------- Begin local variables -------------

-- Debug variables:

timeout                = 300 
difference_homework    = timedifference_lastupdate_homework(otherdevices_lastupdate['ETA Work']) --change to the name of the virtual device

------------- End local variables -------------

------------- Begin code -------------

commandArray = {}

if (difference_homework > timeout)
then

function traveltime(departx,departy,arrivex,arrivey)
   --get route from WAZE--
   local waze=assert(io.popen('curl "https://www.waze.com/row-RoutingManager/routingRequest?from=x%3A'..departx..'+y%3A'..departy..'&to=x%3A'..arrivex..'+y%3A'..arrivey..'&returnJSON=true&returnGeometries=true&returnInstructions=true&timeout=60000&nPaths=1&clientVersion=4.0.0&options=AVOID_TRAILS%3At%2CALLOW_UTURNS"'))
   local trajet = waze:read('*all')
   waze:close()
   
   local jsonTrajet = json:decode(trajet)

   --Get major road from JSON
   routeName = jsonTrajet['response']['routeName']
   --Get route steps from JSON info
   route = jsonTrajet['response']['results']

   --Calculate the total time by adding the time of all sections
   routeTotalTimeSec = 0
   for response,results in pairs(route) do
      routeTotalTimeSec = routeTotalTimeSec + results['crossTime']
   end

   --translate the number of seconds to minutes
   routeTotalTimeMin = routeTotalTimeSec/60-((routeTotalTimeSec%60)/60)

   return routeTotalTimeMin
end

--import JSON addin (download from http://regex.info/code/JSON.lua)
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()

-- Update these variables ---------------
--idx of virtual device for capturing the travel minutes
idxhomework = '81'

departy="59.913082" --lat
departx="10.741285" --long

arrivey="59.434091" --lat
arrivex="10.658383" --long

-- get travel time
homework=traveltime(departx,departy,arrivex,arrivey)


 
 commandArray[1] = {['UpdateDevice'] = idxhomework .. '|0|' .. homework}


end

------------- End code -------------

return commandArray
 

 

 

Endret av Rydin
Lenke til kommentar
Gjest Slettet-A7VIlhBsZy

Jeg har laget et lua-script som henter inn prisen på bensin og diesel fra ST1 i domoticz. Det finnes dessverre ingen virtual device som passer bra til priser, så jeg bruker prosent device.

Det ser ut som alt fungerer som det skal, men det er første gang jeg har programmert noe i lua så det kan være at noe kunne vært gjort bedre.

 

attachicon.gifbensindiesel.PNG

 

Kode i spoiler

 

 

--domoticz/scripts/lua/script_time_st1.lua

--import JSON addin (download from http://regex.info/code/JSON.lua)
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()

------------- Begin local variables -------------

--These are the avaiable ST1 stations
-- 46146 = St1 Arendal
-- 46124 = St1 Asker
-- 46101 = St1 Askim
-- 46141 = St1 Oslo Biltilsynet
-- 46139 = St1 Oslo Breivollveien
-- 46109 = St1 Drammen Holmensgt
-- 46119 = St1 Drammen Tollbugata
-- 46118 = St1 Fredrikstad
-- 46148 = St1 Kongsberg
-- 46135 = St1 Gjelleråsen
-- 46140 = St1 Gjøvik
-- 46133 = St1 Hamar
-- 46145 = St1 Herøya
-- 46130 = St1 Holmestrand
-- 46121 = St1 Horten
-- 46114 = St1 Hønefoss
-- 46136 = St1 Høvik
-- 46137 = St1 Oslo Jerikoveien
-- 46147 = St1 Jessheim
-- 46128 = St1 Oslo Kirkeveien
-- 46113 = St1 Kløfta
-- 46106 = St1 Larvik  Nansetgata
-- 46138 = St1 Larvik  Tjøllingvn
-- 46105 = St1 Mosseporten
-- 46112 = St1 Varnaveien
-- 46110 = St1 Nittedal
-- 46122 = St1 Notodden
-- 46125 = St1 Oppegård
-- 46116 = St1 Vallermyrvn
-- 46104 = St1 Rakkestad
-- 46143 = St1 Regnbuen
-- 46103 = St1 Rolvsøy
-- 46142 = St1 Rortunet
-- 46131 = St1 Sandefjord
-- 46129 = St1 Skien
-- 46120 = St1 Oslo Sporveisgata
-- 46123 = St1 Tønsberg
-- 46127 = St1 Åshaugveien, Ås
-- 46111 = St1 Vestby

--Change variable to match station
local myStation 	= '46111'

--idx and name of virtual devices for displaying fuel price (ex Percentage). Put false if not in use
local virtualB95 	= 'Bensin'
local idxB95 		= false
local virtualDiesel = 'Diesel'
local idxDiesel 	= 80

------------- End local variables -------------


------------- Begin code -------------
	
commandArray = {}
	
	--get prices.js from ST1--
	local st1=assert(io.popen('curl "http://st1.notch.no/prices.js"'))
	local pricesvar = st1:read('*all')
	st1:close()
	
	--remove var = prices from file
	local prices = string.sub(pricesvar, 15, -3)
	--make a readable table
	local jsonPrices = json:decode(prices)
	
	--get prices from correct station
	for i,v in pairs(jsonPrices['stations']) do		
		if jsonPrices['stations'][i]['stationId'] == myStation then
			priceB95 = jsonPrices['stations'][i]['b95']
			priceDiesel = jsonPrices['stations'][i]['diesel']
			--priceTime = jsonPrices['stations'][i]['time']
		end
	end
	
	--Replace "," with "."
	priceB95 = string.gsub(priceB95, ",", ".", 1)
	priceDiesel = string.gsub(priceDiesel, ",", ".", 1)
	
	--update the virtual devices
	if idxDiesel ~= false then
		if priceDiesel ~= otherdevices_svalues[virtualDiesel] then
			print('Diesel new price: ' ..priceDiesel)
			commandArray[1] = {['UpdateDevice'] = idxDiesel .. '|0|' .. priceDiesel}
		end
	end
	
	if idxB95 ~= false then
		if priceB95 ~= otherdevices_svalues[virtualB95] then
			print('B95 new price: ' ..priceB95)
			commandArray[2] = {['UpdateDevice'] = idxB95 .. '|0|' .. priceB95}
		end
	end
------------- End code -------------

return commandArray

 

Mine counters er Bar - like teit det (siden det står Bar i hjørnet).

 

Er dessverre noen kjipe "mangler" rundt sensor-type i Domoticz, valgfri "multi-sensor" støtte, mangler en ren integer-sensor, en "fornuftig" lengesensor (Foruten visibility (som låser deg til maks 10 km, eller noe), og "range" (som bruker og viser deg verdien i centimeter).) osv...

Lenke til kommentar

Sliter litt med det waze scriptet, får dette i loggen:

2016-03-06 15:15:12.463 Error: EventSystem: in Waze: Hjem-Jobb: [string "--domoticz/scripts/lua/script_time_waze.lua ..."]:67: attempt to call a nil value
Lenke til kommentar

hmm.. sikker på at filen ligger i /home/pi/domoticz/scripts/lua/JSON.lua ?

Det er forskjell på store og små bokstaver. Så enten må filen hete JSON.lua, eller du kan endre til json.lua i scriptet hvis det er det filen heter.

Lenke til kommentar

Aha! Da bytter du ut /home/pi/domoticz/scripts/lua/JSON.lua med /home/flemmingss/domoticz/scripts/lua/JSON.lua

aha ;)

Hadde jeg satt opp domoticz på nytt hadde jeg kalt brukeren min for "pi". Gjort er gjort

 

Virker nå

Hva sslags dummy bruker du?

Endret av Evelen!
Lenke til kommentar

Flere som har problemer med ustabilitet i de siste beta-ene?

Får denne feilmeldingen, og domoticz er enten offline, eller helt uten enheter, restarter service og alt er ok.

2016-03-07_1928.png

Domoticz V3.4909 atm

Endret av Evelen!
Lenke til kommentar

Ser ut som du ikke har det nyeste "updatebeta" scriptet og at du kjører en eldre modell enn RPI 2

 

Bruk dette:

#!/bin/sh

# This script can be used to upgrade to the latest beta version

lowercase(){
    echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
}

OS=`lowercase \`uname -s\``
MACH=`uname -m`
if [ ${MACH} = "armv6l" ]
then
 MACH="armv7l"
fi

echo "Updating to latest beta version..."
echo "Please Standby..."
wget -O domoticz_beta.tgz "http://www.domoticz.com/download.php?channel=beta&type=release&system=${OS}&machine=${MACH}"

exit
tar xvfz domoticz_beta.tgz
rm domoticz_beta.tgz
echo "Restarting Domoticz... (please standby...)"
sudo service domoticz.sh restart

Eller manuelt kjør disse stegene:

cd ~/domoticz
wget -O domoticz_beta.tgz "http://www.domoticz.com/download.php?channel=beta&type=release&system=linux&machine=armv7l"
tar xvfz domoticz_beta.tgz
rm domoticz_beta.tgz
sudo service domoticz.sh restart

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...