Page 2 of 18

Re: Sharing : Afval kalendar in text sensor

Posted: Friday 14 July 2017 15:12
by roblom
Can someone help me using this script but then whti the HVC company?

Iknow it has something to do with

Code: Select all

http://inzamelkalender.hvcgroep.nl/push/calendar?callback=jQuery20204883549400154621_1493985891393&postcode=1671jv&huisnummer=22&huisletter=&toevoeging=&adresid=999999999&tijdstip_push=0&_=1493985891404
Which i know from this topic.
http://www.domoticz.com/forum/viewtopic ... 67&t=17432

Re: Sharing : Afval kalendar in text sensor

Posted: Friday 14 July 2017 16:45
by supergroover
can some one help me with http://www.deafvalapp.nl ?

Code: Select all

http://dataservice.deafvalapp.nl//dataservice/DataServiceServlet?service=OPHAALSCHEMA&land=NL&postcode=6658GT&straatId=0&huisnr=69
Gives me

Code: Select all

GFT;29-12-2017;15-12-2017;01-12-2017;17-11-2017;03-11-2017;20-10-2017;06-10-2017;22-09-2017;08-09-2017;25-08-2017;11-08-2017;28-07-2017;14-07-2017;30-06-2017;16-06-2017;02-06-2017;19-05-2017;05-05-2017;21-04-2017;07-04-2017;24-03-2017;10-03-2017;24-02-2017;10-02-2017;27-01-2017;13-01-2017;01-09-2017;18-08-2017;04-08-2017;21-07-2017;07-07-2017;23-06-2017;09-06-2017;
PAPIER;02-12-2017;04-11-2017;07-10-2017;02-09-2017;05-08-2017;01-07-2017;03-06-2017;06-05-2017;01-04-2017;04-03-2017;04-02-2017;07-01-2017;
PLASTIC;23-12-2017;11-12-2017;27-11-2017;13-11-2017;30-10-2017;16-10-2017;02-10-2017;18-09-2017;04-09-2017;21-08-2017;07-08-2017;24-07-2017;10-07-2017;26-06-2017;12-06-2017;29-05-2017;15-05-2017;01-05-2017;15-04-2017;03-04-2017;20-03-2017;06-03-2017;20-02-2017;06-02-2017;23-01-2017;09-01-2017;
REST;22-12-2017;08-12-2017;24-11-2017;10-11-2017;27-10-2017;13-10-2017;29-09-2017;15-09-2017;01-09-2017;18-08-2017;04-08-2017;21-07-2017;07-07-2017;23-06-2017;09-06-2017;26-05-2017;12-05-2017;28-04-2017;14-04-2017;31-03-2017;17-03-2017;03-03-2017;17-02-2017;03-02-2017;20-01-2017;06-01-2017;

Re: Sharing : Afval kalendar in text sensor

Posted: Monday 31 July 2017 18:13
by roblom
gordonb3 wrote:
roblom wrote:Can someone help me using this script but then whti the HVC company?

Iknow it has something to do with

Code: Select all

http://inzamelkalender.hvcgroep.nl/push/calendar?callback=jQuery20204883549400154621_1493985891393&postcode=1671jv&huisnummer=22&huisletter=&toevoeging=&adresid=999999999&tijdstip_push=0&_=1493985891404
Which i know from this topic.
viewtopic.php?f=67&t=17432
Quite easy by the looks of it. You can reference the Avalex version for extracting the data. The HVC return is in fact much simpler because it has all the data you need in a single call. For next pickup you would want varname[0]['name'] to get the type and varname[0]['dataTime'][0]['date'] for the when.
That's what I thought also. So I did use the Avalex version and tried without any programs knowledge. But after two days of trying to find the right code I quit. The only thing I got was an empty return. It seems that it is to different for me to replicate it to my own situation where in most cases I get someone dome by self learning. So it was double frustrating because it looked easy.

Re: Sharing : Afval kalendar in text sensor

Posted: Monday 31 July 2017 22:15
by roblom
That I already discovered. But could not find the right command to fill the "jret" value. I keep getting the nill value. I think it has something to with the date data because it has several dates in it.

Re: Sharing : Afval kalendar in text sensor

Posted: Thursday 21 September 2017 9:13
by Goldwing1973
Looks like afvalwijzer.nl is down, it only has a DEMO option.
Script doesn't work anymore either.

