Categories
General HowTo's

#Python script to read #1-wire sensors and more Python scripts #VSCP #IoT

The most important mission with a m2m/IoT/whatever framework like VSCP is to make the world simpler for the end-user. Yes for the “end-user”, NOT for the developer.  That said it is of course good if things are as easy as possible for the developer to.

If you are new to VSCP the system is always overwhelming. It is a big system with many possibilities, but the event is central, VSCP is after all an event based system, and when your data is on the VSCP standardized event format you can present it, store it, react on it or calculate on it in a standardized way. Any solution you come up with that handles events will become a reusable component. For you and for others if you share your work. For instance. If you make a software that diagram measurement value and your intention is to show temperature changes this same piece of software will be useful for someone else to display concentration variations in a fluid of a process industry by just changing the description of the diagram labels.

VSCP events have a class and a type that specify what the event describes. This is typically a “measurement” or “info” or “control”. Samples are

Class=10, Type=6 – The event describes a temperature.
Class=30, Type=5 – Turn on “something”.

You can read all about them here

The measurement events are standardized around the SI units.  So you will see all standardized units there but also some derived ones. If/when need arise more will follow. They all have a unit and a value.

For the unit there is the standardized unit, for example for temperature “degrees Kelvin” is used. But user want to work with Celsius or Fahrenheit so they are also available. Without going into details the end result is a unit of information (the VSCP event)  that specify the measurement value fully and this information unit is usable by both low end and high end systems.

Why is this important you say.

First of all there will not be mistakes like sending a Mars sond past Mars because one developer thought the values where inches and another centimetres. Secondly you only need to write code once for each layer. An event, a measurement, a type of measurement and so on. If you think about it this is exactly what the web and web browsers is all about. A common format for the hypertext.

So to the point. To benefit from the above you have to translate world data into VSCP events.

In this sample a DS2490 one-wire adapter read an outside temperature and an inside temperature and send the sensor values to a VSCP daemon as VSCP events for further processing. A simple Python script is used which is added to the crontab on a Raspberry Pi to report the temperature every minute.  ne wire id’s can be directly translated into a valid VSCP GUID (just as an Ethernet MAC etc can) so this is also taken care of in the script.

When the sensor values is sent to the daemon it can be collected or presented in a standardized way or another system can react on the data and as in this case turn on a heater when the temperature is to low or alarm via an SMS when the outside temperature is going below zero.

You can find more Python code here.

Salvo Musumeci started work to do VSCP Python bindings to the VSCP helper library but it appears that this project has stalled.  I hope he or someone else will complete this project as it would benefit a lot.

 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.