[vz-dev] neue fontend hardware plattform ?!
Harald Koenig
koenig at tat.physik.uni-tuebingen.de
Thu Sep 9 00:41:43 CEST 2010
Hallo mal wieder,
erstmal danke fuer den tipp zum dockstar -- wirklich ein schnaeppchen!!!
nun zum subject: als fontend linksys wrt54gl oder nun dockstar oder oae. verwenden...
dockstar o.ae. plus "usbfoo" (url s.u.) scheinen mir eine super kombination zu sein um ein frontend
nach meinem geschmack zu bekommen. long story:
mit dem AVR NET IO als fontend werde ich einfach nicht warm, was so einige gruende hat:
- kein wlan, da ich sowohl hauptzaehler als auch sicherungskasten weit weg vom ethernet bin
- kein linux -- spezielle firmware
- bastelei (spannungsregler und/oder bausatz), ... -- nicht dass ich generell was gegen basteln haette, s.u.;)
- erstmal kein gehaeuse/netzteil/....
- muss man extra bestellen -- liegt nicht einfach in der bastelkiste (und wie es der zufall so will:
dort liegt schon ein wrt54gl, der auch wlan hat und linux kann... ;-)
vor allem das "kein linux" ist fuer mich einfach unbequem, fuer eigene ideen/tests/aenderungen waere mir das einfach naeher...
1. akt:
daher hab ich mal angefangen mit einem noch herumliegenden linksys wrt54gl zu spielen:
man kann dort einfach z.b. die linux-distro "openwrt" installieren.
der wrt54gl hat 2 serielle schnittstellen, eine ist erstmal als serielle konsole belegt,
die zweite noch frei -- man muss jedoch erstmal nen pfostenstecker loeten (== basteln;),
der rest geht dann wieder bequem mit stecken -- das kabel "cd/dvd-laufwerk nach pc-mainboad
aus der bastelkiste hat schon die richtigen 3 pins fuer die serielle schnittstelle belegt!;).
und siehe da, meine "McGyver" loesung, den zaehlerpuls direkt auf die serielle schnittstelle
zu legen klappt auch hier! kaum ist strace/wget/awk installiert (nur strace und sty fehlen
beim default image) klappt mein mini-skript und man kann die pulse zaehlen und uebers netz jagen,
alles nur mit ssh-login ins linux und ein bissl scripting.
mit der shell/strace/awk/wget loesung ist das aber auch nicht wirklich schoen, eher ein erster proof of concept.
aber beim openwrt gibts ein web-interface "luci" fuers setup, welches auf lua basiert.
lua? eine nette kleine skriptsprache von der ich schon viel gehoert habe: klein/schlank/schnell,
auch gut objektorienttiert (wenn man das will), systemnah, ...
und siehe da: in lua brauchts nur ganz wenige zeilen, alles ist viel lesbarer, keine
haesslichen tricks mit strace fuer die timestamps etc. -- und wieder ein bequemes skript
zum testen/aendern/erweitern -- hier mal kurz das skript:
--- 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ---
#!/usr/bin/lua
require "socket"
http = require("socket.http")
tty="/dev/cua/1"
os.execute("rdate harald")
os.execute("stty 50 time 1 min 1 -icanon < " .. tty)
rserial=io.open(tty,"r")
t1=0
while true do
chaine=rserial:read(1)
t=socket.gettime()
url="http://harald/volkszaehler.org/httplog.php?uuid=00000000-0000-0000-0000-000000000001&port=0000000&time=" .. math.floor(t + 0.5)
-- print (t,url,t-t1)
http.request(url)
t1=t
end
--- 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ---
dann kam euer tipp mit dem dockstar -- 2. akt:
auch fuer den dockstar gibts openwrt, es hat eine serielle schnittstelle, wenn auch nur eine.
aber wenns mal laeuft braucht man ja keine serielle konsole mehr, als im init login-shell
abklemmem und schon greift die selbe loesung -- im dockstar ist sogar die steckerleiste
schon geloetet, und der "rest" meines cdrom-kabels vom wrt54gl hat noch einen bislang
nicht gebrauchten stecker mit 2mm rastermass -- der passt perfekt auf die 3 pins fuer die
serielle schnittstelle, als gar kein loeten;)
sowohl mein wrt54gl als auch beim dockstar kann ich den S0-ausgang eines SWISSNOX zaehler
direkt anschliessen, jeweils als pulldown gegen masse und die pulse kommen prima als
zeichen auf der seriellen schnittstelle rein.
lua macht auf dem dockstar allerdings erstmal noch ein problem, hier muss man im lua socket bzw. posix modul
noch ein bissl was fixen (ist eingetuetet) damit die timestamps klappen, aber dann klappts damit auch wieder recht huebsch.
ABER beide loesungen kranken erstmal daran, dass ich nur einen eingang habe (beim wrt54gl koennte ich
noch nen zaehler auf die zweite serielle schnittstelle legen -- 3 zaehler fuer alle 3 phasen gehen
aber auch hier nicht, geschweige denn noch mehr eingaenge).
es braucht also ein ein bissl hardware mit mehr puls-eingaengen, welches dann fuer jeden puls
ein zeichen ueber die serielle schnittstelle oder usb fue den dockstar ausgibt,
z.b. '0' fuer puls an pin 0, '1' fuer puls an pin 1 usw. (bzw. buchstaben o.ae. fuer mehr als 10 ports, s.u.;).
das klingt nun nach einer aufgabe, die wirklich sehr abegrenzt ist was so ein kleiner atmel machen koennte.
und eher zufaellig habe ich so ein schnuckelchen auf dem linux-tag in berlin beim merchendising-stand am eingang
von Petra und Nils von "kernel concepts" entdeckt -- damals noch ohne ganz konkrete idee und aufgabe (aber mit so einer vorahnung;)
3. akt: auftritt "USBFOO" (links unten...)
mit dem "usbfoo" (at90usb162) in kombination mit der "lufa" library und dem demo-beispiel von "kernel concepts"
braucht es nur noch ein paar mehr zeilen C-code (und den gcc-avr) und der usbfoo gibt fuer jeden puls ein zeichen
ueber usb aus. mit dem CDC class usb treiber meldet sich das teil dann unter linux (z.b. auch im dockstar)
als /dev/ttyACM0 als serielle schnittstelle - und schon kann man das strace- oder lua-skript wieder anwerfen,
diesmal aber eben mit mehr eingaengen -- der usbfoo hat 16+ I/O pins rausgefuhert -- das reicht erstmal!
mein demo-code fuer usbfoo liefert derzeit noch je ein zeichen fuer jeden *flankenwechsel*,
uppercase fuer startflanke und lowercase fuer rueckflanke. bislang noch nicht mit
echter serieller schnittstelle fuer meinen wrt54gl (kann sein dass ich das gar nicht mehr brauche,
ein usb-wlan-stick fuer den dockstar koennte der bessere wlan-router/zaehler werden;)
und auch noch nicht im interruptbetrieb sondern plumpenn polling (soll aber gehen mit der hardware),
scheint aber erstmal zu klappen:
http://www.tat.physik.uni-tuebingen.de/~koenig/vz/usbfoo-vz1.tar.gz
usbfoo flashen mit
dfu-rpgrammer at90usb162 erase
dfu-rpgrammer at90usb162 flash usbfoo-vz1.hex
und fertig...
was haltet ihr denn von einer solchen hw-loesung als fontend ?
wer hat AVR erfahrung und kann mal einem blutigen laien kommentieren, ob
- LUFA was taugt
- polling schon reicht
- wie man die input ports auf interrupts (data change) bekommt....
- das alles so keinen sinn hat
wenns den dockstar nicht mehr gaebe waere meine naechste hw-plattform zum testen der "Fonera+",
ein recht winziger wlan-router fuer 30 EUR den ich derletzt mal gesehen habe (hab noch keinen),
auch da soll inzwischen freewrt u.ae. laufen (hat auch 16 MB ram wie der linksys, also
kein vergleich zum dockstar -- aber regulaer lieferbar und schon mit wlan, einer internen
seriellen konsole und angeblich bei neueren hw-versionen auch mit usb):
https://shop.fon.com/FonShop/shop/DE/ShopController?view=product&product=PRD-018
und hier mal noch einige links
usbfoo: (auf dieser seite gibts dann auc links zur sw-library "lufa" sowie zum demo-source)
http://shop.kernelconcepts.de/product_info.php?cPath=1_27&products_id=102
bastel-anleitung zum WRT54GL:
http://www.jbprojects.net/articles/wrt54gl_mods/
http://oldwiki.openwrt.org/OpenWrtDocs%282f%29Hardware%282f%29Linksys%282f%29WRT54GL.html#head-dd43b50d854c2f0348686e6d7d165cdfd83a7e59
openwrt auf WRT54GL installieren:
http://www.myslug.de/index.php?title=Openwrt_auf_wrt54GL
openwrt auf dockstar installieren:
http://ahsoftware.de/dockstar/#ubootpatches
http://www.cs.cmu.edu/~ecc/dockstar-howto.html
ein paar bilder der kompletten hw gibs hoffentlich morgen...
ueber kommentare/ideen/anregungen freut sich wie immer:
Harald
--
"I hope to die ___ _____
before I *have* to use Microsoft Word.", 0--,| /OOOOOOO\
Donald E. Knuth, 02-Oct-2001 in Tuebingen. <_/ / /OOOOOOOOOOO\
\ \/OOOOOOOOOOOOOOO\
\ OOOOOOOOOOOOOOOOO|//
\/\/\/\/\/\/\/\/\/
Harald Koenig // / \\ \
koenig at tat.physik.uni-tuebingen.de ^^^^^ ^^^^^
More information about the volkszaehler-dev
mailing list