Maalämpöfoorumi
Tekniset kysymykset => Tiedonkeruujärjestelmät ja etämonitorointi => Aiheen aloitti: olammi - 21.12.14 - klo:17:25
-
Muutaman vuoden omatarvesäätämisen jälkeen sain dialEye-projektin julkaisukuntoon. Julkaisin ensimmäisen julkisen version v1.0a. http://olammi.iki.fi/sw/dialEye/ (http://olammi.iki.fi/sw/dialEye/)
Ohjelman tarkoituksena on lukea kamerakuvan avulla vesimittarin, kaasumittarin tms. pyöriviä viisareita sisältävän mittarin naamakuvasta viisareiden osoittama lukema. Tätä lukemaa voidaan hyödyntää kulutuslaskennassa (esim.
vesimittarista saa desilitratarkkuuksisen reaaliaikaisen kulutusmittauksen). Täysin poikkeuksellisesti itselleni ::) kirjoitin myös jäätävän tarkat käyttö- ja konfigurointiohjeet: http://olammi.iki.fi/sw/dialEye/howto.php (http://olammi.iki.fi/sw/dialEye/howto.php). Paljon kuvia ja esimerkki mm. taloLoggerin kanssa käyttämisestä.
Donationwarea. Vapaasti käytettävissä henkilökohtaisiin tarkoituksiin.
Palaute ja kysymykset dokumentaation lukemisen jälkeen allekirjoittaneelle.
-
Hieno systeemi!
Mitä halpaa kameraa olet tuossa testannut? Ebay:stä löytyy tälläisia http://www.ebay.com/itm/5M-7mm-6LED-Waterproof-Borescope-USB-Endoscope-Inspection-Snake-Tube-Camera-Cam-/351161925251?pt=UK_BOI_Medical_Lab_Equipment_Medical_Equipment_Instruments_ET&hash=item51c2e1be83 (http://www.ebay.com/itm/5M-7mm-6LED-Waterproof-Borescope-USB-Endoscope-Inspection-Snake-Tube-Camera-Cam-/351161925251?pt=UK_BOI_Medical_Lab_Equipment_Medical_Equipment_Instruments_ET&hash=item51c2e1be83) jossa on myös integroitu ledi valot ja pitäisi toimia linuxissa. Riittäsköhän tuossa tarkkuus ja noiden integroitujen ledien valoteho? Youtubessa näyttäs olevan testi videoita noista kameroista ja yllättävän hyvää kuvaa tarjoaa.
-
Käytin jotain vastaavaa kuin http://www.ebay.co.uk/itm/TRIXES-USB-Webcam-Microphone-with-LEDs-for-PC-Laptop-Windows-Mac-Skype-/360585052171?pt=UK_Computing_ComputerComponents_Webcams&hash=item53f48b400b (http://www.ebay.co.uk/itm/TRIXES-USB-Webcam-Microphone-with-LEDs-for-PC-Laptop-Windows-Mac-Skype-/360585052171?pt=UK_Computing_ComputerComponents_Webcams&hash=item53f48b400b). Parikin mallia tilasin, jostain Hong Kongista tuli. Toista en saanut Linuxissa toimimaan millään (joku ajuri/hw-ongelma). Toinen toimi, kunnes yhden pidemmän saunaillan jälkeen oli tuolta iv-koneen kondenssipoistosta (vesimittarin päällä) lirittänyt kameran päälle vettä ja se oli entinen. Alunperin oli tarkoitus Raspberryllä hoitaa tuota kameraa, mutta en saanut taas sitä Linux-serverissä toimivaa webcamia toimimaan Raspberryn alkupään kerneleiden kanssa (silloin kun sen kanssa taistelin).
Siirryin verkkomalliseen, koska se ei ole hardis/ajuririippuvainen ja Raspberrykin saa kuvan haettua verkon yli sellaisesta. Näissä on myös pieni webserveri, josta snapshot-kuvan saa HTTP:lla URL:ista (ainakin kaikissa malleissa, joihin olen törmännyt).
Nyt on käytössä tuollainen: http://www.verkkokauppa.com/fi/product/8906/dddnh/D-Link-DCS-930L-IP-kamera (http://www.verkkokauppa.com/fi/product/8906/dddnh/D-Link-DCS-930L-IP-kamera) ja se on suojattu valuvilta vesiltä itsetehdyllä pellikatteella... Tuossa mallissa ei ole tarkoituksella omaa valaistusta, koska se noissa olisi vain IR-valaistus (joka ei oikein ole OK tuon minun kuvantunnistuksen kanssa) ja kun oli jo olemassa ulkoinen kohdevalaistus mittarille.
Edit: Vielä vastaus viimeiseen kysymykseen: En näe mitään periaatteellista syytä, miksi tuollainen linkittämäsi kamera ei toimisi. Tosin en ole kokeillut enkä aina noista Kiinanihmeistä ole varma, että toimivatko ne Linuksin kanssa, vaikka sivulla lukisi mitä. Ei tosin ole kalliskaan kokeilla.
-
Hei, tuli asenneltua ja conffattua dialeye melkein valmiiksi. Törmäsin seuraavanlaiseen ongelmaan. Kamerana minulla on Foscam FI9810w. Kamerasta saa seuraavalla rivillä snapshotin selaimella joka mielestäni pitäisi olla kuvana ok.
http://192.168.0.80:8085/snapshot.cgi?user=vesi&pwd=mittari
(kuva liitteenä)
Tässä käyttäjätunnus ja salasana tulee linkin perään, ja nyt tuo & merkki aiheuttaa ongelmia mielestäni.
Seuraavalla käskyllä olen yrittänyt terminaalissa ajaa laihoin tuloksin.
sudo python /home/talo/dialEye/dialEye.py -f /home/talo/dialEye/dialEye.conf -s -u meter http://192.168.0.80:8085/snapshot.cgi?user=vesi&pwd=mittari
Mitä terminaali antaa ulos jos kaikki menee ok?
-
Tässä käyttäjätunnus ja salasana tulee linkin perään, ja nyt tuo & merkki aiheuttaa ongelmia mielestäni.
Seuraavalla käskyllä olen yrittänyt terminaalissa ajaa laihoin tuloksin.
sudo python /home/talo/dialEye/dialEye.py -f /home/talo/dialEye/dialEye.conf -s -u meter http://192.168.0.80:8085/snapshot.cgi?user=vesi&pwd=mittari
Mitä terminaali antaa ulos jos kaikki menee ok?
-v -optiolla se kertoo, että mitä se on tekemässä. Laita tuo koko URL lainausmerkkeihin. Nuo ? ja & ovat unix shellin mielestä sille annettuja ohjausmerkkejä ja se kilahtaa niihin. Lainausmerkit parantavat.
Edit: Kuvasi on ainakin riittävän valoisa ja selkeä. Luulisin, että tuosta viisarit löytyvät varsin mallikkaasti.
-
Hei,
Seuraavalla rivillä lähti FOSCAM toimimaan.
DIALEYE1:PARAMETERS = /home/talo/dialEye/dialEye.py -f /home/talo/dialEye/dialEye.conf -s -u --username vesi --password mittari meter "http://192.168.0.80:8085/snapshot.cgi?user=vesi&pwd=mittari"
olammi, kotisivullasi on kait kielioppivirhe ohjeessa HOWTO, piti --username xxx --password yyy vaihtaa -u jälkeen, ei meter jälkeen.
-
olammi, kotisivullasi on kait kielioppivirhe ohjeessa HOWTO, piti --username xxx --password yyy vaihtaa -u jälkeen, ei meter jälkeen.
Fiksaan ohjetta.
-
Hei,
mikähän on mennyt pieleen sen jälkeen kun kamera siirtyi, olen tehnyt uuden kalibroinnin. Nyt lukemat jotka tallentuvat tietokantaan on mitä sattuu. Terminaalin käskyllä saan kyllä oikean arvon mutta talologger lukee puuta heinää. Tallennetaanko jonnekin tilapäisesti jotain sellaista johon tietokoneen uudelleen käynnistyskään ei auta?
-
mikähän on mennyt pieleen sen jälkeen kun kamera siirtyi, olen tehnyt uuden kalibroinnin. Nyt lukemat jotka tallentuvat tietokantaan on mitä sattuu. Terminaalin käskyllä saan kyllä oikean arvon mutta talologger lukee puuta heinää. Tallennetaanko jonnekin tilapäisesti jotain sellaista johon tietokoneen uudelleen käynnistyskään ei auta?
dialEye:n "tilaan" vaikuttavat seuraavat tiedostot:
- Käytettävä kalibrointikuva (määritellään dialEye.conf:ssa, että mitä kuvaa käytetään, CALIBRATION_IMAGE)
- diaEye.conf, joka määrittelee pääosin konffin.
- Jos "shake" on päällä ja sen tulokset talletetaan, niin shake-konfiguraatiotiedosto. Tämä on määritelty myös dialEye.conf:issa mitä käytetään (SHAKE_FILE).
Jos komentoriviltä tulee ok-tavaraa ja taloLogger ajaa puutaheinää, niin voi olla, että sinulla on jostain syystä kaksi konfiguraatiota tai shake-konfiguraatiota ehkä eri hakemistoissa. Tähän auttaa ainakin, jos dialEye.conf:issa määrittelee koko polun kalibrointikuvalle ja shake-tiedostolle.
Jos kamera liikkuu, niin -s-vivulla (ja jos "shake" on konffattu dialEye.conf:ssa) dialEye:n pitäisi seurata kameraa. Default-konffissa kuva siirtyy max. 1 pikselin / ajokerta (SHAKE_RADIUS). Jos taas kamera heilahtaa isosti, niin tilannetta voi koittaa fiksata muuttavalla väliaikaisesti sen säteen isommaksi (vaikka 10) ja ajelemalla -s -option kanssa komentoriviltä. Tällöin ajo kestää kauemmin, koska oikeaa kohtaa etsitään kauempaa, mutta löytynyt kohta sitten tallettuu sinne shake-conffiin (oletuksena dialeye_shakes.conf). Kohdan löydyttyä säde takaisin ykköseksi ja homman pitäisi pysyä lokittaessa ok perässä. Kameran liikahtaessa ei siis välttämättä tarvita uutta kalibrointiprosessia kaikkine parametreineen, vaan vain sen oikean siirtymän (x-suunta, y-suunta ja kiertymä) löytymistä.
Jos kamera liikkuu sinulla paljon sen kameran asennuksesta johtuen, niin sädettä voi toki pitää isompana kuin 1. Itselläni oli ensin kamera pultattu seinään, niin joku lämpömuutos vettä käytettäessä luultavasti siirsi mittaria muutaman millin, jolloin tuollaista 5 pikselin liikehdintää oli koko ajan. Tuolloin säteen piti olla isompi. Myöhemmin kiinnitin kameran mittarin kiinnikkeeseen, jonka jälkeen tilanne on pysynyt hyvin hallinnassa.
-
Hei,
dialeye_shakes.conf tiedoston polku oli määrittelemättä, siitä johtui ongelmat.
Kiitos
-
Onnistuukohan dialEye:llä lukemien ottaminen mittarille, jossa pulssianturinpaikka vääristää neuloista otettua kuvaa...?
-
Onnistuukohan dialEye:llä lukemien ottaminen mittarille, jossa pulssianturinpaikka vääristää neuloista otettua kuvaa...?
Ei tuohon osaa sanoa kuin, että yrittänyttä ei laiteta. Jos pakko olisi veikata jotain hevosta, niin sanoisin, että ei onnistu.
-
Onnistuukohan dialEye:llä lukemien ottaminen mittarille, jossa pulssianturinpaikka vääristää neuloista otettua kuvaa...?
Tilaa tuohon sopiva anturi? Eikö se olisi helpompaa?
-
Vesilaitoksen kautta tilattuna perusmaksut nousee +15% ja en löytänyt mitä tuo tukkurilla erikseen kustantaisi, tuli vain kokonaisten mittareiden hintoja vastaan.
-
Vesilaitoksen kautta tilattuna perusmaksut nousee +15% ja en löytänyt mitä tuo tukkurilla erikseen kustantaisi, tuli vain kokonaisten mittareiden hintoja vastaan.
Itse valikoin onnisen valikoimasta tuon mittarin itselle. Silloin löysin tuolta kuvastosta mittarin ilman anturia ja anturilla sekä pelkästään paikalla. Muistelisin että myös pelkkä "karva" olisi löytynyt jostain. Eihän muuten ole mitään hyötyä tehdä mittari jos siihen ei saisi pelkkää johtoa paikoillee... kerropa mittarin malli niin mäkin voi koittaa etsiä...
-
Mittari on Zenner MNK-N (tai-I) sama anturi niihin pitäisi mennä. Ja Q3=4.
Olen komponenttilaatikosta ottanut reed-kytkimen tuohon testiin, sillä saan pulssit, mutta haamuvedoista ei sitten ole tietoa. Joten mieluiten oma anturi, jos edullinen olisi.
-
Oikea anturi olisi Zennerin tuotekoodin mukaan 111512 ...
-
Oikea anturi olisi Zennerin tuotekoodin mukaan 111512 ...
Eikö tuon saisi tilattua jonkun puulaakin kautta tukusta? Usein rautakaupatkin suotuvat hoitamaan tilauksia esim onnisen kautta...
Itselle piti tulla mittari 1l/tarkkuudella mutta toimitusaika mittarissa olisi ollut monta kuukautta joten jouduin tyytymään 10l tarkkuudella olevaan. Meidän vesiosuuskunnassa on ollut tuo 1l tarkkuudella oleva ja tuo on näyttänyt kyntensä monessa asiassa vaikka kulutus saattaakin olla pitkälle toistasataa litraa minuutissa. Vuotojen yms paikantamiseen ollut loistava peli graafiseen etäluentaan yhdistettynä.
-
Kaveri hommasi Leakomatic vuotovahdin ja siitä innostuneena vihdoin ja viimein sain itsellenikin kameran hommattua. Hienostihan tämä dialEye näyttäisi pelaavan, joten suuret kiitokset tästä.
Leokomatic tunnistaa myös tippavuodot hyvin nopeasti. Oletkos koskaan ajattellut, voisiko mustalle siipipyörälle tehdä jotain tunnistusta? Laitoin vesihanan tippumaan noin tippa sekunnissa.
(https://dl.dropboxusercontent.com/u/1481715/1.jpg)
Muutaman minuutin päästä siipipyörä oli hivenen liikahtanut
(https://dl.dropboxusercontent.com/u/1481715/4.jpg)
Tuosta jos saisi jonkun indikaation, niin tätä voisi käyttää myös hyvin pienien vesivuotojen tunnistamiseen :)
-
Oletkos koskaan ajattellut, voisiko mustalle siipipyörälle tehdä jotain tunnistusta? Laitoin vesihanan tippumaan noin tippa sekunnissa.
Muutaman minuutin päästä siipipyörä oli hivenen liikahtanut
Tuosta jos saisi jonkun indikaation, niin tätä voisi käyttää myös hyvin pienien vesivuotojen tunnistamiseen :)
Pienet vesivuodot toki sitten liikuttavat esim. yön aikana tuota vähiten merkitsevää viisaria (resoluutio 1 desilitra). Oma havainto on, että se siipipyörä liikkuu myös ilman tippavuotoja edestakaisin verkoston paineenvaihtelun mukana esim. Saattaisi tulla virheellisiä tippahavaintoja välillä.
No, yhtäkaikki toki on mahdollista samaan tapaan tehdä analyysiä esim. siitä, että onko käyttäjän maalaamalla alueella (ympyrä, neliö, muu) enemmän mustaa vai valkoista jollain ajanhetkellä. Kulutusta siitä on vaikea kameralla havaita ilman, että otettaisiin todella reaaliaikaista kuvaa, joka taas vaatisi paljon prosessoritehoa. Jos otetaan vaikka 1 sek välein kuva ja verrataan edelliseen, niin tuo siipipyörä on edennyt jo aika paljon, jos hana on auki eikä siitä ole mitenkään pääteltävissä paljonko se on edennyt.
Jos olisi luotettava siipipyörän anturointi ja pulssilaskenta, niin sillä voisi toki laskea kulutustakin ja arvioida vuotoa. Tämä mielestäni olisi jotain muuta kuitenkin kuin Raspberry ja web-kamera.
-
No, yhtäkaikki toki on mahdollista samaan tapaan tehdä analyysiä esim. siitä, että onko käyttäjän maalaamalla alueella (ympyrä, neliö, muu) enemmän mustaa vai valkoista jollain ajanhetkellä. Kulutusta siitä on vaikea kameralla havaita ilman, että otettaisiin todella reaaliaikaista kuvaa, joka taas vaatisi paljon prosessoritehoa. Jos otetaan vaikka 1 sek välein kuva ja verrataan edelliseen, niin tuo siipipyörä on edennyt jo aika paljon, jos hana on auki eikä siitä ole mitenkään pääteltävissä paljonko se on edennyt.
Tuolla mustan tai valkoisen määrällä varmaan saisi tunnistettua josko siipipyörä on liikahtanut. Esim 30 sekunnin välein ottaa kulutuksen ylös viisareista ja myös 30 sekunnin välein prosentuaalisen mustan tason siipipyörästä. Jos kulutus pysyy "paikallaan", niin ettei desilitra viisarikaan värähdä, mutta siipipyörä kuitenkin liikkuu jatkuvasti, niin mahdollinen tippavuoto voitaisiin saada kiinni. Kuten sanoit niin desilitran tai isommat vuodot saa kiinni yön aikana, mikäli muuta kulutusta ei ole ollut. Tämän muun kulutuksen tietäminen ohjelmallisesti onkin sitten kerta luokkaa haastavampaa. Tietysti jos mahdolliset paineenvaihtelut aiheuttaa myös siipipyörän muutoksia, niin sitten tämä ei toimi.
-
Onnistuukohan tähän mittariin dialEye?
Juuri vaihdettu mittari ja siinä taitaa olla paikka anturille mutta mistähän sellasen saisi?
En löytänyt netistä mittarin merkillä yhtään anturia. Onko joku viritelly mitään vastaavaan mittariin tai onko tietoa miten se anturi toimii?
-
Saa siihen ainakin noiden 2 merkitsevimmän mittarin luvun (10 litran tarkkuus). Tuo litraviisari kun on peitossa, niin sitä ei taida saada luettua ja siitä syystä tuosta desiviisarista ei ole lukeman kannalta hyötyä.
-
Julkaistu 5.3.2017:
dialEye v1.0b:
- Oletuksena dialEye määrittää etsittävän viisarin värin kunkin mittarin konfiguroidusta keskipisteestä pienen pläntin keskiarvona. Tuli kuitenkin tapaus, jossa juuri tuohon mittariviisarin keskelle osuu valoheijastuma, jota ei ollut mahdollista poistaa. Toisaalta, jos viisari olisi keskeltä eri värinen kuin "viiksi", niin ei välttämättä toimisi. Lisäsin mahdollisuuden määrittää viisarin mittausalueen värin konfiguraatiotiedostossa RGB-värinä, jolloin mittarin keskikohtaa ei käytetä tähän.
- Lisätty konfiguraatioparametri DISABLE_ROUNDING, joka todeksi laitettuna saa dialEyen tulostamaan mittaustuloksen 2 desimaalin tarkkuudella. Oletuksena pyöristää lähimpään kokonaislukuun.
-
Aloin tekemään dialEye:lle uudelleen kohdistusta ja siinä törmäsin seuraavaan juttuun. Onko kyseessä bugi vai mittaako dialEye verbose moodissa tuloksen kahteen kertaan? DialEye:stä uusin versio ajossa.
Measured meter dial values pyöristysten jälkeen > 6719
Result antaa kuitenkin > 5719
pi@raspberrypi:/home/talo/dialEye $ python dialEye.py -v -f /home/talo/dialEye/dialEye.conf -s -u --username dial --password eye meter "http://192.168.1.219/image/jpeg.cgi"
Loading shake configuration from dialeye_shakes.conf
Preloaded shakes:
dx = 0, dy = 0, rotation = 0.00 degrees
Shaking and metering...
Dial color (RGB): 240,240,240
Dial color (RGB): 234,234,234
Dial color (RGB): 232,232,232
Dial color (RGB): 234,234,234
Saved shake configuration to dialeye_shakes.conf
Times: shaking: 4.31 sec, metering: 0.86 sec
Calculated shakes:
dx = 0, dy = 0, rotation = 0.00 degrees
Measured meter dial values:
6.19
7.32
1.64
9.42
Result:
5719
-
Kyseessä voi olla bugi. Tutkin asiaa. Sinänsä siellä on kyllä logiikkaa, joka pyöristää mielestään oikeelliseksi tuota dataa, joten aina ei tule ihan täsmälleen sama kuin mitä raaka-arvot viisareille. Tuossa tapauksessa sellaista ei kuitenkaan varmaan pitäisi tapahtua.
-
Kyseessä voi olla bugi. Tutkin asiaa. Sinänsä siellä on kyllä logiikkaa, joka pyöristää mielestään oikeelliseksi tuota dataa, joten aina ei tule ihan täsmälleen sama kuin mitä raaka-arvot viisareille. Tuossa tapauksessa sellaista ei kuitenkaan varmaan pitäisi tapahtua.
Kiitoksia! Ilmoittele jos tarvitset jotain lisätietoja
-
Moi,
törmäsin DialEyehin sattumalta jonkun blogin kautta ja koska olin jo aiemminkin suunnitellut vesimittarin lukemista vanhan webkameran avulla niin käyttöönoton kanssa ei tarvinnut paljon jahkailla. Suuret kiitokset kehittäjälle! :)
Homma lähti toimimaan hyvinkin jouhevasti, toki kalibrointiin meni aikansa ja yksi mittareista osoittautua muita kinkkisemmäksi (mittarin sisällä näyttää olevan jotain roskaa), mutta mittarikohtainen RGB-asetus näyttää tuoneen siihenkin ratkaisun. Backendinä toimii Domoticz jonne lisäsin sekä virtaus- että kulutusmittarit. Tuon kulutusmittarin suhteen aloin miettimään, että miten olette ratkaisseet "nollaantumisen" eli sen että suurimmankin resoluution mittari lähtee aina nollasta mentyään ympäri? Lähinnä mietin että laitan päivityscriptiin niin että se ottaisi mukaan "yksi yli" arvon vaikka tekstifilestä ja kun mittarilta luettuun lukemaan tulee seuraavan kerran nolla alkuun niin kasvattaa tuota tekstifilen arvoa yhdellä. Mutta mietinkö tätä nyt liian monimutkaisesti, oletteko ottaneet muunlaisia ratkaisuja käyttöön tämän haasteen taklaamiseksi?
-
Nyt on kuukauden verran seurailtu vedenkulutusta. Hoidin tuon yllä kysytyn niin, että viritin bash-scriptin joka päivityksen yhteydessä tsekkaa ensin erillisestä filestä kuutiolukeman ja "kuutiostatuksen" ja mikäli mittarilukema alkaa nollalla ja statuskin on nollattu, lisää se kuutiolukemaan +1 ja muuttaa statuksen (status resetoituu vasta kun mittarilukema alkaa 4, 5 tai 6, tämä siksi että lukema hyppii joskus edes takaisin, eritoten 0->9 tai 1->0). Lisäksi siellä on ehto että negatiivista kulutusta ei päivitetä Domoticziin (vertaa nykyistä ja edellistä lukemaa) ja sama homma jos kulutus yli 100l/min.
Alkuun homma toimi erityisen hyvin, mutta viimeisen viikon aikana näyttää että lukemat elää aika paljon (luvut hyppii eri numeroiden välillä edes takaisin) ja välillä yhden mittarin asentoa ei tunnisteta lainkaan, vaikka lisäsin kaikkiin varoiksi RGB-arvonkin. En oikein ymmärrä mistä tämä johtuu kun kamera ei näytä lainkaan liikkuneen ja valaistusolotkin ovat pysyneet vakaina ja alkuun vastaavia ongelmia ei mielestäni ollut. Toki scriptin tsekkaukset pitää aika hyvin huolen siitä että Domoticzissa lukemat ei pompi mitenkään villisti. Joka tapauksessa, kaikki vinkit tilanteen stabiloimiseksi otetaan ilolla vastaan.
Kiitokset kehittäjälle vielä kertaalleen tästä, loistava softa! :)
-
Jos laitat näytille kameran nyt ottaman mittarikuvan sekä tämänhetkisen dialEye:n konfiguraatiotiedoston, niin voin koittaa katsoa olisiko konffiksessa jotain viilattavaa.
-
Hienoa, kiitokset jo etukäteen. Tässä näitä olisi. Laitan varoiksi esimerkin yhdestä aikaisemmasta kuvasta, jossa reunimmainen lukema ei tunnistu sekä tämän hetken kuvan ja miten sen "tilanne" (-r optio) näkyy.
CALIBRATION_IMAGE = /home/pi/scripts/dialEye/calibration_image.jpg
@DIAL = 923:341:78:27:2.0:77.0:0:0:158:77:82
@DIAL = 838:514:78:27:2.0:77.0:0:0:156:57:57
@DIAL = 653:583:78:27:2.0:77.0:0:0:153:68:73
@DIAL = 446:481:78:27:2.0:77.0:0:0:150:62:65
@POSAREA = 345:300:445:355
@POSAREA = 770:125:828:173
@POSAREA = 655:355:680:390
DISABLE_IMAGE_SHAKE = false
SHAKE_RADIUS = 1
TURN_ANGLE = 0.5
TURN_ANGLE_STEP = 0.5
SHAKE_FILE = /home/pi/scripts/dialEye/dialeye_shakes.conf
DETECTION_TRESHOLD = 10
IMAGE_FILTER = NONE
DISABLE_ROUNDING = false
-
Koitapa seuraavia arvoja (vain muuttuneet rivit alla):
@DIAL = 919:337:77:27:2.0:77.0:0.0:0:150:72:85
@DIAL = 833:513:77:26:2.0:77.0:1.0:0:157:57:57
@DIAL = 649:581:78:27:2.0:77.0:0.0:0:177:68:73
@DIAL = 441:479:78:27:2.0:77.0:3.0:0:155:59:61
DETECTION_TRESHOLD = 40
Pientä hienosäätöä myös noissa mittareiden arvoissa, mutta varmasti isoin ongelma oli tuo liian pieni DETECTION_TRESHOLD. Uskoisin, että noilla tilanne paranee paljon värähtelyn suhteen.
-
Kiitos, laitan heti kokeiluun. Muistan testailleeni eri detection thresholdeja, olisiko ollut suurin piirtein välillä 5-50. Jostain syystä tuolloin jo 20 tuntui olevan liikaa, mutta tällä tiedolla uskoisin että syynä oli tuolloin jonkun muun settarin ”väärä” arvo mikä sotki kokonaisuutta.
-
Reilun vuorokauden jälkeen voin sanoa että hyvältä näyttää, lokissa ei näy enää yhtään virheitä muutoksen jälkeen... 8)
edit: 4pv lisää seurantaa ja vain yksi virhe eli homma rokkaa, kiitokset vaivannäöstä @olammi! :)
-
Hoidin tuon yllä kysytyn niin, että viritin bash-scriptin joka päivityksen yhteydessä tsekkaa ensin erillisestä filestä kuutiolukeman ja "kuutiostatuksen" ja mikäli mittarilukema alkaa nollalla ja statuskin on nollattu, lisää se kuutiolukemaan +1 ja muuttaa statuksen
Et haluaisi tehdä yhteisöllistä tekoa ja jakaa tuota tekemääsi shell-skriptiä :-\ :)
-
Olen nyt yrittänyt saada taloLoggerii laitettua tuota dialEye hommaa. Mutta olen saanut otettua kameralla kuvia raspbiin ja tehtyä niinsanotun kalibroinnin. Mutta seuraavia ongelmia en ole saanut ratkaistua:
- Käytössä on USB web cam millä saan liipaistua tällä kuvan siten että saan sitä luettua dialEyella. eli porukka on käytänyt näillä wlan kameroilla ilmeisesti seuraavaa komentoa: DIALEYE1:PARAMETERS = /home/talo/dialEye/dialEye.py -f /home/talo/dialEye/dialEye.conf -s -u --username vesi --password mittari meter "http://192.168.0.80:8085/snapshot.cgi?
- Toinen ongelma on että nykyisessä kamerassa ei ole IR. Saisko sen jotenki värkättyä siten että ottaisi rasp:n GPIO ohjauksen ledille mitä aina sytytettäisiin kun kuva otetaan vai onko se pakollista ostaa tuollainen IR kamera.
- Webbi kamera ottaa kuvia 90 asetetta eli kuva pitää kääntää aina niin saako tämän myös tehtyä automatic
-
Onpas hiljaista tässä ketjussa kun kukaan ei vastaa mitään :'(
No sain joihinkin kysymyksiin jo ratkaisun eli miten kääntää kuva
" fswebcam --rotate 270 --set brightness=50 --set contrast=50 --set gamma=100 --set exposure=499 /home/pi/dialEye/docs/%y%m%d-%H%M%S "
Kyseisellä komennolla saan otettua hyvän kuvan ja luettua sitä.
Toiseen ongelman ratkaisin niinkin yksinkertaisesti että otin GPIO pinneistä suoraa syötön ledille. Mutta ledin syttyminen kuvaustilanteessa vielä kiinnostaa.
Itselläni on vielä edelleen auki miten saan tuon datan TaloLoggeriin kun ei ole langatonta web kameraa.
-
def on_message(self, client, userdata, msg):
Itselläni on vielä edelleen auki miten saan tuon datan TaloLoggeriin kun ei ole langatonta web kameraa.
Minä modasin dialeyey koodia niin että se laittaa ledit päälle ennen kuvan ottoa ja sit sammuttaa. gpio ohjaukeen käytän pigpio mutta se onnistuu millä tahansa gpio kirjastolla. Tässä joku pätkä jonka löysin tähän hätään:
def CommandMeter(conf, meterfile):
resimg = None
resdata = None
if conf.isTrue('ISURL'):
...
else:
#use fswebcam
#os.system('echo "w 12 1" > /dev/pigpio')
#os.system('fswebcam -r 640x480 --top-banner --save /var/tmp/dialEye.jpg -S 5 --jpeg 95') # uses Fswebcam to take picture
#os.system('echo "w 12 0" > /dev/pigpio')
#use rasb cam
os.system('echo "w 16 1" > /dev/pigpio')
camera = PiCamera()
camera.resolution = (1280, 720)
camera.start_preview()
# Camera warm-up time
sleep(2)
camera.capture('/var/tmp/dialEye.jpg')
camera.close()
os.system('echo "w 16 0" > /dev/pigpio')
Itselläni on vielä edelleen auki miten saan tuon datan TaloLoggeriin kun ei ole langatonta web kameraa.
Minä lähetän sähkömittarilta rasbilla mosquitto (http://www.steves-internet-guide.com/into-mqtt-python-client/) viestissä infon talologgerilla joka loggaa sen tietokantaan. Talologgerin tein uuden threadin jossa kuuntelen mqtt viestejä ja clientin on_message funkkarissa talletan viestin kantaan:
def on_message(self, client, userdata, msg):
if len(self.storelist) > 0:
for store in self.storelist:
data = [['kwh_counter',unicode(msg.payload)]]
store.insertData(time.time(), data)
-
def on_message(self, client, userdata, msg):
Minä modasin dialeyey koodia niin että se laittaa ledit päälle ennen kuvan ottoa ja sit sammuttaa. gpio ohjaukeen käytän pigpio mutta se onnistuu millä tahansa gpio kirjastolla. Tässä joku pätkä jonka löysin tähän hätään:
def CommandMeter(conf, meterfile):
resimg = None
resdata = None
if conf.isTrue('ISURL'):
...
else:
#use fswebcam
#os.system('echo "w 12 1" > /dev/pigpio')
#os.system('fswebcam -r 640x480 --top-banner --save /var/tmp/dialEye.jpg -S 5 --jpeg 95') # uses Fswebcam to take picture
#os.system('echo "w 12 0" > /dev/pigpio')
#use rasb cam
os.system('echo "w 16 1" > /dev/pigpio')
camera = PiCamera()
camera.resolution = (1280, 720)
camera.start_preview()
# Camera warm-up time
sleep(2)
camera.capture('/var/tmp/dialEye.jpg')
camera.close()
os.system('echo "w 16 0" > /dev/pigpio')
Minä lähetän sähkömittarilta rasbilla mosquitto (http://www.steves-internet-guide.com/into-mqtt-python-client/) viestissä infon talologgerilla joka loggaa sen tietokantaan. Talologgerin tein uuden threadin jossa kuuntelen mqtt viestejä ja clientin on_message funkkarissa talletan viestin kantaan:
def on_message(self, client, userdata, msg):
if len(self.storelist) > 0:
for store in self.storelist:
data = [['kwh_counter',unicode(msg.payload)]]
store.insertData(time.time(), data)
Hei kiitos tällä pääsinki jo mukavasti eteenpäin. Toki en ajatellut käyttää moquittoa vaan tuolla valmiilla mitä taloLoggerissa.conf on jo valmiina.
Mutta tuosta taitaa olla apua kun rupean kesällä rakentamaan sähkömittarille pulssi lukua ja kaivon veden pinnan tarkkailua. Joudun varmaan kyselemään sitten lisää tuosta :P
-
Et haluaisi tehdä yhteisöllistä tekoa ja jakaa tuota tekemääsi shell-skriptiä :-\ :)
Toki, pahoittelut viivästyneestä vastauksesta, mutta tuli taas ajankohtaiseksi tämä asia kun vesimittari vaihdettiin ja homma ei enää ihan niin hyvin futaa kuin edellisessä. Ilmeisesti siksi, että mittari ns. "märkä" malli ja ilmakuplat lasin alla haittaa lukemista. Skripti on kaukana kauniista, mutta se on toiminut omassa käytössä. Nyt kun saisi lukemat vielä tarkaksi... :)
#!/bin/bash
#Take snapshot and read meter with Dialeye
/usr/bin/ffmpeg -rtsp_transport tcp -i 'rtsp://CAMURL' -f image2 -vframes 1 /home/pi/scripts/dialEye/meter_image.jpg
mittari=$(/usr/bin/python /home/pi/scripts/dialEye/dialEye.py -f /home/pi/scripts/dialEye/dialEye.conf meter /home/pi/scripts/dialEye/meter_image.jpg)
#check current m3 and meter status, FALSE = No leading zero(s), TRUE = leading zero so +1 to be added to m3
kuutiot=`cat /home/pi/scripts/dialEye/kuutiot.txt`
status=`cat /home/pi/scripts/dialEye/status.txt`
onmuuttunut=false
if [[ $mittari == 0* ]] && [[ $status == FALSE ]] ; then
kuutiot=$((kuutiot+1))
echo $kuutiot > /home/pi/scripts/dialEye/kuutiot.txt
echo "TRUE" > /home/pi/scripts/dialEye/status.txt
echo $(date +"%Y-%m-%d %H:%M:%S") $kuutiot " -> muutos +1" >> /home/pi/scripts/dialEye/dialeye_result.log
sed -i -e 1,1d /home/pi/scripts/dialEye/dialeye_result.log
onmuuttunut=true
elif [[ $mittari == 4* ]] && [[ $status == TRUE ]] ; then
echo "FALSE" > /home/pi/scripts/dialEye/status.txt
elif [[ $mittari == 5* ]] && [[ $status == TRUE ]] ; then
echo "FALSE" > /home/pi/scripts/dialEye/status.txt
elif [[ $mittari == 6* ]] && [[ $status == TRUE ]] ; then
echo "FALSE" > /home/pi/scripts/dialEye/status.txt
fi
#Consumption
kulutus="${kuutiot}${mittari}"
#Count average water consumption l/min
edellinenkulutus=`cat /home/pi/scripts/dialEye/dialeye_result_previous.txt`
viimeisinkulutus=$((kulutus - edellinenkulutus))
viimeisinkulutus=$(echo "scale=2 ; $viimeisinkulutus / 10" | bc)
#Exit if speed is too high or less than zero
if (( $(echo "$viimeisinkulutus > 1000" | bc -l) )) || (( $(echo "$kulutus < $edellinenkulutus" | bc -l) )) ; then
curl -s -m 10 --connect-timeout 10 "http://DOMOURL10"
if [[ $onmuuttunut = true ]] ; then
kuutiot=$((kuutiot-1))
echo $kuutiot > /home/pi/scripts/dialEye/kuutiot.txt
echo $(date +"%Y-%m-%d %H:%M:%S") $kuutiot " -> muutos -1" >> /home/pi/scripts/dialEye/dialeye_result.log
sed -i -e 1,1d /home/pi/scripts/dialEye/dialeye_result.log
fi
echo $(date +"%Y-%m-%d %H:%M:%S") $kulutus "VIRHE" >> /home/pi/scripts/dialEye/dialeye_result.log
sed -i -e 1,1d /home/pi/scripts/dialEye/dialeye_result.log
else
#Post speed
curl -s -m 10 --connect-timeout 10 "http://DOMOURL1$viimeisinkulutus"
#Post consumption
curl -s -m 10 --connect-timeout 10 "http://DOMOURL2$kulutus"
echo $kulutus > /home/pi/scripts/dialEye/dialeye_result_previous.txt
echo $(date +"%Y-%m-%d %H:%M:%S") $kulutus >> /home/pi/scripts/dialEye/dialeye_result.log
sed -i -e 1,1d /home/pi/scripts/dialEye/dialeye_result.log
fi
-
Koitapa seuraavia arvoja (vain muuttuneet rivit alla):
@DIAL = 919:337:77:27:2.0:77.0:0.0:0:150:72:85
@DIAL = 833:513:77:26:2.0:77.0:1.0:0:157:57:57
@DIAL = 649:581:78:27:2.0:77.0:0.0:0:177:68:73
@DIAL = 441:479:78:27:2.0:77.0:3.0:0:155:59:61
DETECTION_TRESHOLD = 40
Pientä hienosäätöä myös noissa mittareiden arvoissa, mutta varmasti isoin ongelma oli tuo liian pieni DETECTION_TRESHOLD. Uskoisin, että noilla tilanne paranee paljon värähtelyn suhteen.
Pahoittelut, että palaan taas samojen kysymysten ääreen, mutta vesimittarin vaihdon jälkeen en ole onnistunut laittamaan konffiin tarpeeksi tarkkoja arvoja - tai niin luulen. Toki ilmakuplistakin on haittaa, mutta ehkä ne siitä lähtevät jollain aikavälillä itsekseen pois ja sekin saattaa tilannetta parantaa. Olisin joka tapauksessa erittäin kiitollinen, jos olisi mahdollista saada samantyylistä konsultointia tähän uuteen mittarikuvaan, konffin arvot ovat nyt:
@DIAL = 887:411:67:21:2.0:77.0:0.0:0
@DIAL = 797:515:67:21:2.0:77.0:0.0:0
@DIAL = 661:552:67:21:2.0:77.0:0.0:0
@DIAL = 495:471:67:21:2.0:77.0:0.0:0
(detection treshold edelleen 40)
-
Minulle on tullut hieman ongelmaksi tuo värähtely. Se ei juurikaan vaikuta kokonaislukemaan mutta ajattelin tehdä vuotohälytyksen perustuen tietokannan lukemaan. Nyt jos lukema syystä tai toisesta pienenee , on se ongelma.
Olisiko jotenkin mahdollista tehdä niin että jos uusi lukema on pienempi kuin edellinen, käytettäisiin edellistä lukemaa. Se että lukemamaan tulee virhettä ei ole ongelma, mutta se että se pienenee on.
-
Minulle on tullut hieman ongelmaksi tuo värähtely. Se ei juurikaan vaikuta kokonaislukemaan mutta ajattelin tehdä vuotohälytyksen perustuen tietokannan lukemaan. Nyt jos lukema syystä tai toisesta pienenee , on se ongelma.
Olisiko jotenkin mahdollista tehdä niin että jos uusi lukema on pienempi kuin edellinen, käytettäisiin edellistä lukemaa. Se että lukemamaan tulee virhettä ei ole ongelma, mutta se että se pienenee on.
Tuossa omassa bash-scriptissä (edellisellä sivulla) ratkaisin asian niin, että validi lukema laitetaan talteen tiedostoon ja jos uusi lukema on sitä pienempi, ei päivitetä mitään (myös ko. tiedostoon jää tällöin edellinen validi lukema). Suurempi lukema (muttei liian suuri ;)) puolestaan päivitetään.