The site of the city where i live has a "afvalkalender" online, but i'm not experienced enough on implementing it in the script.
Is there anyone that is willing to give it a go?

The URL is http://afvalkalender.alphenaandenrijn.nl/
and a working postalcode and housenumber is 2403SN/122

Re: Sharing : Afval kalendar in text sensor

Posted: Thursday 21 September 2017 21:15
by zicht
Goldwing1973 wrote: Thursday 21 September 2017 9:13 Looks like afvalwijzer.nl is down, it only has a DEMO option.
Script doesn't work anymore either.

The site of the city where i live has a "afvalkalender" online, but i'm not experienced enough on implementing it in the script.
Is there anyone that is willing to give it a go?

The URL is http://afvalkalender.alphenaandenrijn.nl/
and a working postalcode and housenumber is 2403SN/122
just tested --> works over here :
Groente-, fruit- en tuinafval 25 sept
Plastic, Metaal en Drinkpakken 2 okt
Papier en karton 11 okt

Re: Sharing : Afval kalendar in text sensor

Posted: Thursday 21 September 2017 21:27
by Goldwing1973
zicht wrote: Thursday 21 September 2017 21:15
Goldwing1973 wrote: Thursday 21 September 2017 9:13 Looks like afvalwijzer.nl is down, it only has a DEMO option.
Script doesn't work anymore either.

The site of the city where i live has a "afvalkalender" online, but i'm not experienced enough on implementing it in the script.
Is there anyone that is willing to give it a go?

The URL is http://afvalkalender.alphenaandenrijn.nl/
and a working postalcode and housenumber is 2403SN/122
just tested --> works over here :
Groente-, fruit- en tuinafval 25 sept
Plastic, Metaal en Drinkpakken 2 okt
Papier en karton 11 okt

Works? how?
Did you change the URL in the script?? to "commando = 'curl -s http://afvalkalender.alphenaandenrijn.n ... Huisnummer..'/'"?
Tried that here, but i keep seeing "Hello World" in the Dummy text switch.
Could it be because i'm using it on Linux and now Windows?

Re: Sharing : Afval kalendar in text sensor

Posted: Thursday 21 September 2017 22:04
by zicht
Was it working before ?
Do you have curl installed on windows ? (curl.exe in the domoticz directory ?)

The textfield are a bit different on the site, so you have to search on a different string. But the site works fine.
With small adjustment i got the script working also.

try to change

Code: Select all

	result = os.capture(commando) 
to

Code: Select all

	result = os.capture(commando)
		print (result )
	
so you can see the input you read from the site source ?

-----------------------------------------------------------------------------------

you have a couple of unique strings to search for

<a href="/wat/87" title="Papier en karton"><img src="/media/svg/papier_karton.svg" alt="Papier en karton"/>
<i class="date">

<a href="/wat/113" title="Plastic, Metaal en Drinkpakken"><img src="/media/svg/plastic_blik_drank_logo.svg" alt="Plastic, Metaal en Drinkpakken"/>
<i class="date">

<a href="/wat/112" title="Groente-, fruit- en tuinafval"><img src="/media/svg/gft_appel.svg" alt="Groente-, fruit- en tuinafval"/>
<i class="date">

so you can absolute get the values.

Re: Sharing : Afval kalendar in text sensor

Posted: Thursday 21 September 2017 22:54
by Goldwing1973
zicht wrote: Thursday 21 September 2017 22:04 Was it working before ?
Do you have curl installed on windows ? (curl.exe in the domoticz directory ?)

The textfield are a bit different on the site, so you have to search on a different string. But the site works fine.
With small adjustment i got the script working also.

try to change

Code: Select all

	result = os.capture(commando) 
to

Code: Select all

	result = os.capture(commando)
		print (result )
	
so you can see the input you read from the site source ?

-----------------------------------------------------------------------------------

you have a couple of unique strings to search for

<a href="/wat/87" title="Papier en karton"><img src="/media/svg/papier_karton.svg" alt="Papier en karton"/>
<i class="date">

<a href="/wat/113" title="Plastic, Metaal en Drinkpakken"><img src="/media/svg/plastic_blik_drank_logo.svg" alt="Plastic, Metaal en Drinkpakken"/>
<i class="date">

