Ticket #826 (assigned)

Opened 9 years ago

Last modified 8 years ago

Nadzor vhodnih vrat in predsobne luči

Reported by: pinki5 Owned by: domen
Priority: major Milestone:
Component: hardware Version:
Keywords: Cc: lukacu, domen.puncer@…
Related nodes: lipovbog Realization state:
Blocking: Effort: normal
Blocked by: Security sensitive: no

Description

Preverjanje vrat, če so zaprta in zaklenjena v povezavi s predsobno lučjo.

Attachments

Inovacijski predlog 2011 - V5.pdf (737.7 KB) - added by pinki5 8 years ago.
PIP predstavitev_TAPRAVA.pptx (3.5 MB) - added by pinki5 8 years ago.
PIP predstavitev_TAPRAVA.pdf (4.7 MB) - added by pinki5 8 years ago.
Program.sh (894 bytes) - added by pinki5 8 years ago.

Change History

comment:1 Changed 9 years ago by pinki5

  • Status changed from new to accepted
  • Owner changed from Musti to pinki5

Tega se bom lotil v tem šolskem letu kot inovacijski predlog.

comment:2 Changed 9 years ago by mitar

  • Cc lukacu added

comment:3 Changed 9 years ago by pinki5

Brezžična omrežja postajajo vedno dostopnenjša ljudem in se nenehno nadgrajujejo ter ponujajo vedno več funkcij. Raziskal bom, kako routerju dodati več lastnosti v domači delavnici in ga uporabil za nadzor vhodnih vrat ter predsobne luči. Uporabil bom senzorje nameščene v vrata in dodatno stikalo za luč, routerju dodal vezje, ki bo omogočalo krmiljenje sistema in izdelal potrebno programsko opremo. Ta rešitev je cenejša od komercialnih produktov in bo z mojim inovacijskim predlogom postala dostopna mnogim posameznikom. Router bo zaznal, če so vrata odprta ali zaklenjena, obvestil lastnika o tem po elektronski pošti in krmilil luč v predsobi. S to rešitvijo bom omogočil uporabnikom oddaljen nadzor vhodnih vrat in tako zmanjšal njihovo skrb.

comment:4 Changed 9 years ago by mitar

Nekaj komentarjev: Verjetno bi bilo dobro poudariti, da gre za splošno dostopne routerje široke proizvodnje, potrošniške. Torej to je namreč bistvo, of-the-shelf oprema.

Ne vem, če bi jaz uporabljal e-mail za to. Raje bi to bila spletna storitev. Pač neka spletna stran, prilagojena mobilnim napravam, kjer se prijaviš in pogledaš stvari. Torej ponavadi želiš pogledati, če so vrata pozabil zakleniti, ne pa da bi dobival e-mail vsakič, ko se vrata zaklenejo ali odklenejo. Čeprav to bi lahko bil zanimiva storitev, dodatna, da se naročiš, ko greš recimo zdoma za daljši čas, da dobiš e-mail, če se vrata odklenejo.

Kaj potem boš do vrat in stikala peljal dodatno napeljavo do routerja? Ali ob po en router na vsakem stikalu? ;-)

Mogoče bi lahko portali 1-wire LAN na električno napeljavo? Za stikala bi bilo to odlično.

Mene malo, za realen produkt, skrbi zasebnost teh podatkov. Torej nekako verjetno ne želiš, da bi vsi vedeli, kdaj imaš zaklenjena ali odklenjena vrata. Torej prenos podatkov od routerja do strežnika bi bilo potrebno rešiti drugače, kot to delamo do sedaj, ko zbiramo le javne podatke.

comment:5 follow-up: ↓ 6 Changed 9 years ago by pinki5

E-mail je mišljen samo v primeru, da so vrata odklenjena za dalj časa (na primer 5 min). V tem primeru ti pošlje sporočilo, da imaš odklenjena vrata. Lahko pa dodam to funkcijo, da se naročiš in ti pošilja sporočilo tudi, ko se vrata odklenejo.

Hotel sem oboje priključit na en router, ki bi ob odprtju vrat prižgal luč. Detaljno še nisem izdelal načrta, kako bi to potekalo, mi pa vsak predlog zelo pomaga. Hvala.

Je mogoče del strežnika odvzeti javnosti tako, da bi na dele streznika prijavljali lahko samo posamezni ljudje? Da utemeljim: Doma si vzpostavim router, ki mi zaznava stanje vrat. To se zapisuje v določen del strežnika, ki ga pred tem ustvarim (kot uporabniški račun) in lahko do njega dostopam samo jaz, ki sem si tudi izmislil geslo zanj. Tako moje stanje ne bi bilo več javnosti dosegljivo temveč samo meni.

comment:6 in reply to: ↑ 5 ; follow-ups: ↓ 7 ↓ 8 Changed 9 years ago by mitar

Replying to pinki5:

E-mail je mišljen samo v primeru, da so vrata odklenjena za dalj časa (na primer 5 min).

Odklenjena? Ali odprta? Ker ko si v stanovanju ponavadi ne zaklepaš vrat?

Hotel sem oboje priključit na en router, ki bi ob odprtju vrat prižgal luč.

Aha, sedaj razumem. To bi bilo vse v predsobi. OK.

Je mogoče del strežnika odvzeti javnosti tako, da bi na dele streznika prijavljali lahko samo posamezni ljudje?

Kaj ti razumeš pod strežnikom? Torej če govoriš o programu, ki teče na routerju, in gleda vrata in pošilja e-maile, je potem to seveda popolnoma izvedljivo. Če pa govoriš o nekem drugem računalniku, strežniku v omrežju, kjer bi vsa ta logika tekla, router pa bi mu le sporočal informacije preko omrežja, potem pa se pojavi moje vprašanje kako prenesti te informacije od routerja do strežnika varno.

Torej verjetno je najlažja verzija to, da to teče kar na routerju.

comment:7 in reply to: ↑ 6 Changed 9 years ago by lukacu

Replying to mitar:

Replying to pinki5:

E-mail je mišljen samo v primeru, da so vrata odklenjena za dalj časa (na primer 5 min).

Odklenjena? Ali odprta? Ker ko si v stanovanju ponavadi ne zaklepaš vrat?

Jaz jih vedno ... ce si na prehodnem hodniku nikoli ne ves, kdaj ti bo kdo notri vletel :)

comment:8 in reply to: ↑ 6 ; follow-up: ↓ 10 Changed 9 years ago by pinki5

Replying to mitar:

Replying to pinki5:

Je mogoče del strežnika odvzeti javnosti tako, da bi na dele streznika prijavljali lahko samo posamezni ljudje?

Kaj ti razumeš pod strežnikom? Torej če govoriš o programu, ki teče na routerju, in gleda vrata in pošilja e-maile, je potem to seveda popolnoma izvedljivo. Če pa govoriš o nekem drugem računalniku, strežniku v omrežju, kjer bi vsa ta logika tekla, router pa bi mu le sporočal informacije preko omrežja, potem pa se pojavi moje vprašanje kako prenesti te informacije od routerja do strežnika varno.

Torej verjetno je najlažja verzija to, da to teče kar na routerju.

Vsekakor bi bilo boljše, da poteka vse doma na routerju. Samo potem bi rabil še dodatni trdi disk ali kaj podobnega, da bi shranjeval podatke o stanju vrat iz routerja, ker v njem verjetno ni dovolj prostora za takšno funkcijo (vsaj nepredelanem ne). Potem lahko preverjam ta zapisovanja tudi izven doma, kar je tudi moj osnovni cilj: preverjanje stanje vrat in predsobne luči, kadar me ni doma. V primeru: Če se mi mudi na sestanek nekam v mesto in sem negotov, če sem zaklenil vrata, lahko preko mobilnega telefona dostopam do routerja doma in preverim v kakšnem stanju so.

comment:9 follow-up: ↓ 11 Changed 9 years ago by Musti

Lahko bi pregled vrat imel na spletni strani omrežja, če je router del le tega. Dostop z neki geslom, ali pa laufat preprost web server na routerju samem in dostopaš od njega.

Za neki log, bi bilo še dovolj prostora verjetno na routerju.

comment:10 in reply to: ↑ 8 Changed 9 years ago by mitar

Replying to pinki5:

Vsekakor bi bilo boljše, da poteka vse doma na routerju. Samo potem bi rabil še dodatni trdi disk ali kaj podobnega, da bi shranjeval podatke o stanju vrat iz routerja, ker v njem verjetno ni dovolj prostora za takšno funkcijo (vsaj nepredelanem ne).

