MBus Heatmeter Reading: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
(→Links) |
||
| (39 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
= Links = | |||
* https://m-bus.com/ | |||
* https://m-bus.de/ | |||
* https://www.modbusdriver.com/modpoll.html | |||
* https://piers.rocks/2020/04/11/mbus-primary-and-secondary-addresses.html | |||
* https://www.mikrocontroller.net/topic/438972 | * https://www.mikrocontroller.net/topic/438972 | ||
* https://www. | * https://github.com/ganehag/pyMeterBus | ||
= Videos = | |||
<youtube>0JyeLY9NURg</youtube> | |||
= Devices = | |||
== USB IR Reader == | |||
e.g. [https://www.amazon.de/dp/B0C6YH3XWB bitShake SmartMeterReader - USB IR Lesekopf] | |||
=== Linux === | |||
<source lang='bash' highlight='1,3'> | |||
lsusb | |||
Bus 001 Device 006: ID 10c4:ea60 Silicon Labs CP210x UART Bridge | |||
/usr/bin/udevadm info --query=all --name=/dev/ttyUSB0 | |||
P: /devices/pci0000:00/0000:00:15.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0 | |||
N: ttyUSB0 | |||
L: 0 | |||
S: serial/by-path/pci-0000:00:15.0-usb-0:2:1.0-port0 | |||
S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0026-if00-port0 | |||
E: DEVPATH=/devices/pci0000:00/0000:00:15.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0 | |||
E: DEVNAME=/dev/ttyUSB0 | |||
E: MAJOR=188 | |||
E: MINOR=0 | |||
E: SUBSYSTEM=tty | |||
E: USEC_INITIALIZED=9041897 | |||
E: ID_BUS=usb | |||
E: ID_VENDOR_ID=10c4 | |||
E: ID_MODEL_ID=ea60 | |||
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller | |||
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller | |||
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI | |||
E: ID_VENDOR_FROM_DATABASE=Silicon Labs | |||
E: ID_MODEL_FROM_DATABASE=CP210x UART Bridge | |||
E: ID_VENDOR=Silicon_Labs | |||
E: ID_VENDOR_ENC=Silicon\x20Labs | |||
E: ID_MODEL=CP2102_USB_to_UART_Bridge_Controller | |||
E: ID_MODEL_ENC=CP2102\x20USB\x20to\x20UART\x20Bridge\x20Controller | |||
E: ID_REVISION=0100 | |||
E: ID_SERIAL=Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0026 | |||
E: ID_SERIAL_SHORT=0026 | |||
E: ID_TYPE=generic | |||
E: ID_USB_INTERFACES=:ff0000: | |||
E: ID_USB_INTERFACE_NUM=00 | |||
E: ID_USB_DRIVER=cp210x | |||
E: ID_PATH=pci-0000:00:15.0-usb-0:2:1.0 | |||
E: ID_PATH_TAG=pci-0000_00_15_0-usb-0_2_1_0 | |||
E: ID_MM_CANDIDATE=1 | |||
E: DEVLINKS=/dev/serial/by-path/pci-0000:00:15.0-usb-0:2:1.0-port0 /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0026-if00-port0 | |||
E: TAGS=:systemd: | |||
E: CURRENT_TAGS=:systemd: | |||
= | </source> | ||
=== set baud rate === | |||
<source lang='bash' highlight='1'> | |||
stty -F /dev/ttyUSB0 2400 | |||
</source> | |||
=== Video === | |||
<youtube>0ZjDFD1Q_hM</youtube> | <youtube>0ZjDFD1Q_hM</youtube> | ||
== Mac == | |||
<source lang='bash'> | |||
ioreg -p IOUSB -l -w 0 | grep -i uart | |||
+-o CP2102 USB to UART Bridge Controller@14200000 <class AppleUSBDevice, id 0x10006716a, registered, matched, active, busy 0 (8 ms), retain 13> | |||
| "USB Product Name" = "CP2102 USB to UART Bridge Controller" | |||
| "kUSBProductString" = "CP2102 USB to UART Bridge Controller" | |||
</source> | |||
=== CP210x VCP Driver === | |||
* https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip | |||
* download, unpack and install SiLabsUSBDriverDisk.dmg | |||
= Heat Meters = | |||
== CF Utramaxx-mk == | |||
https://m.media-amazon.com/images/I/71s+UPQ+jhL._AC_SL1500_.jpg | |||
<pdf> | |||
https://www.allmess.de/fileadmin/multimedia/alle_Dateien/DB/DB_P0012%20UltraMaXX_TS0219.pdf | |||
</pdf> | |||
* https://emea.itron.com/products/cf-ultramaxx-v | |||
https://emea.itron.com/o/commerce-media/accounts/-1/images/3198895?download=false | |||
<pre> | |||
Standard Werkseinstellung: | |||
Primäradresse: 0 | |||
Sekundäradresse: Zählernummer | |||
Baudrate: 2400 Baud | |||
</pre> | |||
https://www.itron.com/de/solutions/product-catalog/cf-ultramaxx-mk | |||
=== Windows Auslese Software: UMCS === | |||
[[File:UMCS-ScreenShot2025-01-22-1043.jpg|400px]] | |||
=== Protokoll Mitschrift === | |||
AD= Address | |||
CI=https://m-bus.com/documentation-wired/06-application-layer CI field | |||
* wakeup: 1028x55 2.766 sec | |||
* 68 03 03 68 53 fe a6 f7 16 | |||
= Software = | |||
== pyMeterBus == | |||
* https://github.com/ganehag/pyMeterBus | |||
<source lang='bash' highlight='1,9-10'> | |||
git clone https://github.com/ganehag/pyMeterBus | |||
Cloning into 'pyMeterBus'... | |||
remote: Enumerating objects: 1219, done. | |||
remote: Counting objects: 100% (85/85), done. | |||
remote: Compressing objects: 100% (50/50), done. | |||
remote: Total 1219 (delta 34), reused 70 (delta 29), pack-reused 1134 | |||
Receiving objects: 100% (1219/1219), 271.58 KiB | 757.00 KiB/s, done. | |||
Resolving deltas: 100% (750/750), done. | |||
cd pyMeterBus/ | |||
pip3 install . | |||
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple | |||
Processing /home/wf/source/python/pyMeterBus | |||
Collecting pyaml (from pyMeterBus==0.8.3) | |||
Downloading https://files.pythonhosted.org/packages/6d/5a/5200ad18f321530b881f667c47d20026c3795dbbc200619c0330311b7907/pyaml-23.5.8-py3-none-any.whl | |||
Collecting pycryptodome (from pyMeterBus==0.8.3) | |||
Downloading https://www.piwheels.org/simple/pycryptodome/pycryptodome-3.20.0-cp35-abi3-linux_armv7l.whl (2.0MB) | |||
100% |████████████████████████████████| 2.0MB 198kB/s | |||
Requirement already satisfied: pyserial in /usr/lib/python3/dist-packages (from pyMeterBus==0.8.3) (3.4) | |||
Requirement already satisfied: simplejson in /usr/lib/python3/dist-packages (from pyMeterBus==0.8.3) (3.16.0) | |||
Requirement already satisfied: PyYAML in /usr/local/lib/python3.7/dist-packages (from pyaml->pyMeterBus==0.8.3) (5.1) | |||
Building wheels for collected packages: pyMeterBus | |||
Running setup.py bdist_wheel for pyMeterBus ... done | |||
Stored in directory: /tmp/pip-ephem-wheel-cache-ybm69ily/wheels/40/49/79/d2c9d6b919d406ea11affa578792c7729298e8c0ca25044c24 | |||
Successfully built pyMeterBus | |||
Installing collected packages: pyaml, pycryptodome, pyMeterBus | |||
Successfully installed pyMeterBus-0.8.3 pyaml-23.5.8 pycryptodome-3.20.0 | |||
</source> | |||
== MBus-Reader == | |||
https://github.com/WolfgangFahl/mbusreader | |||
Latest revision as of 08:56, 25 January 2025
Links
- https://m-bus.com/
- https://m-bus.de/
- https://www.modbusdriver.com/modpoll.html
- https://piers.rocks/2020/04/11/mbus-primary-and-secondary-addresses.html
- https://www.mikrocontroller.net/topic/438972
- https://github.com/ganehag/pyMeterBus
Videos
Devices
USB IR Reader
e.g. bitShake SmartMeterReader - USB IR Lesekopf
Linux
lsusb
Bus 001 Device 006: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
/usr/bin/udevadm info --query=all --name=/dev/ttyUSB0
P: /devices/pci0000:00/0000:00:15.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
L: 0
S: serial/by-path/pci-0000:00:15.0-usb-0:2:1.0-port0
S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0026-if00-port0
E: DEVPATH=/devices/pci0000:00/0000:00:15.0/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0
E: DEVNAME=/dev/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=9041897
E: ID_BUS=usb
E: ID_VENDOR_ID=10c4
E: ID_MODEL_ID=ea60
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_VENDOR_FROM_DATABASE=Silicon Labs
E: ID_MODEL_FROM_DATABASE=CP210x UART Bridge
E: ID_VENDOR=Silicon_Labs
E: ID_VENDOR_ENC=Silicon\x20Labs
E: ID_MODEL=CP2102_USB_to_UART_Bridge_Controller
E: ID_MODEL_ENC=CP2102\x20USB\x20to\x20UART\x20Bridge\x20Controller
E: ID_REVISION=0100
E: ID_SERIAL=Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0026
E: ID_SERIAL_SHORT=0026
E: ID_TYPE=generic
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=cp210x
E: ID_PATH=pci-0000:00:15.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_00_15_0-usb-0_2_1_0
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-path/pci-0000:00:15.0-usb-0:2:1.0-port0 /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0026-if00-port0
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:
set baud rate
stty -F /dev/ttyUSB0 2400
Video
Mac
ioreg -p IOUSB -l -w 0 | grep -i uart
+-o CP2102 USB to UART Bridge Controller@14200000 <class AppleUSBDevice, id 0x10006716a, registered, matched, active, busy 0 (8 ms), retain 13>
| "USB Product Name" = "CP2102 USB to UART Bridge Controller"
| "kUSBProductString" = "CP2102 USB to UART Bridge Controller"
CP210x VCP Driver
- https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip
- download, unpack and install SiLabsUSBDriverDisk.dmg
Heat Meters
CF Utramaxx-mk
https://m.media-amazon.com/images/I/71s+UPQ+jhL._AC_SL1500_.jpg
https://emea.itron.com/o/commerce-media/accounts/-1/images/3198895?download=false
Standard Werkseinstellung: Primäradresse: 0 Sekundäradresse: Zählernummer Baudrate: 2400 Baud
https://www.itron.com/de/solutions/product-catalog/cf-ultramaxx-mk
Windows Auslese Software: UMCS
Protokoll Mitschrift
AD= Address CI=https://m-bus.com/documentation-wired/06-application-layer CI field
- wakeup: 1028x55 2.766 sec
- 68 03 03 68 53 fe a6 f7 16
Software
pyMeterBus
git clone https://github.com/ganehag/pyMeterBus
Cloning into 'pyMeterBus'...
remote: Enumerating objects: 1219, done.
remote: Counting objects: 100% (85/85), done.
remote: Compressing objects: 100% (50/50), done.
remote: Total 1219 (delta 34), reused 70 (delta 29), pack-reused 1134
Receiving objects: 100% (1219/1219), 271.58 KiB | 757.00 KiB/s, done.
Resolving deltas: 100% (750/750), done.
cd pyMeterBus/
pip3 install .
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Processing /home/wf/source/python/pyMeterBus
Collecting pyaml (from pyMeterBus==0.8.3)
Downloading https://files.pythonhosted.org/packages/6d/5a/5200ad18f321530b881f667c47d20026c3795dbbc200619c0330311b7907/pyaml-23.5.8-py3-none-any.whl
Collecting pycryptodome (from pyMeterBus==0.8.3)
Downloading https://www.piwheels.org/simple/pycryptodome/pycryptodome-3.20.0-cp35-abi3-linux_armv7l.whl (2.0MB)
100% |████████████████████████████████| 2.0MB 198kB/s
Requirement already satisfied: pyserial in /usr/lib/python3/dist-packages (from pyMeterBus==0.8.3) (3.4)
Requirement already satisfied: simplejson in /usr/lib/python3/dist-packages (from pyMeterBus==0.8.3) (3.16.0)
Requirement already satisfied: PyYAML in /usr/local/lib/python3.7/dist-packages (from pyaml->pyMeterBus==0.8.3) (5.1)
Building wheels for collected packages: pyMeterBus
Running setup.py bdist_wheel for pyMeterBus ... done
Stored in directory: /tmp/pip-ephem-wheel-cache-ybm69ily/wheels/40/49/79/d2c9d6b919d406ea11affa578792c7729298e8c0ca25044c24
Successfully built pyMeterBus
Installing collected packages: pyaml, pycryptodome, pyMeterBus
Successfully installed pyMeterBus-0.8.3 pyaml-23.5.8 pycryptodome-3.20.0