<a href="/wat/112" title="Groente-, fruit- en tuinafval"><img src="/media/svg/gft_appel.svg" alt="Groente-, fruit- en tuinafval"/>
<i class="date">

so you can absolute get the values.
I'm not using windows, my Domoticz setup is running on a NUC with Ubuntu.
I added the "print (result )" in the script, opened the log... and nothing..
All the regular things show in the logs (OpenZwave, Solar-Data) but no Afvalkalender

Re: Sharing : Afval kalendar in text sensor

Posted: Saturday 23 September 2017 19:33
by zicht
gordonb3 wrote: Friday 22 September 2017 10:43 Not a very good site, afvalkalender.nl. It mentions something about participating municipalities, but there's no listing of them anywhere. It appears this site is owned by a large waste processing company that operates under various names in different parts of the country and world. That makes it kind of a gamble whether the site will work for you or go to `demo` mode rather than telling you they don't service your area.

As it stands, it looks like Alphen a/d Rijn drew a new contract with a different company.
Agreed about the site only if you local waiste company is under their holding it works,
but for goldwing it should work, (done a test myself.) So something strange is happening over there.

@goldwing i will try to send you a PM with working code for your city, but need to find the time for doing so

Re: Sharing : Afval kalendar in text sensor

Posted: Saturday 23 September 2017 20:15
by Goldwing1973
zicht wrote: Saturday 23 September 2017 19:33
gordonb3 wrote: Friday 22 September 2017 10:43 Not a very good site, afvalkalender.nl. It mentions something about participating municipalities, but there's no listing of them anywhere. It appears this site is owned by a large waste processing company that operates under various names in different parts of the country and world. That makes it kind of a gamble whether the site will work for you or go to `demo` mode rather than telling you they don't service your area.

As it stands, it looks like Alphen a/d Rijn drew a new contract with a different company.
Agreed about the site only if you local waiste company is under their holding it works,
but for goldwing it should work, (done a test myself.) So something strange is happening over there.

@goldwing i will try to send you a PM with working code for your city, but need to find the time for doing so
Thanks, take your time, i’m in no rush

Re: Sharing : Afval kalendar in text sensor

Posted: Saturday 23 September 2017 20:27
by zicht
Thanks, take your time, i’m in no rush
Basically it is the part where you have to enter your postalcode stops the party.
I need to find out how to get past that landingsite in a smart way.

If they have thought about security it might not be possible at all this way without entering your details manual :shock:
If i juste have visited the site and the cooky or session is placed with you details the script works fine.
But after it expires we have a problem :roll:

note : for privacy reasons i stripped the details from goldwing in the below links and script.

Edit1 :
the url i got by using another site of your city :
http://afvalkalender.alphenaandenrijn.n ... ERIC_CODE>

i just refest and deleted history and that links seems to be correct !
That could be the clue we needed.

Edit2:

Code: Select all

	commando='curl -s http://afvalkalender.alphenaandenrijn.nl/login/<UNIQUENUMERIC_CODE>'
	result=os.capture(commando)
	if string.find(result,"rror") then 
		result="" 
		WriteToFile("Error >>> function 640"..commando,"url")
	end
	print(string.len(result))

	
	-- Beperk string tot infoblock van de site
	local start=string.find(result,'<ul id="ophaaldata">')
	print("start"..tostring(start))
	local eind=string.find(result,'<i>Papier en karton</i></a>',start)
	print("eind"..tostring(eind))
	local nData=string.sub(result, start, eind)
	print(nData)
nData contains the date for 3 different types of waiste.
It is unkown for me how you want to implement... you can split them in any way you want and update 3 diff text devices or make a nice string in one text device.

the print(nDate) above prints the plain HTML code, so it looks a bit odd this way, I put it there to have something to show/debug
Are you able to work with this to make it working in your system ?

Note for others of the same city :
There is a second government site for waiste for you where you can fill in you postal code
If you do it on that site it will redirect you to the site goldwing was using but this time with a unique numeric code in the url for you postal code,
so it lands directly on the waiste page :evil:

Re: Sharing : Afval kalendar in text sensor

Posted: Saturday 23 September 2017 22:15
by Goldwing1973
zicht wrote: Saturday 23 September 2017 20:27
Thanks, take your time, i’m in no rush
Basically it is the part where you have to enter your postalcode stops the party.
I need to find out how to get past that landingsite in a smart way.

