SNMP communicatie met netwerkprinter
10 berichten
• Pagina 1 van 1
SNMP communicatie met netwerkprinter
Ik ben volledig nieuw met Arduino, en heb ondertussen al een heleboel tutorial filmpjes bekeken en uitgetest.
Voor mijn eerste eigen project had ik graag een beetje uitleg gehad.
Het is de bedoeling dat ik mijn Arduino Uno koppel aan mijn router waar ook mijn printer op aangesloten is.
Via deze weg wil ik dan een "hard coded" SNMP "get" functie naar de printer sturen (na een druk op een knop). Het antwoord van deze printer moet dan weergegeven worden in de "serial monitor".
Kan iemand mij een beetje op gang helpen aub?
Via Google kwam ik ook op "agentuino", waar ik ook niet echt wijzer van werd.
Voor mijn eerste eigen project had ik graag een beetje uitleg gehad.
Het is de bedoeling dat ik mijn Arduino Uno koppel aan mijn router waar ook mijn printer op aangesloten is.
Via deze weg wil ik dan een "hard coded" SNMP "get" functie naar de printer sturen (na een druk op een knop). Het antwoord van deze printer moet dan weergegeven worden in de "serial monitor".
Kan iemand mij een beetje op gang helpen aub?
Via Google kwam ik ook op "agentuino", waar ik ook niet echt wijzer van werd.
Advertisement
Re: SNMP communicatie met netwerkprinter
Ik hoor het woord "ethernet shield" niet vallen. Neem aan dat je deze hebt?
Re: SNMP communicatie met netwerkprinter
Ik heb idd het ethernetshield, maar weet niet op welke manier ik dus moet praten met mijn printer.
Via mijn pc (mib browser) gaat het in elk geval wel.
Via mijn pc (mib browser) gaat het in elk geval wel.
Re: SNMP communicatie met netwerkprinter
Kort en goed: ik kan je niet helpen. Geen ervaring mee.
Maar misschien help ik je op weg met http://www.pushingbox.com/ ?
In de Arduino-IDE vind je onder [bestand]-[Voorbeelden]-[PushingBox] een voorbeeld sketch.
Maar jij wil je printer lokaal aansturen hè?
Zijn vast mensen op het forum die je verder op weg kunnen helpen.
Succes! Enne... Graag even laten weten als het je gelukt is. Dan kan ik je "wijze" overnemen.
Maar misschien help ik je op weg met http://www.pushingbox.com/ ?
In de Arduino-IDE vind je onder [bestand]-[Voorbeelden]-[PushingBox] een voorbeeld sketch.
Maar jij wil je printer lokaal aansturen hè?
Zijn vast mensen op het forum die je verder op weg kunnen helpen.
Succes! Enne... Graag even laten weten als het je gelukt is. Dan kan ik je "wijze" overnemen.
Re: SNMP communicatie met netwerkprinter
Wat ik niet helemaal begrijp is waarom je een microcontroller, die vooral gebruikt wordt voor het uitlezen van allerlei knoppen en sensoren enerzijds en het aansturen van lampjes, motortjes en andere basic hardware anderzijds, wilt inzetten voor ethernetcommunicatie, dus PC <-USB-> Arduino <-ethernet-> printer. Die PC kan toch prima zelf met die printer praten, zoals je schrijft met de MIB browser?
If you think education is expensive, try ignorance! (Derek Bok)
Re: SNMP communicatie met netwerkprinter
Inderdaad: het is pas zinvol als je de PC uitzet en de Arduino het verder laat afhandelen. Kan het ding de meterkast in. Lukt je niet met een PC.
Re: SNMP communicatie met netwerkprinter
Maar wat moet die printer dan nog doen, als de PC uitstaat? SNMP is Simple Network Management Protocol, gebruikt om bijv. beschikbaarheid van apparaten op het netwerk te monitoren, niet om printopdrachten naar een printer te sturen. Voor het monitoren van mijn netwerk zou ik eerder iets gebruiken als een NSLU2 van Linksys. Die kan je een andere kernel geven, unslung, en met een webserver uitrusten om je monitoring op te tonen. Ik heb die dingen draaien als dhcp-server, muziekserver, printserver, en oh ja, ook nog met het oorspronkelijke doel, als netwerk-opslag.
If you think education is expensive, try ignorance! (Derek Bok)
Re: SNMP communicatie met netwerkprinter
Jullie hebben allemaal gelijk wat betreft de koppeling pc > Arduino > printer, maar mijn uiteindelijke doel is om een "meettoestel" te maken waarmee ik standalone bepaalde vaste waarden wil opvragen van een netwerkapparaat door gebruik te maken van snmp. Om te beginnen wil ik bijvoorbeeld enkel de sysuptyme opvragen van mijn printer. Later wil ik overstappen van mijn printer naar andere apparaten.
Ik wou eigenlijk gewoon gestart geraken met Arduino en snmp, de lcd ed volgen later wel. Sorry voor de onduidelijkheid, maar ik wou niet overkomen als iemand die op zoek was naar een kant en klare oplossing. Ik ben een echte beginner op gebied van Arduino, en zie het als een grote uitdaging om dit als eerste echte project werkend te krijgen.
Ik hoop dus dat er iemand is die me kan uitleggen hoe ik te werk moet gaan met die snmp. En vooral welke bibliotheken ik hiervoor nodig heb. Hoe ik het verzenden en ontvangen van die data best aanpak, enzovoort.
Ik wou eigenlijk gewoon gestart geraken met Arduino en snmp, de lcd ed volgen later wel. Sorry voor de onduidelijkheid, maar ik wou niet overkomen als iemand die op zoek was naar een kant en klare oplossing. Ik ben een echte beginner op gebied van Arduino, en zie het als een grote uitdaging om dit als eerste echte project werkend te krijgen.
Ik hoop dus dat er iemand is die me kan uitleggen hoe ik te werk moet gaan met die snmp. En vooral welke bibliotheken ik hiervoor nodig heb. Hoe ik het verzenden en ontvangen van die data best aanpak, enzovoort.
Re: SNMP communicatie met netwerkprinter
Ik ben ondertussen al een heel eind gevorderd, ik heb een index.htm pagina op het sd kaartje staan van de ethernetshield waarmee ik via vbscript het snmp gebeuren afhandel..
Verder heb ik een sketch gemaakt waarmee ik de index.htm pagina open die op het sd kaartje staat. (op basis van het webserver voorbeeld)
Nu krijg ik een pagina te zien met volgende gegevens op:
Hoe kan ik deze gegevens (of toch zeker 1 lijn) in mijn serial monitor krijgen?
- Code: Alles selecteren
<HTML>
<HEAD>
<TITLE>SNMP_Get Arduino</TITLE>
</HEAD>
<BODY>
Klik op onderstaande knop om de SNMPGET procedure uit te voeren.
<FORM NAME="Form1">
<INPUT TYPE="Button" NAME="Button1" VALUE="SNMP_GET">
<SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">
Input=InputBox("Geef het IP adres op van het netwerkelement.","Userinput","192.168.0.233")
on error resume next
err.clear
strOutput = ""
strDeviceIP = Input
'strOutput = strOutput & strDeviceIP & vbcrlf
strCommunity = "public"
set objSNMP = CreateObject("OlePrn.OleSNMP")
objSNMP.Open strDeviceIP, strCommunity, 2, 1000
printer_hostname = objSNMP.Get(".1.3.6.1.2.1.1.5.0")
if err.number = 0 then
display1 = objSNMP.Get(".1.3.6.1.2.1.43.16.5.1.2.1.1")
display2 = objSNMP.Get(".1.3.6.1.2.1.43.16.5.1.2.1.2")
display3 = objSNMP.Get(".1.3.6.1.2.1.43.16.5.1.2.1.3")
display4 = objSNMP.Get(".1.3.6.1.2.1.43.16.5.1.2.1.4")
uptime = objSNMP.Get(".1.3.6.1.2.1.1.3.0")
model = objSNMP.Get(".1.3.6.1.2.1.25.3.2.1.3.1")
tps = 100
tpm = tps * 60
tph = tpm * 60
tpd = tph * 24
ticks = Uptime
seconds = int(ticks/tps) mod 60
minutes = int(ticks/tpm) mod 60
hours = int(ticks/tph) mod 24
days = int(ticks/tpd)
uptime = "Uptime: " & days & " dagen," & hours & " uren," & minutes & " minuten," & seconds & " seconden."
strOutput = strOutput & Printer_Hostname & vbcrlf & model & vbcrlf & " Display Panel:" & vbcrlf
strOutput = strOutput & string(20,61) & vbcrlf
strOutput = strOutput & display1 & vbcrlf & display2 & vbcrlf & _
display3 & vbcrlf & display4 & vbcrlf
strOutput = strOutput & string(20,61) & vbcrlf
stroutput = uptime 'strOutput & uptime
wscript.echo strOutput
end if
MsgBox strOutput
document.write("hostname = " & printer_hostname)
document.write("<br /> model = " & model)
document.write("<br /> uptime = "& uptime)
</SCRIPT>
</FORM>
</BODY>
</HTML>
Verder heb ik een sketch gemaakt waarmee ik de index.htm pagina open die op het sd kaartje staat. (op basis van het webserver voorbeeld)
- Code: Alles selecteren
/*
Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
//toegevoegd
EthernetClient client;
// tot hier
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,250);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
File webFile;
void setup()
{
Ethernet.begin(mac, ip); // initialize Ethernet device
server.begin(); // start to listen for clients
Serial.begin(9600); // for debugging
// initialize SD card
Serial.println("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("ERROR - SD card initialization failed!");
return; // init failed
}
Serial.println("SUCCESS - SD card initialized.");
// check for index.htm file
if (!SD.exists("index.htm")) {
Serial.println("ERROR - Can't find index.htm file!");
return; // can't find index file
}
Serial.println("SUCCESS - Found index.htm file.");
}
void loop()
{
EthernetClient client = server.available(); // try to get client
if (client) { // got client?
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // client data available to read
char c = client.read(); // read 1 byte (character) from client
// last line of client request is blank and ends with \n
// respond to client only after last line received
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
// send web page
webFile = SD.open("index.htm"); // open web page file
if (webFile) {
while(webFile.available()) {
client.write(webFile.read()); // send web page to client
//Serial.print(webFile.read());
}
webFile.close();
}
break;
}
// every line of text received from the client ends with \r\n
if (c == '\n') {
// last character on line of received text
// starting new line with next character read
currentLineIsBlank = true;
}
else if (c != '\r') {
// a text character was received from client
currentLineIsBlank = false;
}
} // end if (client.available())
} // end while (client.connected())
delay(1); // give the web browser time to receive the data
client.stop(); // close the connection
} // end if (client)
}
Nu krijg ik een pagina te zien met volgende gegevens op:
- Code: Alles selecteren
hostname = ET00200029147A
model = 968 AIO Printer
uptime = Uptime: 10 dagen,4 uren,51 minuten,33 seconden.
Hoe kan ik deze gegevens (of toch zeker 1 lijn) in mijn serial monitor krijgen?
Re: SNMP communicatie met netwerkprinter
De html code wordt door de webserver naar je internet browser (PC) gestuurd en daar wordt het script uitgevoerd, maar als ik het goed begrijp moet de Arduino de data opvragen via ethernet. Dus je moet geen webserver op de Arduino zetten, maar een client.
10 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 37 gasten