Sida 1 av 1

Domoticz och analog ljussensor TSL250R

Postat: 20 dec 2015, 16:25
av kaaswe
Hej.

Jag har kört Domoticz och 1-wire med RFXcom i flera år med gott resultat, men har släptat med versioner för att alla mina komponenter inte fungerat. Nu har jag ändå uppgraderat Domoticz för det mesta fungerar. Jag har gått från 1125 (i know, lastgammal) till senaste stabila v2.3530.

Anledningen jag legat kvar är för t ex min 4 portars 1-wire hobby board inte fungerat med många versioner efter 1125. även min analoga ljussensor och därav mitt ärende nu.

Den fungerar perfekt i owfs (3.0sp1) men i Domotics så verkar den missa inläsning varannan gång och får då toppvärde istället för sitt verkliga värde, nästa inläsning så får den korrekt. Den har som sagt fungerat perfekt med äldre Domoticz.

Just nu löser jag det genom att läsa in värdet med ett shell script från 1-wire och via json updatera en variabel i Domoticz som sedan aktiverar min scen, men jag vill ju det ska fungera så jag får mina grafer.

Någon som har tips? Haft samma problem eller hur man debuggar domoticz?

Loggen visar inget konstigt. EF och FF family visar error men fungerar, men ljussensorn ingår inte i den utan börjar på 20.

2015-12-20 15:43:22.072 (1wire) Temp (Pump_Return)
2015-12-20 15:43:25.596 (1wire) Temp (Pump_Out)
2015-12-20 15:43:25.699 (1wire) Lighting 2 (Unknown)
2015-12-20 15:43:25.917 (1wire) Lighting 2 (Unknown)
2015-12-20 15:43:26.175 (1wire) Temp (b_temp)
2015-12-20 15:43:26.930 (1wire) Humidity (b_hum)
2015-12-20 15:43:27.411 (1wire) RFXSensor (OutDoor_Brightness_02a)
2015-12-20 15:43:27.714 (1wire) RFXSensor (OutDoor_Brightness_02)
2015-12-20 15:43:28.017 (1wire) RFXSensor (Unknown)
2015-12-20 15:43:28.652 (1wire) General/Pressure (Unknown)
2015-12-20 15:43:29.199 (1wire) General/Solar Radiation (Unknown)
2015-12-20 15:43:29.326 (1wire) RFXMeter (El_Pump)
2015-12-20 15:43:29.451 (1wire) RFXMeter (Unknown)
2015-12-20 15:43:29.489 Error: 1-Wire : Device family (ef) is not actually supported
2015-12-20 15:43:29.491 Error: 1-Wire : Device family (ff) is not actually supported
2015-12-20 15:43:36.997 (controller) Temp + Humidity (OutDoor_NW)
2015-12-20 15:43:37.620 Hardware Monitor: Fetching data (System sensors)



mvh
Janne

Re: Domoticz och analog ljussensor TSL250R

Postat: 24 dec 2015, 11:19
av kaaswe
Så här ser det ut i databasen för Domoticz, notera att manuell avläsning via OWFS alltid ger korrekt värde.

"15844" "22" "3930" "2015-12-24 08:55:02" "0"
"15852" "22" "3930" "2015-12-24 09:00:02" "0"
"15860" "22" "3930" "2015-12-24 09:05:02" "0"
"15868" "22" "82" "2015-12-24 09:10:02" "0"
"15876" "22" "82" "2015-12-24 09:15:02" "0"
"15884" "22" "3930" "2015-12-24 09:20:01" "0"
"15892" "22" "3930" "2015-12-24 09:25:02" "0"
"15900" "22" "3930" "2015-12-24 09:30:01" "0"
"15908" "22" "99" "2015-12-24 09:35:02" "0"
"15916" "22" "108" "2015-12-24 09:40:02" "0"
"15924" "22" "3930" "2015-12-24 09:45:03" "0"
"15932" "22" "3930" "2015-12-24 09:50:01" "0"
"15940" "22" "3920" "2015-12-24 09:55:02" "0"
"15948" "22" "3930" "2015-12-24 10:00:02" "0"
"15956" "22" "3930" "2015-12-24 10:05:02" "0"

Re: Domoticz och analog ljussensor TSL250R

Postat: 09 jan 2016, 19:09
av kaaswe
Som sagt min lösning på detta är ett script som läser in värdet direkt från OWFS och via json uppdaterar en dummy device i Domoticz. Scriptet är skapat som en service som startar upp vid boot och har Domoticz som beroende. Detta är bara själva scriptet och inte för tjänsten. Hoppas det kan hjälpa någon.


#!/bin/bash

# ligth sensor ID
Sensor=/mnt/1wire/20.9D2C10000000/volt.B

# endless loop
while [ 1 ]; do

# read 5 values into the array arr
let i=0
while [ $i -lt 5 ]
do
myvalue=`cat $Sensor|sed -e s/" "//g|awk '{$1=$1 * 1000;printf "%.0f", $1}'`
if [ $myvalue -le "40" ]; then
# if no reading, decreas counter to read the same array post again.
i=$[$i-1]
echo "wrong value" $myvalue >> /var/log/light.log
else
# else value ok
arr[$i]=$myvalue
fi
echo "value "$i": " ${arr[$i]} >> /var/log/light.log
sleep 2
i=$[$i+1]
done

# sort values from arr into arr2
arr2=($(
for el in "${arr[@]}"
do
echo "$el"
done | sort
))

# skip lowest and highest reading and use the 3 in the middle, sum them up and split to get average value
let sum=(${arr2[1]}+${arr2[2]}+${arr2[3]})/3
echo "Sum: " $sum >> /var/log/light.log

# update domoticz dummy device Lux with the average value
curl -s "http://192.168.1.23:8080/json.htm?type= ... value=$sum" >/dev/null 2>&1 &

# sleep 3 minutes
if [ $sum -le "70" ]; then
# if it's dark then don't check so often.
sleep 360
else
# else check every minute
sleep 60
fi
done