If they have thought about security it might not be possible at all this way without entering your details manual :shock:
If i juste have visited the site and the cooky or session is placed with you details the script works fine.
But after it expires we have a problem :roll:

note : for privacy reasons i stripped the details from goldwing in the below links and script.

Edit1 :
the url i got by using another site of your city :
http://afvalkalender.alphenaandenrijn.n ... ERIC_CODE>

i just refest and deleted history and that links seems to be correct !
That could be the clue we needed.

Edit2:

Code: Select all

	commando='curl -s http://afvalkalender.alphenaandenrijn.nl/login/<UNIQUENUMERIC_CODE>'
	result=os.capture(commando)
	if string.find(result,"rror") then 
		result="" 
		WriteToFile("Error >>> function 640"..commando,"url")
	end
	print(string.len(result))

	
	-- Beperk string tot infoblock van de site
	local start=string.find(result,'<ul id="ophaaldata">')
	print("start"..tostring(start))
	local eind=string.find(result,'<i>Papier en karton</i></a>',start)
	print("eind"..tostring(eind))
	local nData=string.sub(result, start, eind)
	print(nData)
nData contains the date for 3 different types of waiste.
It is unkown for me how you want to implement... you can split them in any way you want and update 3 diff text devices or make a nice string in one text device.

the print(nDate) above prints the plain HTML code, so it looks a bit odd this way, I put it there to have something to show/debug
Are you able to work with this to make it working in your system ?

Note for others of the same city :
There is a second government site for waiste for you where you can fill in you postal code
If you do it on that site it will redirect you to the site goldwing was using but this time with a unique numeric code in the url for you postal code,
so it lands directly on the waiste page :evil:
I found the other site, and guess what, If you decrease the unique ID by one, it shows the calendar of my neighbor. (House number on the page decreases).
So we have a working URL that’s independent of a cookie or session ID.

If possible I would like the virtual switch to show what kind of garbage is next in line to be picked up and when.

Re: Sharing : Afval kalendar in text sensor

Posted: Sunday 24 September 2017 0:50
by zicht

Code: Select all

function os.capture(cmd, raw)				-- os.command uitvoeren en resultaat daarvan lezen in string
  local f=assert(io.popen(cmd, 'r'))
  local s=assert(f:read('*a'))
  f:close()
  if raw then return s end
  s=string.gsub(s, '^%s+', '')
  s=string.gsub(s, '%s+$', '')
  s=string.gsub(s, '[\n\r]+', ' ')
  
	
    end
  return s
end

Code: Select all

	
	commando='curl -s http://afvalkalender.alphenaandenrijn.nl/login/<youruniquecode>'
	result=os.capture(commando)
	if string.find(result,"rror") then 
		result="" 
		WriteToFile("Error >>> function 640"..commando,"url")
	end
	-- Beperk string tot infoblock van de site
	local start=string.find(result,'<ul id="ophaaldata">')
	local eind=string.find(result,'<i>Papier en karton</i></a>',start)
	local nData=string.sub(result, start, eind)
	nData=nData:gsub('%W',' ') nData=nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
	w,x=string.find(nData,"Groente fruit en tuinafval i class date")
	y,z=string.find(nData," i i ",x)
	Groente=string.sub(nData,x+1,y)
	print("Groente,fruit & tuin"..Groente)
	w,x=string.find(nData,"Metaal en Drinkpakken i class date")
	y,z=string.find(nData," i i ",x)
	Metaal=string.sub(nData,x+1,y)
	print("Metaal & Drinkpakken "..Metaal)
	w,x=string.find(nData,"Papier en karton i class date")
	y,z=string.find(nData," i",x)
	Papier=string.sub(nData,x+1,y)
	print("Papier & karton "..Papier)
	
The above create 3 strings and prints them for the 3 types of waiste collection.
The function needs to be available and can be in the same time script as your waiste script.

You only have to put the strings in a text device any way you would like. All are small text so it would fit normally.
So you can add Something like at the end :

Code: Select all

commandArray[#commandArray + 1]={['UpdateDevice']='<YOUR_TEXT_IDX'..'|0|'..Groente.." "..Metaal.." "..Papier}
I think it is not nice to purge the page every minute so i would do it once a day as that would fit the task .
Hint : time = os.date("*t") if (time.hour==7 or time.hour==19) and time.min==0 then .... etc

For today i am done and going to hit my pillow ;)