In si kaj izračunal potrebne količine podatkov ali to kar na pamet streljaš? Koliko bitov misliš, da potrebuješ, da zapišeš, ali so se vrata odprla ali zaprla? In kolikokrat na dan se vrata odprejo ali zaprejo? OK, potem potrebuješ še timestamp, kar je 32 bitov (število sekund od epohe). Torej 33 bitov na event. Recimo da se vrata odprejo 100 krat na dan, je to 3300 bitov oziroma 412 bytov na dan, torej 150 KB na leto. To je preveč? ;-)

Če se mi mudi na sestanek nekam v mesto in sem negotov, če sem zaklenil vrata, lahko preko mobilnega telefona dostopam do routerja doma in preverim v kakšnem stanju so.

Da, se strinjam, to je osnovna ideja. Samo za to niti ne potrebuješ loga. Ampak le trenutno vrednost. In drugo, kot pravim, je torej najlažje dostopati do routerja in ti on servisira spletno stran, ki jo vidiš, ne pa nek strežnik v omrežju.

comment:11 in reply to: ↑ 9 ; follow-up: ↓ 12 Changed 9 years ago by mitar

Replying to Musti:

Lahko bi pregled vrat imel na spletni strani omrežja, če je router del le tega. Dostop z neki geslom,

In kako bo podatek prišel varno od routerja do strežnika v omrežju? Tega še nimamo narejenega in jaz res ne bi rad to dal pinki5ju, da to dela, ker je razlog, da sami tega nismo še naredili. Namreč ni čisto trivialno. (Nima pa smisla, da on dela sedaj nek poseben protokol samo za svoje potrebe.)

Torej jaz mislim, da bi to lahko izvajali direktno na routerju. Seveda pa to pomeni, da se bo pinki5 moral malo naučiti tudi programiranja in dela na embeded napravah. ;-)

comment:12 in reply to: ↑ 11 ; follow-up: ↓ 14 Changed 9 years ago by Musti

  • Effort set to normal

Replying to mitar:

In kako bo podatek prišel varno od routerja do strežnika v omrežju? Tega še nimamo narejenega in jaz res ne bi rad to dal pinki5ju, da to dela, ker je razlog, da sami tega nismo še naredili. Namreč ni čisto trivialno. (Nima pa smisla, da on dela sedaj nek poseben protokol samo za svoje potrebe.)

Tukaj se strinjam s tabo, da pinki ti izvede tako, da podatke servira router. Če gre pa to kako implementirati potem v nodewatcher z varnim prenosom podatkov do strežnika, pa je bolj tvoje področje.

Torej pinki omogoči pregled stanja na routerju, dostop lahko zaščitimo s kakšnim .htaccess fajlom, če je to sploh podprto na routerjih?

comment:13 follow-up: ↓ 15 Changed 9 years ago by Musti

Samo imamo problem, kako lahko dostopaš od zunaj na node? Torej če nisi v wlan-lj omrežju?

comment:14 in reply to: ↑ 12 Changed 9 years ago by mitar

Replying to Musti:

Torej pinki omogoči pregled stanja na routerju, dostop lahko zaščitimo s kakšnim .htaccess fajlom, če je to sploh podprto na routerjih?

Seveda ni. ;-)

Še SSL po privzetem ni.

Do kdaj je rok za oddajo? Bo to potrebno malo razmisliti.

comment:15 in reply to: ↑ 13 Changed 9 years ago by mitar

Replying to Musti:

Samo imamo problem, kako lahko dostopaš od zunaj na node? Torej če nisi v wlan-lj omrežju?

Saj pa bo omrežje kmalu povsod?

V ta namen je zamišljen #587, samo to ne bi tako hitro narejeno.

comment:16 Changed 9 years ago by Musti

Rok je nekje februarja za prvo oddajo. Do takrat je plan spravit senzorje na router in objaviti njihovo stanje prek webpaga. Varnost in zunanji dostop pa bi blo dobro dodat do marca nekje, da je potem končn produkt...

comment:17 Changed 9 years ago by mitar

Kaj novega glede tega?

comment:18 Changed 9 years ago by pinki5

V fazi učenja elektronike in pisanja inovacijskega predloga sem. Največ se bo odvijalo v koncu decembra, ko bom izdelal vezje, router sestavil in preizkusil zadevo.

comment:19 Changed 8 years ago by Musti

  • Related nodes set to lipovbog

Changed 8 years ago by pinki5

Changed 8 years ago by pinki5

comment:21 Changed 8 years ago by pinki5

