Inlägg

Inlägg som Zhirgoyt har skrivit i forumet
Av Zhirgoyt
Skrivet av morxy49:

Ett 6870 klarar av bra många skärmar med hög upplösning sålänge det bara är skrivbordsmiljö vi snackar om. Jag har tre st 1920*1080 skärmar på mitt 6870, och det ligger på 1-2% belastning i windows. Ska du spela däremot, då blir det värre.

Bra! Nej, när jag lirar LoL har jag igång en stream på den andra men när jag lirar BF3 stänger jag helt enkelt av den (gör detta någon skillnad förresten eller är det bara det att jag inte skall köra spelet på den andra skärmen?).

Av Zhirgoyt
Skrivet av morxy49:

Fråga 2: vilken storlek skärmen har har ingen betydelse, det är upplösningen sim spelar roll.

Såklart, dum jag är. Hur skall jag förhålla mig till upplösningen då? Vad borde mitt graff-kort klara?
Skulle den klara en http://www.inet.se/produkt/2303684/benq-22-gl2250-led typ? Tillsammans med min nuvarande.

Av Zhirgoyt

Skärm #2 startar inte.

Hej,
Min andra skärm har lagt av. Den lyser inte upp någonting och verkar inte få ström alls. Det är en gammal sak så det var tyvärr förväntat.

Fråga #1: Är det någon mening med att försöka laga. Förutom att den inte får störm så har den fungerat bra. Ni som har koll, brukar sådant vara "lätt-fixat" eller är det något som är klurigare?

Fråga #2: Skärmen som jag haft tidigare är en Syncmaster 940BW 19'' med enbart VGA-utgång som jag kört genom en adapter in i datorn. Min dator är ju inget kraftmonster så jag undrar om jag köper en ny skärm kan jag fläska på med en 22''-tums utan att den klagar på mig? Några förslag isf?

Tack för hjälpen,
Z

Av Zhirgoyt

Kamera-modulen gör ju att det sticker iväg lite.

Av Zhirgoyt
Skrivet av Xburk:

Får allt ta och tacka för ett trevligt kodar-lan!

Alltid kul att träffa folk med samma intressen! Lärde mig mycket. Kan starkt rekommendera att gå på ev. framtida event!

Tack detsamma!

Ja, hoppas vi ses nästa gång. Vi pratat om att köra redan den 13 juli. Då handlar det om Wordpress och/eller PHP tror jag... men inget är bestämt än.

Av Zhirgoyt
Skrivet av zonar:

Då var det dags att lägga upp lite mer kod:

Det fungerar helt ok nu, har provkört det några dagar så det är inte helt ostabilt i alla fall. Grundfukntionaliteten är där men det går helt klart att slipa lite på lösningen. Det är framförallt på serversidan det kan presenteras lite snyggare.... men det fungerar.

Nu måste man skriva sitt kommando, trycka på Skicka. Då anropas php-skriptet som visar information på skärmen. Sedan måste man gå tillbaka manuellt till föregående sida och manuellt uppdatera bilden. Det fungerar men inte snyggt som sagt.

På Pi:n fungerar det utmärkt, den kollar vad man skickade och om man skrev "photo" så tar den en bild och lägger upp på webservern.

Python programmet startas med sudo och nohup för att den ska fungera även efter att jag har stängt terminalen.

Det blev lite kod så jag lägger en spoiler för att det inte ska bli så lååååångt...

Pi Python:

# Import required libraries import ftplib,os,sys,time,socket from subprocess import call import RPi.GPIO as GPIO class netCam(): def __init__(self): self.file='test2.jpg' # Initialize LEDs try: self.initGPIO() except: raise sys.exit("ERROR: Could not initiate GPIO!") # This LED is ON for LED in self.LedSeq: GPIO.output(LED, True) time.sleep(0.2) GPIO.output(11, True) GPIO.output(9, True) # Create a TCP/IP socket self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Bind the socket to the port server_address = ('', 10002) print >>sys.stderr, 'starting up on %s port %s' % server_address self.sock.bind(server_address) # Listen for incoming connections self.sock.listen(1) # -------------------------------------------------------------------------------- def initGPIO(self): try: # Tell GPIO library to use GPIO references GPIO.setmode(GPIO.BCM) # Set Switch GPIO as input GPIO.setup(7 , GPIO.IN) # List of LED GPIO numbers self.LedSeq = [4,17,22,10,9,11] # Set up the GPIO pins as outputs and set False print "Setup Outputs" for x in range(6): GPIO.setup(self.LedSeq[x], GPIO.OUT) GPIO.output(self.LedSeq[x], False) except: print " ERROR: There was a problem with initaion of the GPIOs" raise # -------------------------------------------------------------------------------- def takeImage(self): try: GPIO.output(22, True) GPIO.output(4, False) # Remove the old file if present if os.path.isfile(self.file): os.remove(self.file) # Take the photo call(['/usr/bin/raspistill','-o',self.file,'-t','10','-f','-q','10']) except: print " ERROR: There was a problem with taking the image" GPIO.output(22, False) GPIO.output(4, True) #raise # -------------------------------------------------------------------------------- def sendFile(self): try: GPIO.output(10, True) GPIO.output(17, False) sftp=ftplib.FTP_TLS() print " Connecting,", sftp.connect('192.168.10.5',21,10) print "-Done \n Setup secure control connection,", sftp.auth() print "-Done \n Setup secure data connection,", sftp.prot_p() print "-Done \n Login,", sftp.login('x','x') print "-Done" #sftp.retrlines('LIST') sftp.cwd('www') #sftp.retrlines('LIST') sftp.sendcmd("TYPE I") fileHandle=open(self.file) sftp.storbinary('STOR %s' %self.file,fileHandle) sftp.close() except: print " ERROR: There was a problem with uploading the image" GPIO.output(10, False) GPIO.output(17, True) #raise # -------------------------------------------------------------------------------- def waitForConnection(self): def connection(): # Wait for a connection print >>sys.stderr, 'waiting for a connection' connection, client_address = self.sock.accept() try: print >>sys.stderr, 'connection from', client_address # Receive the command, only accept ONE message of 1024 bytes data = connection.recv(1024) print >>sys.stderr, 'received "%s"' % data if data=='photo': connection.sendall('Pi is taking a photo') takePhoto=True elif data: print >>sys.stderr, 'sending data back to the client' data='Greeings from PI, You sent: %s' %data connection.sendall(data) takePhoto=False except: takePhoto=False finally: # Clean up the connection connection.close() return takePhoto while True: if connection(): break else: pass # -------------------------------------------------------------------------------- # M A I N # -------------------------------------------------------------------------------- try: cB=netCam() # Initialize LEDs print "Initialize LEDs" try: cB.initGPIO() except: sys.exit("ERROR: Could not initiate!") time.sleep(0.5) GPIO.output(11, True) GPIO.output(9, True) # Loop until users quits with CTRL-C print "Ready to take image" while True: # if GPIO.input(7): cB.waitForConnection() cB.takeImage() cB.sendFile() print " -Done" GPIO.output(22, False) GPIO.output(10, False) except KeyboardInterrupt: print " You pressed Ctrl-C" except: print "ERROR: An error occured" raise finally: # Reset GPIO settings GPIO.cleanup()

På webservern kör jag med php som sagt, i conf.php måste du aktivera sockets, annars kan du inte använda dig av det i koden.
Web-server php:

<html> <head> </head> <body> <?php $message=$_POST['message']; echo "<html>"; print("<br>Start php-script <br>"); echo "</html>"; // The recieved message echo "Typed message: $message"; // Socket error handeling if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Couldn't create socket: [$errorcode] $errormsg \n"); } echo "<html>"; print("<br>Socket created <br>"); echo "</html>"; // Establish a connection if(!socket_connect($sock , '192.168.10.11' , 10002)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); echo "<html>"; print("Connection to Pi could not be established <br>"); echo "</html>"; die("Could not connect: [$errorcode] $errormsg \n"); } echo "<html>"; print("Connection established <br>"); echo "</html>"; //Send the message to the server if( ! socket_send ( $sock , $message , strlen($message) , 0)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not send data: [$errorcode] $errormsg \n"); } echo "<html>"; print("Message send successfully <br> Waiting for response <br>"); echo "</html>"; //Now receive reply from server if(socket_recv ( $sock , $buf , 2045 , MSG_WAITALL ) === FALSE) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); die("Could not receive data: [$errorcode] $errormsg \n"); } //print the received message echo "Recieved message: $buf <br>"; echo "<html>"; print("End php-script <br>"); echo "</html>"; ?> </body> </html>

Denna koden anropas av en html-sida:

<html> <head> <title>Take a bite of Pi</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <p> </p> <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong>Send a message to my Pi:</strong></font></p> <form name ="resultat" method="POST" action="index.php"> <div align="left"> <p><font face="Verdana, Arial, Helvetica, sans-serif">Enter message:</font> <input type="text" name="message" size="14"> <input type="submit" value="Send msg"> </p> <br> <font face="Verdana, Arial, Helvetica, sans-serif"><p align=left><img src="test2.jpg" width="400" height="300"></font> </div> </form> </body> </html>

Dold text

Som sagt det funkar men på serversidan finns garanterat utrymme för förbättring!

Hej hopp!
/z

Oj, det var inte lite kod. Om det funkar för dig är det ju bra, men borde det inte gå att göra enklare? Jag har ett par rader javascript, ett par rader php och sedan ett python-script på pajen. Man trycker på knappen, pajen tar ett kort och uppdaterar sidan automatiskt. Å andra sidan vet jag inte hur säkert det är, så ditt sätt kanske är bättre ändå.

Kan du förklara lite hur koden funkar? Har inte programmerat med sockets något.

Av Zhirgoyt
Skrivet av Mocka:

Antingen det eller att du köper en mindre (64gb) och bara har OS och program på. Så köper du en till 128a och bara har spel på den. Men då måste du vara noga med att installera spelen på den 128an

Eller så kör du på denna:
http://www.inet.se/produkt/4304478/samsung-ssd-basic-840-seri...

Och installerar som vanligt i Program Files.

Jag kör på det första alternativet och har en OS SSD, en spel SSD, en Steam SSD osv

Det är ju också en idé. Får kolla lite hur mycket mina program+OS tar i nuläget och så får vi se. Tack för hjälpen.

Av Zhirgoyt
Skrivet av Mocka:

SSDs har man inte bara till OS men även spel (tycker jag) så skall du göra det vore det inte dumt att köra en 256GB direkt. Dock kan det bli svårt att hitta en 256a för 1000kr. Kan inte minnas att jag sett en för det priset utan du lär behöva skjuta till några hundringar.

Tack för svaret!
Jo, det kanske är så. Får tänkte lite på det. Har du isf någon att rekommendera om jag skjuter till ett par hundringar?

Skrivet av Mocka:

Jag tror du måste göra på följande sätt:
1. Plugga loss din gamla HDD
2. Plugga i din SSD
3. Installera Windows på den
4. Stäng av datorn
5. Plugga i din gamla HDD
6. Starta datorn, gå in i BIOs/UEFI och se till att din gamla är nr 2 i bootordningen
7. Windows kommer fråga vilket OS du vill starta, kör det från SSDn
8. I Windows kan du sen ta bort frågan om vilket OS du vill boota ifrån (varje gång du startar datorn).

Vid ett senare tillfälle rekommenderas att du formaterar din gamla HDD efter att du tagit backup på det du vill spara så att den bara har filer som spel/musik osv och inte ett OS och gamla program.

Låter logiskt.

Skrivet av Mocka:

Edit - Förstod inte andra frågan men antar du menade något till ditt chassis för SSDn. Svaret är nej, ditt chassis stödjer 2.5 tums diskar.

Det var så jag menade ja, har försökt förtydliga nu. Men vad skönt.

Av Zhirgoyt

SSD-uppgradering

Hejsan,
Jag har planer på att uppgradera min lilla burk med en SSD och har lite frågor (varav inte alla handlar om just köpet, men jag hoppas det går bra ändå):

- Jag har tittat lite på den här 120gb SSD:n http://www.inet.se/produkt/5315286/kingston-ssd-v300-120gb. Frågan är: kommer jag att kunna köra på 120 gb relativt länge eller skall jag gå på 256gb direkt (finns det mellanting som är värda?)? Jag vill helst hamna under tusenlappen och tar gärna emot förslag på köp.

- Jag sitter på ett http://www.inet.se/produkt/6901303/cooler-master-elite-430-svart-chassi, kommer jag att behöva köpa till något för att en SSD skall gå att koppla in?

- Min kollega påstår att det lättaste för installationen vore om jag lade in SSDn, installerade Windows på den på nytt och lade min gamla hårddisk i "slave"-läge. Detta skulle göra att jag slipper flytta filer till min oexisterande backup utan "bara" behövde installera om programmen på SSDn. Stämmer detta eller kommer jag bara få problem om jag gör på detta sätt? Någon som har en bra guide på hur jag gör isf?

Tacksam för svar.
Z

Av Zhirgoyt
Skrivet av Xburk:

Var det kl 14 det drog igång eller?

Japp. Vi är där nu om en stund så det är bara att komma förbi.

Av Zhirgoyt
Skrivet av zonar:

Jag tänkte att min hemsida genererar ett meddelande till Raspberryn, som den lyssnar på. Tanken är att inte exponera Raspberryn mot internet, webserver går på LAN och den skickar meddelandet till raspberryn. Raspberryn FTPar sedan tillbaka den nya bilden så att den blir publicerad på webservern.

Jag ser inte omdelbart risken med att låta Python lyssna efter fördefinierad kommandon. Kommandot tas emot som en raw string och sedan körs en if/elseif sats för att bestämma vad som ska göras.

Du får gärna utveckla hur du tänker med säkerhetsproblemet.

Kan man få php att skicka något sorts meddelande om man trycker på en knapp?

mvh
/z

Nej, jag menade bara att om man kör med shell_exec så kan man säkert injecta lite vad man vill om man bara hackar lite och då vill man ju inte ha den öppen mot internet, men om du kör på sättet du skrev skall det väl inte vara några problem.

Det beror lite vad för sorts meddelande du menar? Vad är det Raspberryn skall lyssna på? Menar du något slags "lan-meddelande" eller typ en gmail?

Av Zhirgoyt
Skrivet av zonar:

Det ser ut som en smidig och trevlig lösning som absolut är ett alternativ! Dock måste jag i så fall även köra webserver ockå på Pi, ska fundera på om det är rätt väg.

Det är riktigt kul när man är några som kan hjälpa varandra. Synd att det är så långt till Gbg, annars hade jag gärna kommit förbi pi-coding eventet!

Satt och funderade lite till... om man anväder python och threading så kanske man kan skapa en separat tråd för kommunikation. Då kan man få python att lyssna efter kontroll-meddelanden.

På min webserver som körs på min server har jag php och apache just nu, skulle man kunna generera ett kommando från hemsidan som skickas till raspberryn?

Då tror jag att jag skulle kunna styra allt beteende i python nämligen?

mvh
/z

Jo, det är roligt när man kan hjälpa varandra. Synd att du inte kan komma förbi... men om ett par år har det växt sig så stort att du kör vi en nationell träff istället.

Jag tror inte riktigt jag är med på hur du menar. Var skulle python lyssna mot? Jag vet att man kan få den att kolla efter meddelanden som kommer in (gTalk/jabber) eller mail, men du menar ett kommando som skicka via din webserver till RPin på något annat sätt? Om du skickar det "direkt" tror jag att du lämnar ett sju-helvetes säkerhetshål... men jag är inte expert på sånt.

Av Zhirgoyt
Skrivet av Xburk:

Hade läst fel i mitt schema och är ledig den helgen, så räkna med mig! Ska försöka få med mig en polare också.

Btw, är du med i CRF? Har du isf koll på om man kan få tag på dokumentation (bygguiden) till de äldre versionerna av Introbot? (07 eller 08 tror jag).

Roligt!

Nej det är jag inte (än, om man blir det på lanet får man grejer gratis och det kostar bara 50 kr), men en av killarna som kommer, Tim, är väldigt aktiv inom den. Han vet säkert om sådant.

Hoppas vi ses där!

Av Zhirgoyt
Skrivet av zonar:

Strålande! Nu fick jag ett fint exempel på hur jag ska fixa till problemet med att skicka ett e-mail!

Dock tror jag att jag ska använda min internetoperatörs smtp-server för att då borde jag slippa hårdkoda in mitt lösenor till gmail!

Fantiastikt bra när man kan dela med sig av lite kodsnuttar!

För övrigt, är det någon som har någon idé om hur jag skulle kunna trycka på en knapp på min hemsida, för att skicka ett kommando till Pi som jag kan aggera på?

mvh
/z

Är nog en bättre idé, fick bara det här att funka och har inte orkat ändra det.

Jag kör lighttpd och en html-sida som gör ajax-anrop mot en php-sida och använder mig av:

shell_exec('bash /sökvätillbashskript');

Om du vill ha en exakt kopia av sidan jag har gjort så kan jag rensa den på "hemliga" saker och skicka dig.

Såhär ser den ut. Inte riktigt klar då både av/på-knapparna syns och den första knappen inte gör något. Den andra sätter igång min server och den tredje visar vädret som RPin hämtar från ett rss-flöde.

http://i.imgur.com/BvT8AOG.png

Av Zhirgoyt
Skrivet av zonar:

Nu har jag lekt lite.... jag är ingen expert på Python men knåpade ihop lite kod.

...

Men där är jag inte riktigt än, nu kan jag i alla fall trycka på knappen och sedan tar kameran en bild samt FTPar iväg bilden till min webserver.... so far so good. Tänkte bara dela med mig lite kod och ett exempel på vad man kan göra med sin Raspberry!

Coolt! Jag har inte löst någon fysisk knapp än, men jag kan google chatta med min RPi och om jag skriver ett kommando så tar den en bild och skickar till min gmail-adress. Kan ju vara en tanke om du vill slippa använda ftp för att se bilden.

Här är kod för att ta en bild och skicka den till en email. gTalk-boten är lite mer komplicerad, men kan posta kod för den också om det finns intresse.

#!#!/usr/bin/env python import smtplib import httplib import string import subprocess import os from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from subprocess import Popen, PIPE USERNAME = "dinEmail" PASSWORD = "dittLösen" MAILTO = "dinEmail" GETIT = "null" GETIT_override = "null" process = subprocess.Popen(["/bin/bash", "home/ANVÄNDARNAMN/takeImage.sh"], stdout=PIPE) OUTPUT = "home/ANVÄNDARNAMN/images/" + process.communicate()[0].rstrip() + ".jpg" print "Image taken:" + OUTPUT msg = MIMEMultipart() msg['Subject'] = "Latest image" msg['From'] = USERNAME msg['To'] = MAILTO img_data = open('%s' % OUTPUT, 'rb').read() text = MIMEText("test") msg.attach(text) image = MIMEImage(img_data, name=os.path.basename('%s' % OUTPUT)) msg.attach(image) server = smtplib.SMTP('smtp.gmail.com:587') server.ehlo_or_helo_if_needed() server.starttls() server.ehlo_or_helo_if_needed() server.login(USERNAME,PASSWORD) server.sendmail(USERNAME, MAILTO, msg.as_string()) server.quit() print "Image sent."

takeImage.sh:

#!/bin/bash NOW=$(date +"%m-%d-%Y-%H:%M:%S") #echo $NOW sudo raspistill -o "/home/ANVÄNDARNAMN/images/image$NOW.jpg" -t 500 echo "image$NOW"

Av Zhirgoyt
Skrivet av Xburk:

Roligt initiativ! Tror att jag ska jobba den helgen, men om jag kan byta pass kommer jag definitivt!

Har en RPi, breadboard och några halvtaskiga pythonscript redo så hoppas jag får ledigt.

Låter toppen! Om du kan byta så kom förbi

Skrivet av Kabeltv:

Låter riktigt trevligt, när är sista anmälningsdagen? Får se om jag tar mig till göteborg då, bor inte allt för nära :/

Det har vi ingen. Det är ju trevligt om vi vet onsdag-torsdag-fredag samma vecka ungefär hur många vi blir, å andra sidan vet vi ju att det inte är så att alla de som skrivit på facebook att de kommer faktiskt dyker upp.

När jag skrev "platser kvar" så menade jag mest att folk inte skulle missa det, vi har egentligen ingen riktig maxgräns.

Av Zhirgoyt

Finns platser kvar om folk fortfarande är sugna. Bara att se Chalmers Robotförening är värt det tycker jag.

Av Zhirgoyt

https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-frc3/q71/s480x...

Har en annan som har ett lego-case, men den här är roligare. Håller på att fixa med case till.

Efter gårddagens Kodar-LAN med fokus på RPi, har jag nu uppgraderat mitt kamera-stativ:

http://i.imgur.com/GO257yp.jpg

Av Zhirgoyt
Skrivet av glemmy:

Låter väldigt trevligt!
Kanske skulle skita i att fira födelsedagen det är året

Hah. Hur firar man en födelsedag bättre än med ett LAN?

Av Zhirgoyt
Skrivet av Romoes:

Smart, men planerna nu blir att ha holken tillräckligt nära mitt wifi så att det kan streamas till en hemsida

Aha, ja det är ju smart. Det är ganska lätt att få igång streamen, men skriv om du inte lyckas. Tog lite pill