p.s. I am not a coder at all, so if someone can optimize or has a better solution feel free to teach me "how to" :P

Re: Sharing : Afval kalendar in text sensor

Posted: Wednesday 27 September 2017 20:25
by Goldwing1973
zicht wrote: Sunday 24 September 2017 0:50

Code: Select all

function os.capture(cmd, raw)				-- os.command uitvoeren en resultaat daarvan lezen in string
  local f=assert(io.popen(cmd, 'r'))
  local s=assert(f:read('*a'))
  f:close()
  if raw then return s end
  s=string.gsub(s, '^%s+', '')
  s=string.gsub(s, '%s+$', '')
  s=string.gsub(s, '[\n\r]+', ' ')
  
	
    end
  return s
end

Code: Select all

	
	commando='curl -s http://afvalkalender.alphenaandenrijn.nl/login/<youruniquecode>'
	result=os.capture(commando)
	if string.find(result,"rror") then 
		result="" 
		WriteToFile("Error >>> function 640"..commando,"url")
	end
	-- Beperk string tot infoblock van de site
	local start=string.find(result,'<ul id="ophaaldata">')
	local eind=string.find(result,'<i>Papier en karton</i></a>',start)
	local nData=string.sub(result, start, eind)
	nData=nData:gsub('%W',' ') nData=nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
	w,x=string.find(nData,"Groente fruit en tuinafval i class date")
	y,z=string.find(nData," i i ",x)
	Groente=string.sub(nData,x+1,y)
	print("Groente,fruit & tuin"..Groente)
	w,x=string.find(nData,"Metaal en Drinkpakken i class date")
	y,z=string.find(nData," i i ",x)
	Metaal=string.sub(nData,x+1,y)
	print("Metaal & Drinkpakken "..Metaal)
	w,x=string.find(nData,"Papier en karton i class date")
	y,z=string.find(nData," i",x)
	Papier=string.sub(nData,x+1,y)
	print("Papier & karton "..Papier)
	
The above create 3 strings and prints them for the 3 types of waiste collection.
The function needs to be available and can be in the same time script as your waiste script.

You only have to put the strings in a text device any way you would like. All are small text so it would fit normally.
So you can add Something like at the end :

Code: Select all

commandArray[#commandArray + 1]={['UpdateDevice']='<YOUR_TEXT_IDX'..'|0|'..Groente.." "..Metaal.." "..Papier}
I think it is not nice to purge the page every minute so i would do it once a day as that would fit the task .
Hint : time = os.date("*t") if (time.hour==7 or time.hour==19) and time.min==0 then .... etc

For today i am done and going to hit my pillow ;)

p.s. I am not a coder at all, so if someone can optimize or has a better solution feel free to teach me "how to" :P

Well, i'm unable to get it working.. :cry:
Error: EventSystem: in Afvalkalender: [string "commandArray = {}..."]:15: expected near 'end'

Re: Sharing : Afval kalendar in text sensor

Posted: Thursday 28 September 2017 16:55
by zicht
Sorry for the late reply
Hmmzz
Can you post the code exactly as you have implemnten her ?
You can mask for privacy or use PM is you want.
It is working her ( have a running copy present ) so it must be something small.

Re: Sharing : Afval kalendar in text sensor

Posted: Friday 29 September 2017 23:32
by Goldwing1973
This is what i got

Code: Select all

commandArray = {}

function os.capture(cmd, raw)				-- os.command uitvoeren en resultaat daarvan lezen in string
  local f=assert(io.popen(cmd, 'r'))
  local s=assert(f:read('*a'))
  f:close()
  if raw then return s end
  s=string.gsub(s, '^%s+', '')
  s=string.gsub(s, '%s+$', '')
  s=string.gsub(s, '[\n\r]+', ' ')
  
	
    end
  return s
end