Torej pregled:

  • Program za zapisovanje gpio je napisan in dela vredu. V tekstovni log se zapisuje, ki ga lahko prikazem na spletni strani. Tukaj je treba še preuredit to spletno stran do te mere, da bo zaščitena z geslom in bo mozno jo pregledovat preko telefona. Testiran je biil na prototipu, ki je bil izdelan za predstavitev.
  • Funkcija cron je tut ze aktivirana. na tezavo pa sem naletel ko bi moral program zagnat ob spremembi stanja, kr nikjer na spletu nisem nasel ze kaj takega. Potem sem pogledal kak deluje gpio, ko je sd kartica gor priklopljena in je podobno mozno uporabit za mojo inovacijo, samo še nevem točno kak. Rabim malo pomoči :)
  • Prvi del inovacijskega predloga je tudi že opravljen. Mel sem predstavitev in je bla najbolj sporna točka komisiji, če bo to javno in si lahko nekdo sam nardi, ne bo potem to nekdo drug izkoriščal. 2. aprila se zvejo rezultati.
Last edited 8 years ago by pinki5 (previous) (diff)

comment:22 Changed 8 years ago by mitar

No, malo bolj podrobno opiši, kakšno pomoč potrebuješ.

comment:23 Changed 8 years ago by pinki5

Samo s cronom ga ne morem poganjat, kr se zapisuje stanje za vsak ta interval vmes pa ne, kar pomeni, da se lahko stanje na gpio večkrat spremeni, ampak tega ne bo v tekstovnem logu. Vem, da bi mogla že obstajat takšna funkcija, da ko se zgodi sprememba, se lahko nastavi kaj naj router stori, tak da bi to uporabil, samo nevem pa kak se imenuje pa aktivira. Iskal sem že po spletu in edino kaj sem sploh našel s temi interrupti je bla povezava med sd kartico in gpio. Od tukaj dalje sem pa v temi.

comment:24 Changed 8 years ago by mitar

A lahko mogoče pripneš predstavitev v kakšnem manj zaprtem formatu kot je pptx?

Changed 8 years ago by pinki5

comment:25 Changed 8 years ago by pinki5

Mi lahko nekdo pomaga usposobit to funkcijo na routerju, da bo zaganjala program tudi ob spremembi stanja vrat?

comment:26 Changed 8 years ago by mitar

Ja super bi bilo, če bi pripel ta program, ki ga trenutno uporabljaš. ;-)

comment:27 Changed 8 years ago by mitar

A mogoče opišeš, kaj točno, kot opis delovanja na najvišjem nivoju, sploh potrebuješ?

Torej če prav razumem, sedaj uporabljaš program, ki vrednost na portu in to zapisuje v datoteko. Samo kaj sploh želiš s temi vrednostmi?

Če sklepam, v resnici tebe ne zanima, da bi pognal nek program ob spremembi vrednosti, ampak da bi ob spremembi vrednosti zapisal v datoteko, da je do spremembe prišlo? Torej potrebuješ le en program, ki bo pač čakal na spremembe in jih zapisoval. Ne pa da poganja zunanji program?

Skratka, če želiš pomoč, boš moral povedati malo bolj natančno, kaj točno želiš. Mogoče pridi na Skype kanal?, pa se lahko v živo pogovorimo.

Changed 8 years ago by pinki5

comment:28 Changed 8 years ago by pinki5

Sem raziskal področje (hvala Mitar za tista 2 linka) in prišel do ideje, kako bi dopolnil skripto, ki nadzoruje gpio. Gpioctl bi spremil do te mere, da bi vsako sekundo loopal "get" funkcijo in ko se spremeni iz LOW v HIGH ali obratno se zažene skripta, ki je že napisana.
Rabim nekaj pomoči:

  • v kerem jeziku je gpioctl napisan (mislim, da je C, samo nevem točno kateri)?
  • bi s tem vplival kaj na program, ki trenutno pregleda stanje in shranjuje v tekstovni log?
  • potreboval bi še pomoč pri zamenjavanju gpioctl, ko bo tako daleč!

Hvala.

comment:29 Changed 8 years ago by mitar

Spisan je v C. In ne, ni ideja, da v programu loopas get funkcijo. Pomembno je to:

If the pin can be configured as interrupt-generating interrupt and if it has been configured to generate interrupts (see the description of "edge"), you can poll(2) on that file and poll(2) will return whenever the interrupt was triggered.

Skratka, ti skonfiguriraš pin, da sproži interrupt ob spremembi. Potem pa cakas na spremembo vrednosti s funkcijo, ki se ne vrne, dokler se vrednost ne spremeni. V trenutku, ko se vrne, veš, da se je nekaj spremenilo, to sprocesiraš (recimo zapišeš v log datoteko) in potem ponovno čakaš na naslednjo ponovitev.

