Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:controller:m-bus

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
hardware:controllers:m-bus [2011/11/27 10:27] – [Installation] udo1software:controller:m-bus [2023/05/17 21:06] (aktuell) – [Test] raptorsds
Zeile 1: Zeile 1:
-====== M-Bus Controler ======+====== M-Bus Controller ======
  
-Der Mbus Controler dient zur Anbindung des Meter-Bus http://de.wikipedia.org/wiki/M-Bus_(Feldbus)an den Volkszaehler+Der Mbus Controler dient zur Anbindung des [[http://de.wikipedia.org/wiki/M-Bus_(Feldbus)|Meter-Bus]] an den Volkszaehler
  
 +Standart M-Bus
 +2400Baud 8b even 1stop
 +
 +möglich auch
 + 300Baud 8b even 1stop 
 +oder selten 
 +9600Baud 8b even 1stop
 ===== Vorraussetzungen ===== ===== Vorraussetzungen =====
  
Zeile 10: Zeile 17:
  
 ===== Installation ===== ===== Installation =====
 +Quellpaket [[https://wiki.volkszaehler.org/_media/software/controller/m-bus.zip]] herunterladen und entpacken und ausführbar machen.
 +<code>
 +wget https://wiki.volkszaehler.org/_media/software/controller/m-bus.zip
 +</code>
 +<code>
 +unzip m-bus.zip
 +</code>
 +<code>
 +cd m-bus
 +</code>
 +<code>
 +chmod +x install.sh
 +</code>
 +<code>
 +./install.sh
 +</code>
  
-Die Dateien unter: volkszaehler.org/misc/controller/mbus in ein beliebiges Verzeichnis (z.B. /usr/local/m-bus) kopieren.+erzeugt einen Benutzer mbus und packt ihn in die Gruppe dialout damit er auf die Serielle Schnittstelle zugreifen kannIm Anschluß kopiert das Skript die Dateien in die richtigen Pfade.
  
 +Es kann vorkommen das man einen Neustart machen muss damit der Neue Benutzer richtig erkannt wird 
 ===== Konfiguration ===== ===== Konfiguration =====
  
 Den Seriellen Pegelwandler an den PC anschließen Den Seriellen Pegelwandler an den PC anschließen
  
-In der Datei mbusconf.pm Einstellungen zum Port Baudrate etc. vornehmen:+In der Datei ''/etc/mbus/mbusconf.pm'' Einstellungen zum Port Baudrate etc. vornehmen, die Einstellungen sind dort mit # einkommentiert (die # entfernen!):
  
-''$mbusPort="/dev/messbus"; # or /dev/ttyS0 ..+<code> 
 +$mbusPort="/dev/messbus"; # or /dev/ttyS0 ..
 $vzURL="http://host.domain/volkszaehler/middleware.php/"; $vzURL="http://host.domain/volkszaehler/middleware.php/";
-$vzOldFile="/root/.mbus-vzold"; 
-$mbusserial="/root/.mbusserial"; 
 $mbusBaudrate=2400;'' $mbusBaudrate=2400;''
 +</code>
  
-In der Datei: vzOldFile werden Zählerstände gespeichert, weil der Volkszaehler z.Zt nur mit relativen Verbrauchswerten umgehen kann.+In der Datei: ''/var/lib/mbus/vzold'' werden Zählerstände gespeichert, weil der Volkszaehler z.Zt nur mit relativen Verbrauchswerten umgehen kann.
  
 Jetzt auf dem Mbus nach Devices suchen.  Jetzt auf dem Mbus nach Devices suchen. 
  
-''./mbus-cmd --genserial''+<code> 
 +./mbus-cmd --genserial 
 +</code>
  
-Die Seriellen Adressen werden in der Datei: +Fehlermöglichkeiten 
-$mbusserial gespeichert.+  - Serial 
 +Je nach Installation kann die Installation verschiedener perl-Bibliotheken erforderlich sein. Das erkennt man daran, dass der mbus-cmd Befehl Fehlermeldungen ausgibt wie z.B.: 
 + 
 +Can't locate Device/SerialPort.pm in @INC (@INC contains: /etc/perl 
 + 
 +sucht man z.B. in Google nach dieser Fehlermeldung findet man schnell einen Hinweis, dass mit 
 +<code> 
 +apt-get install libdevice-serialport-perl 
 +</code>  
 + 
 +  - LWP 
 +Can't locate LWP.pm in @INC 
 +<code> 
 +apt-get install libwww-perl 
 +</code>  
 + 
 + 
 +  - simple LWP 
 +Can't locate LWP/simple.pm in @INC 
 +<code> 
 +perl -MCPAN -e'install "LWP::Simple"' 
 +</code> 
 +!dieser Befehl kompiliert auch weiter PM Files und könnte etwas länger dauern 
 + 
 + 
 +  - simple Lock 
 +Can't locate LockFile/simple.pm in @INC 
 +<code> 
 +perl -MCPAN -e'install "LockFile::Simple"' 
 +</code> 
 + 
 +die entsprechende Bibliothek nachinstalliert werden muss. Wenn alles da ist, startet der Scan und die Seriellen Adressen werden in der Datei: 
 +/etc/mbus/serialno gespeichert
 + 
 +Sicherstellen, das in diese Datei nur Root schreiben darf, aber mbus lesen kann.
  
 Jedes M-Bus Device kann wiederum viele Zähler zurückliefen. Jedes M-Bus Device kann wiederum viele Zähler zurückliefen.
  
-''./mbus-cmd -print-busconf''+<code> 
 +./mbus-cmd -print-mbusconf 
 +</code> 
  
 Bekommt man eine Ausgabe aller Zähler Bekommt man eine Ausgabe aller Zähler
  
-''$vzUuid{"09999999-Fabriknummer"}="";# (09999999) +<code> 
 +$vzUuid{"09999999-Fabriknummer"}="";# (09999999) 
 $vzUuid{"09999999-Heizenergie"}="";# (00060958)  $vzUuid{"09999999-Heizenergie"}="";# (00060958) 
-$vzUuid{"09999999-Volumen"}="";# (11245.24)  +$vzUuid{"09999999-Volumen"}="";# (11245.24) 
-$vzUuid{"09999999-Fliessgeschwindigkeit"}="";# (1.534) ''+$vzUuid{"09999999-Fliessgeschwindigkeit"}="";# (1.534) 
 +... 
 +</code>
  
  
-Jetzt Zähler anlegen, z.B. mit dem [[software/clients/vzclient]]+Jetzt Zähler anlegen, z.B. mit dem [[software:frontends:frontend]]
  
  
 Diese Zeilen können nun mit der uuid in die bestehende mbusconf.pm übernommen werden, also z.B.: Diese Zeilen können nun mit der uuid in die bestehende mbusconf.pm übernommen werden, also z.B.:
  
-'' +<code> 
-$vzUuid{"09999999-Heizenergie"}="503ad3d0-18d4-11e1-9d30-8f7c5e0b88b1";# (09999999+$vzUuid{"09999999-Heizenergie"}="503ad3d0-18d4-11e1-9d30-8f7c5e0b88b1";# (00060958
 $vzUuid{"09999999-Volumen"}="669bd360-18d4-11e1-8c33-055342b3cb21";# (11245.24)  $vzUuid{"09999999-Volumen"}="669bd360-18d4-11e1-8c33-055342b3cb21";# (11245.24) 
-$vzUuid{"09999999-Fliessgeschwindigkeit"}="6c345080-18d4-11e1-8e07-7d37ae5b0848";# (1.534) ''+$vzUuid{"09999999-Fliessgeschwindigkeit"}="6c345080-18d4-11e1-8e07-7d37ae5b0848";# (1.534)  
 +</code> 
 + 
 +===== Tipp: Device Konfiguration mit udev ===== 
 + 
 +Durch das Anlegen einer Datei ''/etc/udev/rules.d/99-usb-serial.rules'' mit ungefähr dem Inhalt: 
 + 
 +  SUBSYSTEM=="tty",ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6001",ATTRS{serial}=="FTF4ADX9",OWNER="mbus",SYMLINK+="messbus" 
 + 
 +(alles in einer Zeile!) 
 + 
 +kann man dafür sorgen, das das richtige Device immer ''/dev/messbus'' heißt und dem Benutzer mbus gehört. Dann muss das der mbus Benutzer auch nicht in die Gruppe dialout. 
 + 
 +Die nötigen Werte für idVendor usw. erhält man mit: 
 + 
 +<code> 
 +udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) 
 +</code> 
 + 
 +===== Test ===== 
 + 
 +<del><code> 
 +su - mbus 
 +./mbus-cmd --verbose 
 +</code></del> 
 + 
 +Ergibt eine Ausgabe der übertragenen Daten. 
 + 
 +<code> 
 +su - mbus 
 +./mbus-cmd --sqlout 
 +</code> 
 + 
 +Alternativ auch Rohdaten möglich 
 +<code> 
 +su - mbus 
 +./mbus-cmd --sqlrawout 
 +</code> 
 + 
 +Kann man alle Zählerstände in einer MySQL Syntax abfragen um zu testen, oder die Zählerstände nochmals zusätzlich  zu speichern. 
 + 
 +===== Regelmäßiger Aufruf im Cron ===== 
 + 
 +Sicherstellen, dass die Datei: ''/var/lib/mbus/vzold'' auch im cron geschrieben werden darf, dazu 
 +<code> 
 +chmod 666 /var/lib/mbus/vzold  
 +</code> 
 + 
 +eingeben.  
 + 
 +''/etc/cron.d/mbus'': 
 +<code> 
 +*/3 * * * *    mbus    /usr/local/bin/mbus-cmd 
 +</code> 
 + 
 +Nun sollte der Cron alle 3 Minuten laufen, dass lässt sich nun anhand des Datums der Datei ''/var/lib/mbus/vzold'' überprüfen.
software/controller/m-bus.1322386024.txt.gz · Zuletzt geändert: 2011/11/27 10:27 von udo1