function Afval() 
    -- haal data op van site
	
	commando='curl -s http://afvalkalender.alphenaandenrijn.nl/login/0484200000000000'
	result=os.capture(commando)
	if string.find(result,"rror") then 
		result="" 
		WriteToFile("Error >>> function 640"..commando,"url")
	end
	-- Beperk string tot infoblock van de site
	local start=string.find(result,'<ul id="ophaaldata">')
	local eind=string.find(result,'<i>Papier en karton</i></a>',start)
	local nData=string.sub(result, start, eind)
	nData=nData:gsub('%W',' ') nData=nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
	w,x=string.find(nData,"Groente fruit en tuinafval i class date")
	y,z=string.find(nData," i i ",x)
	Groente=string.sub(nData,x+1,y)
	print("Groente,fruit & tuin"..Groente)
	w,x=string.find(nData,"Metaal en Drinkpakken i class date")
	y,z=string.find(nData," i i ",x)
	Metaal=string.sub(nData,x+1,y)
	print("Metaal & Drinkpakken "..Metaal)
	w,x=string.find(nData,"Papier en karton i class date")
	y,z=string.find(nData," i",x)
	Papier=string.sub(nData,x+1,y)
	print("Papier & karton "..Papier)
	


    -- Haal uit het blok de data die nodig is
   local test = " " i=0
   while i<20 and string.find(nData,'>') and string.find(nData,'<',e)  do
      s= string.find(nData,'>') +1  e= string.find(nData,'<',s) -1  l= string.len(nData)
      test = test .. string.sub(nData, s, e)
      nData = string.sub(nData, e, l) 
      i = i+1
   end
   nData = test
   -- strip onnodige troep (die er al het goed is niet is , just to be sure)
   nData = nData:gsub('%W',' ') nData = nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
   return nData
end

time = os.date("*t")
-- Only want to be notified on the evenning the garbage can needs to be put outside.
if time.hour==18 and time.min<=1 then 
   print('Afval module')
   local IDX = '525'         --your IDX
   local tmp = Afval()
   if otherdevices['Afval Kalender'] ~= tmp then
      commandArray['UpdateDevice'] = IDX..'|0|'..tmp
   end
   --Added to sent notification, on Tuesday (sunday=1)
   if os.date("*t").wday==3 then
      commandArray['SendNotification']='Garbage can#'..tmp
   end
end
return commandArray

Re: Sharing : Afval kalendar in text sensor

Posted: Saturday 30 September 2017 23:49
by zicht
Er zit n end te veel in in het begin, daardoor loopt het vast...
Als die er uit is loopt ie prima hier :)

Code: Select all

commandArray = {}

function os.capture(cmd, raw)				-- os.command uitvoeren en resultaat daarvan lezen in string
  local f=assert(io.popen(cmd, 'r'))
  local s=assert(f:read('*a'))
  f:close()
  if raw then return s end
  s=string.gsub(s, '^%s+', '')
  s=string.gsub(s, '%s+$', '')
  s=string.gsub(s, '[\n\r]+', ' ')
  return s
end


function Afval() 
    -- haal data op van site
	commando='curl -s http://afvalkalender.alphenaandenrijn.nl/login/0484200000000000'
	result=os.capture(commando)
	if string.find(result,"rror") then 
		result="" 
		WriteToFile("Error >>> function 640"..commando,"url")
	end
	-- Beperk string tot infoblock van de site
	local start=string.find(result,'<ul id="ophaaldata">')
	local eind=string.find(result,'<i>Papier en karton</i></a>',start)
	local nData=string.sub(result, start, eind)
	nData=nData:gsub('%W',' ') nData=nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
	w,x=string.find(nData,"Groente fruit en tuinafval i class date")
	y,z=string.find(nData," i i ",x)
	Groente=string.sub(nData,x+1,y)
	print("Groente,fruit & tuin"..Groente)
	w,x=string.find(nData,"Metaal en Drinkpakken i class date")
	y,z=string.find(nData," i i ",x)
	Metaal=string.sub(nData,x+1,y)
	print("Metaal & Drinkpakken "..Metaal)
	w,x=string.find(nData,"Papier en karton i class date")
	y,z=string.find(nData," i",x)
	Papier=string.sub(nData,x+1,y)
	print("Papier & karton "..Papier)

    -- Haal uit het blok de data die nodig is
   local test = " " i=0
   while i<20 and string.find(nData,'>') and string.find(nData,'<',e)  do
      s= string.find(nData,'>') +1  e= string.find(nData,'<',s) -1  l= string.len(nData)
      test = test .. string.sub(nData, s, e)
      nData = string.sub(nData, e, l) 
      i = i+1
   end
   nData = test
   -- strip onnodige troep (die er al het goed is niet is , just to be sure)
   nData = nData:gsub('%W',' ') nData = nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
   return nData
end

