NetIO with Gnublin
Projektinformation
NetIO with Gnublin
- Erstellt am 1. September 2013
- By eproo
- http://gnublin.embedded-pro...
- sarcher@embedded-proje...
NetIO with Gnublin
NetIO with Gnublin.
Beschreibung
Hier eine kleine Anleitung, wie du NetIO auch auf deinem
Gnublin zum laufen bekommst:
1. NetIO App aus dem Apple App Store installieren (Wie in den Tutorials beschrieben).
Die (rechts–>) angehängte UI-Designer Config auf das Handy laden.
2. Gnublin Seite (Python)
Gnublin mit Netzwerk verbinden.
http://wiki.gnublin.org/index.php/WLAN
Mit ifconfig IP des Gnublin ansehen
und in der App eintragen.
Bevor man die API in Python nutzen kann laden
wir uns die folgenden beiden Dateien herunter:
Die beiden Dateien holen wir dann direkt auf unser Gnublin.
Hole dir die unten angehängte Datei entweder mit:
Und entpacke diese mit:
ODER:
Erstelle eine Datei test.py und kopiere Folgendes
hinein und schiebe siehe via scp auf dein Gnublin:
http://wiki.gnublin.org/index.php/Administration_per_SSH
Danach einfach: python test.py
Starte die NetIO App und bediene den Schalter.
Die onboard LED wird ein- und ausgeschaltet.
Viel Spaß beim weiterbasteln.
Gnublin zum laufen bekommst:
1. NetIO App aus dem Apple App Store installieren (Wie in den Tutorials beschrieben).
Die (rechts–>) angehängte UI-Designer Config auf das Handy laden.
2. Gnublin Seite (Python)
Gnublin mit Netzwerk verbinden.
http://wiki.gnublin.org/index.php/WLAN
Mit ifconfig IP des Gnublin ansehen
und in der App eintragen.
Bevor man die API in Python nutzen kann laden
wir uns die folgenden beiden Dateien herunter:
root@gnublin:~$ wget https://raw.github.com/embeddedprojects/gnublin-api/master/python-module/gnublin/gnublin.py --no-check-certificate root@gnublin:~$ wget https://github.com/embeddedprojects/gnublin-api/raw/master/python-module/gnublin/_gnublin.so --no-check-certificate
Die beiden Dateien holen wir dann direkt auf unser Gnublin.
Hole dir die unten angehängte Datei entweder mit:
root@gnublin:~$ wget http://netio.davideickhoff.de/media/attachments/gnublin_netio_1.zip
Und entpacke diese mit:
root@gnublin:~$ unzip gnublin_netio_1.zip
ODER:
Erstelle eine Datei test.py und kopiere Folgendes
hinein und schiebe siehe via scp auf dein Gnublin:
http://wiki.gnublin.org/index.php/Administration_per_SSH
#!/usr/bin/python import asyncore import socket import select import subprocess import gnublin import os gpio = gnublin.gnublin_gpio() gpio.pinMode(3, 'out') gpio.pinMode(18, 'out') class Client(asyncore.dispatcher_with_send): def __init__(self, socket=None, pollster=None): asyncore.dispatcher_with_send.__init__(self, socket) self.data = '' if pollster: self.pollster = pollster pollster.register(self, select.EPOLLIN) def handle_close(self): if self.pollster: self.pollster.unregister(self) def handle_read(self): receivedData = self.recv(8192) if not receivedData: self.close() return receivedData = self.data + receivedData while '\n' in receivedData: line, receivedData = receivedData.split('\n',1) self.handle_command(line) self.data = receivedData def handle_command(self, line): if line == 'LED1 on': self.send('on') gpio.digitalWrite(3,1) elif line == 'LED1 off': self.send('off') gpio.digitalWrite(3,0) elif line == 'RELAY open': self.send('off') gpio.digitalWrite(18,0) elif line == 'RELAY close': self.send('off') gpio.digitalWrite(18,1) else: self.send('unknown command') class Server(asyncore.dispatcher): def __init__(self, listen_to, pollster): asyncore.dispatcher.__init__(self) self.pollster = pollster self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.bind(listen_to) self.listen(5) def handle_accept(self): newSocket, address = self.accept() print "Connected from", address Client(newSocket,self.pollster) def readwrite(obj, flags): try: if flags & select.EPOLLIN: obj.handle_read_event() if flags & select.EPOLLOUT: obj.handle_write_event() if flags & select.EPOLLPRI: obj.handle_expt_event() if flags & (select.EPOLLHUP | select.EPOLLERR | select.POLLNVAL): obj.handle_close() except socket.error, e: if e.args[0] not in asyncore._DISCONNECTED: obj.handle_error() else: obj.handle_close() except asyncore._reraised_exceptions: raise except: obj.handle_error() class EPoll(object): def __init__(self): self.epoll = select.epoll() self.fdmap = {} def register(self, obj, flags): fd = obj.fileno() self.epoll.register(fd, flags) self.fdmap[fd] = obj def unregister(self, obj): fd = obj.fileno() del self.fdmap[fd] self.epoll.unregister(fd) def poll(self): evt = self.epoll.poll() for fd, flags in evt: yield self.fdmap[fd], flags if __name__ == "__main__": pollster = EPoll() pollster.register(Server(("",54321),pollster), select.EPOLLIN) while True: evt = pollster.poll() for obj, flags in evt: readwrite(obj, flags)
Danach einfach: python test.py
Starte die NetIO App und bediene den Schalter.
Die onboard LED wird ein- und ausgeschaltet.
Viel Spaß beim weiterbasteln.