comment:30 Changed 8 years ago by pinki5

Ok, sem pregooglal zadeve in največ kaj sem našel in je uporabno je na tej debati https://forum.openwrt.org/viewtopic.php?pid=27973

Tukaj zdaj nevem, koliko še moram to stvar dopolnit, da bo program delal na Foneri in kako se program nadaljuje, da mi bo zaganjal skripto, ko bo sprememba. :)

comment:31 Changed 8 years ago by mitar

No, to je pa tudi ideja, izgleda. Da se uporabi hotplug, ki itak že teče, da ti sproža skripte ob spremembah na GPIO. Torej izgleda, da ima OpenWrt to že narejeno za to, da se lahko prožijo razne skripte ob pritiskih na gumbe. Potem pač na isti GPIO priklopiš raje kaj drugega, ne gumba, pa je.

comment:32 Changed 8 years ago by mitar

Torej potreben je kmod-input-gpio-buttons modul, potem se preprosto doda skripta, recimo /etc/hotplug.d/input/10-vrata in v njej poglej vse spremeljivke okolja, recimo s takšno skripto:

#!/bin/ash

export >> /tmp/output.log

Zanimive spremenljivke so $BUTTON, $ACTION ... In potem pritiskaj gumb/proži GPIO in glej, kaj dobivaš, recimo s tem da spremljaš output.log datoteko:

$ tail -f /tmp/output.log

comment:33 Changed 8 years ago by kostko

Paket kmod-input-gpio-buttons dodan v star firmware z revizijo [4001f6c08449/old/openwrt-nw]. Na voljo bo ko se prevede za vse arhitekture.

comment:34 Changed 8 years ago by kostko

kmod-input-gpio-buttons je sedaj na voljo v repozitoriju paketov za arhitekturi atheros in ar71xx.

comment:35 Changed 8 years ago by Musti

Paket kmod-input-gpio-buttons naložen na lipovbog. /etc/hotplug.d/input/ ne obstaja, sem ga ustvaril, vendar ne deluje, predvidevam da nekaj manjka.

comment:36 Changed 8 years ago by Musti

Je delo na tej rešitvi zaključeno ali ga želi kdo nadaljevati?

comment:37 Changed 8 years ago by mitar

  • Status changed from accepted to assigned
  • Owner changed from pinki5 to domen

Mogoče bi Domen lahko pomagal, se mi zdi, da se je dijakom ustavilo. Torej imeti en enostaven splošen command line program, ki poganja nek drugi program, ko se spreminjajo stvari na GPIO. Ali pa da se razišče kako se to integrira v OpenWrt. Oziroma modul za to spiše. Oziroma popravi.

comment:38 Changed 8 years ago by mitar

  • Cc domen.puncer@… added

comment:39 Changed 8 years ago by domen

Disclaimer: nisem bral celega backloga, to pride na vrsto, ko pridem do problemov :-)

Bom pogledal. Recimo za ARM je v kernelu ze nekaj casa pod /sys/ en gpio direktorij s katerim lahko lepo iz command line (echo 1 > /sys/foo/gpio/gpio38/bar) kontroliras pine.

Ce ni, potem se zdi pa najlazja varianta /dev/mem, pa pisanje v prave registre. Ja, grdo in chip dependent.

comment:40 Changed 8 years ago by mitar

Torej gre za branje pinov. Želimo prebrati vrednost. Oziroma želimo sprožiti program ob spremembi vrednosti. Branje ni problem. Sprememba pa pomeni, da bi program za delo z gpio (nek že obstaja) bilo potrebno spremeniti tako, da dela nek select na datoteki in ko se vrednost spremeni, se recimo zaključi in vrne novo vrednost. Ali kaj takšnega.

Druga možnost pa je pravilna integracija v OpenWrt hotplug system, saj tudi tam nekatere te stvari podpirajo, saj se ponavadi uporabljajo za gumbe.

Torej končna želja je, da se ob spremembi na pinu zapiše neka vrednost v datoteko oziroma, ki jo potem nodewatcher prebere preko HTTP.

comment:41 Changed 8 years ago by Musti

Ne vem, če je smiselno vse to delat za GPIO, ker je preveč device dependent, dajmo raje 1-wire porihtat pa ga tudi za to uporabit.

Note: See TracTickets for help on using tickets.