time = os.date("*t")
-- Only want to be notified on the evenning the garbage can needs to be put outside.
if time.hour==18 and time.min<=1 then 
   print('Afval module')
   local IDX = '525'         --your IDX
   local tmp = Afval()
   if otherdevices['Afval Kalender'] ~= tmp then
      commandArray['UpdateDevice'] = IDX..'|0|'..tmp
   end
   --Added to sent notification, on Tuesday (sunday=1)
   if os.date("*t").wday==3 then
      commandArray['SendNotification']='Garbage can#'..tmp
   end
end
return commandArray

Re: Sharing : Afval kalendar in text sensor

Posted: Sunday 01 October 2017 0:51
by Goldwing1973
zicht wrote: Saturday 30 September 2017 23:49 Er zit n end te veel in in het begin, daardoor loopt het vast...
Als die er uit is loopt ie prima hier :)

Code: Select all

commandArray = {}

function os.capture(cmd, raw)				-- os.command uitvoeren en resultaat daarvan lezen in string
  local f=assert(io.popen(cmd, 'r'))
  local s=assert(f:read('*a'))
  f:close()
  if raw then return s end
  s=string.gsub(s, '^%s+', '')
  s=string.gsub(s, '%s+$', '')
  s=string.gsub(s, '[\n\r]+', ' ')
  return s
end


function Afval() 
    -- haal data op van site
	commando='curl -s http://afvalkalender.alphenaandenrijn.nl/login/0484200000000000'
	result=os.capture(commando)
	if string.find(result,"rror") then 
		result="" 
		WriteToFile("Error >>> function 640"..commando,"url")
	end
	-- Beperk string tot infoblock van de site
	local start=string.find(result,'<ul id="ophaaldata">')
	local eind=string.find(result,'<i>Papier en karton</i></a>',start)
	local nData=string.sub(result, start, eind)
	nData=nData:gsub('%W',' ') nData=nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
	w,x=string.find(nData,"Groente fruit en tuinafval i class date")
	y,z=string.find(nData," i i ",x)
	Groente=string.sub(nData,x+1,y)
	print("Groente,fruit & tuin"..Groente)
	w,x=string.find(nData,"Metaal en Drinkpakken i class date")
	y,z=string.find(nData," i i ",x)
	Metaal=string.sub(nData,x+1,y)
	print("Metaal & Drinkpakken "..Metaal)
	w,x=string.find(nData,"Papier en karton i class date")
	y,z=string.find(nData," i",x)
	Papier=string.sub(nData,x+1,y)
	print("Papier & karton "..Papier)

    -- Haal uit het blok de data die nodig is
   local test = " " i=0
   while i<20 and string.find(nData,'>') and string.find(nData,'<',e)  do
      s= string.find(nData,'>') +1  e= string.find(nData,'<',s) -1  l= string.len(nData)
      test = test .. string.sub(nData, s, e)
      nData = string.sub(nData, e, l) 
      i = i+1
   end
   nData = test
   -- strip onnodige troep (die er al het goed is niet is , just to be sure)
   nData = nData:gsub('%W',' ') nData = nData:match("^%s*(.-)%s*$") nData=nData:gsub("%s+", " ")
   return nData
end

time = os.date("*t")
-- Only want to be notified on the evenning the garbage can needs to be put outside.
if time.hour==18 and time.min<=1 then 
   print('Afval module')
   local IDX = '525'         --your IDX
   local tmp = Afval()
   if otherdevices['Afval Kalender'] ~= tmp then
      commandArray['UpdateDevice'] = IDX..'|0|'..tmp
   end
   --Added to sent notification, on Tuesday (sunday=1)
   if os.date("*t").wday==3 then
      commandArray['SendNotification']='Garbage can#'..tmp
   end
end
return commandArray
Thanks, i copy'd/pasted your code and the errors are gone, now i have to wait until tomorrow night for the "Hello World" to be replaced with the garbage being collected next monday.

Re: Sharing : Afval kalendar in text sensor

Posted: Sunday 01 October 2017 9:26
by zicht
Thanks, i copy'd/pasted your code and the errors are gone, now i have to wait until tomorrow night for the "Hello World" to be replaced with the garbage being collected next monday.
Your welcome.
Your code will runt twice at 18h00 and 18h01 :) Off course if you want to test you can change 18 to the next hour.
Well done !