Python Irc en arduino.
2 berichten
• Pagina 1 van 1
Python Irc en arduino.
Hallo,
Ik wil graag dit delen met mensen die ook bezig zijn met python en arduino,
Ik ben recent bezig geweest in python, en dacht ik kan wel een scriptje schrijven,
die irc msg's op een lcd dumpt, van het een kwam het ander en hier is het:
wat ik doe hier in Python is een serieele poort openen met:
(wat eigenlijk gewoon dit is: )
en dit is zeer makkelijk in python, wat raw_input(); doet is vragen naar je input, wat tussen() staat word neergezet in de terminal(een soort van prompt dus).
en ser returned(geeft terug) strings ,je kan in python alles wat ser dan geeft als strings behandelen easy.
bijv lezen: ser.readline()
Wat dan ook mogelijk is om naar ser te schrijven.
ofcourse, moet je import serial doen
en als je vervolgens iets wil verzenden naar de arduino dan doe je:
de rest van de code is infeite gewoon een irc client, die data naar de arduino stuurt,
bovendien kan deze code ook data naar irc sturen, door middel van sendmsg();
en het grappige is dat ik een stukje code geschreven heb dat als een klein botje fungeert:
Deze commando's werken alleen in een Pm, (de commands zijn quit, master, say name)
Het is heel simpel om zelf dan ook nog wat commando's toe tevoegen Want je kan het ook zo zien:
alles wat hier gebeurt is wat string operaties, waarbij ik check of er ipv6 of ipv4 in de data zit,
dit was een probleem waarbij ipv6 : als scheidings tekens gebruikte waar door data die
je niet echt nodig heb (van het irc protocol etc) door gestuurd werd.
En dit is hoe de geheele code er dan uit komt tezien:
Ik wil graag dit delen met mensen die ook bezig zijn met python en arduino,
Ik ben recent bezig geweest in python, en dacht ik kan wel een scriptje schrijven,
die irc msg's op een lcd dumpt, van het een kwam het ander en hier is het:
wat ik doe hier in Python is een serieele poort openen met:
- Code: Alles selecteren
ser = serial.Serial(str(raw_input("enter device for example: /dev/xx: ")), int(raw_input("and baud: ")))
(wat eigenlijk gewoon dit is: )
ser = serial.Serial(port, baud)
en dit is zeer makkelijk in python, wat raw_input(); doet is vragen naar je input, wat tussen() staat word neergezet in de terminal(een soort van prompt dus).
en ser returned(geeft terug) strings ,je kan in python alles wat ser dan geeft als strings behandelen easy.
bijv lezen: ser.readline()
Wat dan ook mogelijk is om naar ser te schrijven.
ofcourse, moet je import serial doen
en als je vervolgens iets wil verzenden naar de arduino dan doe je:
- Code: Alles selecteren
ser.write(str(disp))
de rest van de code is infeite gewoon een irc client, die data naar de arduino stuurt,
bovendien kan deze code ook data naar irc sturen, door middel van sendmsg();
en het grappige is dat ik een stukje code geschreven heb dat als een klein botje fungeert:
- Code: Alles selecteren
if ircmsg.find("privmsg "+nick.lower()) != -1:
if ircmsg.find("quit")!= -1:
exit()
if ircmsg.find("master") != -1:
sendmsg(channel, "Hello there! Duality is my Master, whom I serve with whole my Heart.");
if ircmsg.find("say name") != -1:
sendmsg(channel, "Hello all! my name is Artie.");
else:
print ircmsg
Deze commando's werken alleen in een Pm, (de commands zijn quit, master, say name)
Het is heel simpel om zelf dan ook nog wat commando's toe tevoegen Want je kan het ook zo zien:
- Code: Alles selecteren
if ircmsg.find(commando)!= -1:
doedan()
alles wat hier gebeurt is wat string operaties, waarbij ik check of er ipv6 of ipv4 in de data zit,
dit was een probleem waarbij ipv6 : als scheidings tekens gebruikte waar door data die
je niet echt nodig heb (van het irc protocol etc) door gestuurd werd.
- Code: Alles selecteren
disp = irc()
if disp != None:
disp = disp.split(' ')
for l in xrange(len(disp)):
if disp[l] == "privmsg":
disp = disp[l:len(disp)][2:]
disp = ' '.join(disp)
disp = disp[1:]
break
print ">> displayed >>: ",disp
ser.write(str(disp))
time.sleep(2)
En dit is hoe de geheele code er dan uit komt tezien:
- Code: Alles selecteren
import serial
import socket
import time
#import sys
ser = serial.Serial(str(raw_input("enter device for example: /dev/xx: ")), int(raw_input("and baud: ")))
server = "irc.freenode.net"
channel = raw_input("Enter channel: ")
#channel = "#test1123"
nick = "ADuaD"
ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ircDone = False
def ping():
ircsock.send("PONG :Pong\n")
def sendmsg(chan, msg):
ircsock.send("PRIVMSG "+chan+" :"+msg+"\n")
def joinchan(chan):
ircsock.send("JOIN "+chan+"\n")
def connectIrc():
ircsock.connect((server, 6667))
ircsock.send("USER "+nick+" "+nick+" "+nick+" :Arduino Irc Thingy\n")
ircsock.send("NICK "+nick+"\n")
joinchan(channel)
def irc():
ircmsg = ircsock.recv(2048)
ircmsg = ircmsg.strip('\n\r')
ircmsg = str(ircmsg).lower()
if ircmsg.find("ping :") != -1:
ping()
print nick+" >> "+ircmsg
if ircmsg.find("privmsg "+nick.lower()) != -1:
if ircmsg.find("quit")!= -1:
exit()
if ircmsg.find("master") != -1:
sendmsg(channel, "Hello there! Duality is my Master, whom I serve with whole my Heart.");
if ircmsg.find("say name") != -1:
sendmsg(channel, "Hello all! my name is Artie.");
else:
print ircmsg
if ircmsg.find("privmsg "+channel.lower()) != -1:
return ircmsg
connectIrc()
while True:
disp = irc()
if disp != None:
disp = disp.split(' ')
for l in xrange(len(disp)):
if disp[l] == "privmsg":
disp = disp[l:len(disp)][2:]
disp = ' '.join(disp)
disp = disp[1:]
break
print ">> displayed >>: ",disp
ser.write(str(disp))
time.sleep(2)
Advertisement
Re: Python Irc en arduino.
Ik hoop dat iemand er hier wat baat bij heeft
little side note: een van de redenen was dat ik geen ethernetshield had(nog steeds niet heb) om een irc client/botje te schrijven voor arduino, maar ik was al langer met python bezig heb dit dus ook een beetje gedaan om te oefenen.
Als er nog vragen zijn, wil ik graag helpen
Groet,
Duality
little side note: een van de redenen was dat ik geen ethernetshield had(nog steeds niet heb) om een irc client/botje te schrijven voor arduino, maar ik was al langer met python bezig heb dit dus ook een beetje gedaan om te oefenen.
Als er nog vragen zijn, wil ik graag helpen
Groet,
Duality
2 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast