nslu2-info.de ist ein privates Projekt von mir, welches jeden Monat aus eigener Tasche finanziert wird. Mit einer freiwilligen Spende wird der Erhalt und der weitere Ausbau dieses Forums unterstützt. Um mich beim Erhalt des Forums zu unterstützen, kannst Du entweder via Flattr oder Paypal spenden. Ich bedanke mich schon jetzt bei allen Unterstützern.
wcf.user.option.userOption65: Unslung 6.8
Occupation: Softwareentwickler C++,VB.NET,JS,SQL,PHP,ASP,XSL
wcf.user.option.userOption65: Unslung 6.8
Occupation: Softwareentwickler C++,VB.NET,JS,SQL,PHP,ASP,XSL
Welche FW verwendest Du auf Deiner NSLU2?
Quoted from "elbling;34209"
Ich lese meine Viessmann Heizung mit dem NSLU2 aus [...]
Quoted from "ao;34216"
Welche FW verwendest Du auf Deiner NSLU2?
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# Pragmas
use strict;
# Modules
use Device::SerialPort;
# Objekt fuer serielle Schnittstelle mu? vor dem Signalhandler bekannt sein !
my $portObj;
# Porteinstellungen
my %COM = (
'port' => '/dev/ttyUSB0', # kann auch USB1 sein -> probieren
'baudrate' => 9600,
'parity' => 'none',
'databits' => 8,
'stopbit' => 1,
# Modembefehle -> passen fuer waterkotte -> anpassen
'initstring' => 'AT&F', # Initialisierung
'praefix' => 'ATDT', # Waehlpraefix
'reset' => 'AT&F3' # Zuruecksetzen
);
# Objekt fuer serielle Schnittstelle erzeugen
$portObj = new Device::SerialPort ( $COM{'port'} )
|| die "Kann den Port nicht oeffnen: $^E\n";
# debugging-level -> kann hilfreich sein, später einfach weglassen
$portObj->debug(1);
# 9600 Baud / 8 Bit / 1 Stop / Parity none
$portObj->baudrate( $COM{'baudrate'} );
$portObj->databits( $COM{'databits'} );
$portObj->parity( $COM{'parity'} );
$portObj->stopbits( $COM{'stopbit'} );
# Buffer leeren
$portObj->lookclear();
# Modem initialisieren
$portObj->write( $COM{'initstring'}."\r" );
# fflush einstellen
$| = 1;
# request zusammenbauen -> hier sollte Dein initialisierungsstring stehen
# Also Deine Anfrage an die Heizung
my $request = 'xyz';
# Endlosschleife beginnen
while(1)
{
# Beginne mit Schreiben ...
my $req_count = $portObj->write( $request );
# Warten vor dem Einlesen -> Heizungen sind nicht so schnell ;-)
sleep(2);
# Antwort einlesen -> laenge fuer deine Heizungssteuerung anpassen.
my $LEN = 315;
my $in = $LEN + 10 + 20; # 10 mehr wegen Offset und nochwas drauf wegen redundanter 0x10
# Probier, was Du brauchst
my ( $count_in, $response ) = $portObj->read($in);
# ab hier stehen die Daten in $response zur Verfügung
# $count_in sagt Dir, wieviel Bytes von der Heizung geliefert wurden.
sleep( 20 ); # Wartezeit bis zum nächsten Auslesen
} # while ...
# Bis hierher kommt man nicht !
$portObj->close();
$db->disconnect();
exit(0);
__END__
|
Beginner
wcf.user.option.userOption68: 2 x NSLU2, Lan-Server, ...
wcf.user.option.userOption65: Debian