

Moderators: leecollings, remb0
And that's it, really!pvangorp wrote: ↑Monday 30 October 2017 4:32 I created a test environment for your situation.
As you can see in your dump something goes wrong!!!
I looked into it and ¶m is translated wrong by Domoticz. (type=command¶m=udevice)Code: Select all
2017-10-13 21:29:06.049 LUA: Water usage is still 173.005m3 2017-10-13 21:29:06.050 LUA: wget http://192.168.1.94:8080/json.htm?type=command¶m=udevice&idx=157&svalue=173005 -O /dev/null 2017-10-13 21:29:06.067 EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_Watermeter.lua
Change the order of the url parameters and use:and it will work.Code: Select all
json.htm?param=udevice&type=command&idx=......
Sure, that one will work fine if using 5V as the HV level but not sure if it's spec'd for up to 10V like the Adafruit one is in case anybody is using a higher voltage for the sensor (it is after all spec'd for 6V+ operation). Either way, I'd much rather be doing level conversion with a FET.pvangorp wrote: ↑Monday 30 October 2017 15:03 I used a zener because I had one. I mentioned a logic level converter. They are even cheaper https://www.tinytronics.nl/shop/nl/span ... arch=Level
Code: Select all
commandArray = {}
-- Water usage
-- Retrieve value from water meter device:
sWaterUsage = otherdevices_svalues['Watermeter']
-- To have a better readable format, divide number by 1000:
sWaterUsagePrint = tonumber(sWaterUsage / 1000);
-- calculation is done with the unmodified water value
sWaterUsage = tonumber(sWaterUsage);
-- For Debuging
-- print("Water usage until now is " .. sWaterUsagePrint .. "m3 ")
-- print('GPIO Watermeter = '..otherdevices['Watermeter GPIO'])
function timedifference(s)
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
if (devicechanged['Watermeter GPIO'] == 'Off')
then
sWaterUsageTot = (sWaterUsage + 1)
print("Water usage is set to " .. sWaterUsageTot / 1000 .. "m3 ");
print('wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue='..sWaterUsageTot..' -O /dev/null')
commandArray['UpdateDevice'] = '6|0|'..sWaterUsageTot..''
else
-- Keep a live device
if (timedifference(otherdevices_lastupdate["Watermeter"]) > 300)
then
print("Water usage is still " .. sWaterUsage / 1000 .. "m3 ");
commandArray['UpdateDevice'] = '6|0|'..sWaterUsage..''
print('wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue='..sWaterUsage..' -O /dev/null')
end
end
return commandArray
Code: Select all
2017-11-14 18:21:39.345 LUA: wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue=71219 -O /dev/null
2017-11-14 18:21:39.351 EventSystem: Script event triggered: Watermeter
2017-11-14 18:21:45.026 Sysfs GPIO: gpio21 new state = on
2017-11-14 18:21:45.037 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:21:49.635 Sysfs GPIO: gpio21 new state = off
2017-11-14 18:21:49.646 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:21:49.651 LUA: Water usage is set to 71.22m3
2017-11-14 18:21:49.651 LUA: wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue=71220 -O /dev/null
2017-11-14 18:21:49.658 EventSystem: Script event triggered: Watermeter
2017-11-14 18:21:55.375 Sysfs GPIO: gpio21 new state = on
2017-11-14 18:21:55.388 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:21:59.931 Sysfs GPIO: gpio21 new state = off
2017-11-14 18:21:59.944 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:21:59.948 LUA: Water usage is set to 71.221m3
2017-11-14 18:21:59.948 LUA: wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue=71221 -O /dev/null
2017-11-14 18:21:59.955 EventSystem: Script event triggered: Watermeter
2017-11-14 18:22:05.678 Sysfs GPIO: gpio21 new state = on
2017-11-14 18:22:05.689 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:10.240 Sysfs GPIO: gpio21 new state = off
2017-11-14 18:22:10.251 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:10.256 LUA: Water usage is set to 71.222m3
2017-11-14 18:22:10.256 LUA: wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue=71222 -O /dev/null
2017-11-14 18:22:10.262 EventSystem: Script event triggered: Watermeter
2017-11-14 18:22:16.011 Sysfs GPIO: gpio21 new state = on
2017-11-14 18:22:16.027 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:20.862 Sysfs GPIO: gpio21 new state = off
2017-11-14 18:22:20.873 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:20.878 LUA: Water usage is set to 71.223m3
2017-11-14 18:22:20.879 LUA: wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue=71223 -O /dev/null
2017-11-14 18:22:20.885 EventSystem: Script event triggered: Watermeter
2017-11-14 18:22:27.166 Sysfs GPIO: gpio21 new state = on
2017-11-14 18:22:27.182 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:32.232 Sysfs GPIO: gpio21 new state = off
2017-11-14 18:22:32.243 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:32.248 LUA: Water usage is set to 71.224m3
2017-11-14 18:22:32.248 LUA: wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue=71224 -O /dev/null
2017-11-14 18:22:32.256 EventSystem: Script event triggered: Watermeter
2017-11-14 18:22:38.662 Sysfs GPIO: gpio21 new state = on
2017-11-14 18:22:38.674 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:43.704 Sysfs GPIO: gpio21 new state = off
2017-11-14 18:22:43.722 (Watermeter GPIO) Lighting 2 (Watermeter GPIO)
2017-11-14 18:22:43.728 LUA: Water usage is set to 71.225m3
2017-11-14 18:22:43.728 LUA: wget http://192.168.0.19:8080/json.htm?param=udevice&type=command&idx=3709&svalue=71225 -O /dev/null
2017-11-14 18:22:43.736 EventSystem: Script event triggered: Watermeter
2017-11-14 18:22:50.086 Sysfs GPIO: gpio21 new state = on
I mentioned before that print is now for testing purpose to see values are arriving. After that I specified that it's not working with os.execute, values aren't arriving to master pi
Could you elaborate the ZenerDiode connection?pvangorp wrote: ↑Friday 25 August 2017 10:45 Instead you can connect a 3.3v zener diode on the black wire and your GPIO's are safe. They are verry cheap and perfect for low power. https://www.kiwi-electronics.nl/zenerdiode-3v3-500ma.
For accurate measurement use a 9 or 12 volt adapter instead of 5v from the PI.
Thanks!
Ok,
Users browsing this forum: No registered users and 1 guest