All Projects → sympthom → Valley.Net.Protocols.MeterBus

sympthom / Valley.Net.Protocols.MeterBus

Licence: MIT license
M-Bus (meter bus, meterbus, mbus) C# project for communicating and parsing M-Bus (EN 13757-2 and EN 13757-3)

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to Valley.Net.Protocols.MeterBus

amshan-homeassistant
Home Assistant integrasjon for strømmålere (AMS/HAN/P1). Integrasjonen støter både streaming (serieport/TCP-IP) og MQTT (Tibber Pulse, energyintelligence.se etc)
Stars: ✭ 39 (+34.48%)
Mutual labels:  mbus, meterbus
K-Meter
Implementation of a K-System meter according to Bob Katz' specifications
Stars: ✭ 66 (+127.59%)
Mutual labels:  meter
greek scansion
Python library for automatic analysis of Ancient Greek hexameter. The algorithm uses linguistic rules and finite-state technology.
Stars: ✭ 16 (-44.83%)
Mutual labels:  meter
SmartSpin2k
Transform your spin bike into a Smart Trainer!
Stars: ✭ 88 (+203.45%)
Mutual labels:  meter
openMIC
Meter Information Collection System
Stars: ✭ 15 (-48.28%)
Mutual labels:  meter
DSMRloggerWS
New firmware for the DSMRlogger heavily using WebSockets and Javascript
Stars: ✭ 29 (+0%)
Mutual labels:  meter
tempo-cnn
Framework for estimating temporal properties of music tracks.
Stars: ✭ 62 (+113.79%)
Mutual labels:  meter
prompt-password-strength
Custom mask function for prompt-password that adds a 'strength progress meter' that changes color as the password strength increases. Uses zxcvbn, the popular password strength estimation tool brought to you by dropbox.
Stars: ✭ 18 (-37.93%)
Mutual labels:  meter
Tqdm
A Fast, Extensible Progress Bar for Python and CLI
Stars: ✭ 20,632 (+71044.83%)
Mutual labels:  meter
Home Assistant EDP Box
Integração das EDP Box com Home Assistant Core
Stars: ✭ 91 (+213.79%)
Mutual labels:  meter
metermon
Dockerized rtlamr wrapper that outputs formatted JSON messages over mqtt
Stars: ✭ 19 (-34.48%)
Mutual labels:  meter
GaugeMeter
An elegant and dynamic animated graphical gauge meter built with jQuery. GaugeMeter.js is highly customizable and includes full-radial, semi-radial & arch dials.
Stars: ✭ 30 (+3.45%)
Mutual labels:  meter
AODamageMeter
Real-time graphical damage meter for the sci-fi MMORPG Anarchy Online.
Stars: ✭ 14 (-51.72%)
Mutual labels:  meter
domoticz gaspar
Get Gaspar smart meter index to domoticz
Stars: ✭ 23 (-20.69%)
Mutual labels:  meter
SMLReader
ESP8266 based smart meter (SML) to MQTT gateway
Stars: ✭ 170 (+486.21%)
Mutual labels:  meter
ha-watermeter
Data provider for smartmeter watermeter.
Stars: ✭ 20 (-31.03%)
Mutual labels:  mbus

record screenshot

M-Bus (Meter Bus) project for communicating and parsing M-Bus over udp, tcp and serial. Implementation of protocol EN 13757-2 and EN 13757-3 (https://ec.europa.eu/eip/ageing/standards/ict-and-communication/data/en-13757_en).

M-Bus (Meter-Bus) is a European standard (EN 13757-2 physical and link layer, EN 13757-3 application layer) for the remote reading of gas, water or electricity meters. M-Bus is also usable for other types of consumption meters. The M-Bus interface is made for communication on two wires, making it cost-effective. A radio variant of M-Bus (Wireless M-Bus) is also specified in EN 13757-4.

The M-Bus was developed to fill the need for a system for the networking and remote reading of utility meters, for example to measure the consumption of gas or water in the home. This bus fulfills the special requirements of remotely powered or battery-driven systems, including consumer utility meters. When interrogated, the meters deliver the data they have collected to a common master, such as a hand-held computer, connected at periodic intervals to read all utility meters of a building. An alternative method of collecting data centrally is to transmit meter readings via a modem.

Other applications for the M-Bus such as alarm systems, flexible illumination installations, heating control, etc. are suitable.

Retrieving meter telemetry

var serialiser = new MeterbusFrameSerializer();
var endpoint = new IPEndPoint(IPAddress.Parse("192.168.1.135"), 502);

// binding to the collector/gateway
var binding = new UdpBinding(endpoint, serializer);

// reqeust for telemetry on meter with address 0x0a
var response = await new MeterBusMaster(binding)
  .RequestData(0x0a, TimeSpan.FromSeconds(3));

Low level control

var serialiser = new MeterbusFrameSerializer();
var endpoint = new IPEndPoint(IPAddress.Parse("192.168.1.135"), 502);

// binding to the collector/gateway
var binding = new UdpBinding(endpoint, serialiser);
binding.PacketReceived += (sender, e) => Debug.WriteLine("M-Bus packet received.");
    
// send a short frame/SND_NKE to the meter with address 0x0a
await binding.SendAsync(new ShortFrame((byte)ControlMask.SND_NKE, 0x0a));

Deserialize M-Bus frame and payload

var packet = "68 1F 1F 68 08 02 72 78 56 34 12 24 40 01 07 55 00 00 00 03 13 15 31 00 DA 02 3B 13 01 8B 60 04 37 18 02 18 16"
  .HexToBytes()
  .ToFrame()   // EN13757_2
  .ToPacket(); // EN13757_3

Changelog

v1.0.2 (2019.10.13)

  • serial communication capability

v1.0.1 (2019.10.12)

  • bug fixes

v1.0.0 (2018.09.29)

  • initial release
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].