Software for sensor manipulation - wifi

I am searching for open source software for wireless sensors’ management in a wireless sensor network environment. More specifically, I have some 802.11-based temperature sensors which are connected with a pc using a 802.11 router. I need to put configurable open source software into the pc to manipulate the information that comes from the sensors. Any idea?

I've been using Zenoss Core Community edition to accomplish the task you mentioned. It allows you to monitor several temperature sensors, storing the information in circular databases. Once deployed, you don't need to perform too much housekeeping.
If your sensors implements SNMP (Simple Network Managment Protocol) all you need is to enable the protocol according to manufacturer specs and let zenoss to discover your devices.
You can create customized reports and trigger events based on your custom configuration (eg, send an email when temperature is over certain level).
Finally, if the monitoring info is retrieved using a different method other than SNMP, you can code custom scripts with Python, so that you help to zenoss to retrieve the info needed. Dig into the forums. Chances are the script is already available for your sensor.

Related

Can STM32F1 (as part of MXChip) support CAN Bus

Background
I'm very new to electronics/IoT dev. I'm trying to create a solution to be able to read my wife's Car's CAN Bus signal (messages) and store it to an SD card. I hope to analyze the data and build a dashboard based on the car's telemetry.
This specific question is in relation to a chip (STM32F1) on an IoT board (MXChip AZ3166) I already own, which I hope to incorporate into my overall solution as the data acquisition layer.
For reference the:
Chips is the: STMicroelectronics STM32F103C8T6, 32bit ARM Cortex M3 Microcontroller
and the IoT board is the: (MXChip AZ3166 IoT DevKit)
Reading the MXChip AZ3166 board's spec and after doing some research, I have found out that the MXChip AZ3166 comprises two main chipsets:
Vendor
Part Number
Ref Link
STMicroelectronics
STM32F103C8T6
https://uk.rs-online.com/web/p/microcontrollers/1023545
MXChip
EMW3166
https://www.mxchip.com/en/products/module/54
Main Question
The product specification mentions the STM32F1 features Comprising of motor control peripherals plus CAN and USB full speed interfaces, it also states it has 1x CAN Channel. Does that mean I can interface the MXChip AZ3166 board featuring this chip via the GPIO pins to the CAB bus in my wife's car and receive the CAN Bus signals (I presume adhering to the
ISO 11898-1 CAN data communication protocol).
How would I find out which pins to connect to the CAN Hi & CAN low connections on the cars CAN Bus?
Concerning power, how would I determine that the CAN signal received doesn't fry the MXChip Board with a stated max Operation voltage of 3.3v?
Yes you'll want an MCU with a built-in CAN controller for communicating on a CAN bus. However, the CAN standard only covers the physical and data link layers. You need to know the application layer in order to meaningfully interact with a bus.
The application layer on a car may or may not be proprietary. It may even be encrypted. If you don't know what protocol is uses, then no can do. Reverse-engineering CAN protocols is hackish, hard and dangerous. Plugging into a CAN bus where you have no clue about timing considerations etc is also very dangerous.
But cars usually have an "on-board diagnostics" (OBD) port used for service purposes, with standardized application layers, through which you may have access to various parts of the car. There's lots of different standards for OBD and older ones didn't even use CAN. It depends on the car model.
In case of the OBD port the pinouts are standardized and you can find them on the Internet. Otherwise it is very simple to find out which signal that's CANH and CANL with an oscilloscope. CANH goes 2.5V +1V and CANL 2.5V -1V. A more hacky solution is to measure this with a multimeter, but it's perfectly possible since one signal with be slightly above 2.5V and the other slightly below.
CAN is standardized so if you have a CAN bus on the board, you connect there. In some cases there may be 12V supply wired together with the signal and that's the only one which could fry something.
Overall, please note that the project you describe here is very difficult and not a beginner task. It sounds as you have next to no experience of electronics/embedded systems, so I would recommend picking a far simpler project.
Furthermore, modifying car electronics or installing your own electronics in a car is illegal in most parts of the world. Third party type approvals with EMC tests are mandatory (and very expensive). If your car is involved in an accident and they find custom electronics without type approval in it, you could be facing serious legal consequences.

The difference between an existing solution and an IoT solution?

I'm trying to understand how IoT could help the company that I'm working for. This company provides software and hardware to others - take, for example, printers.
We already build and deploy software on the printers which have the ability to report back information (somewhere) so that management can react to certain data points:
Printer ink levels
Printer status (working, jammed, off, on, etc)
Printer state (good, errored, etc)
What would an IoT solution do for this type of situation?
As I understand it, IoT is mainly all about data and how we can analyze the data coming in from a fleet of devices.
Some things I've thought might be beneficial:
Instead of sending just "Printer Ink Low" and "Printer Ink Empty", continuously send the raw printer ink levels somewhere where you can analyze the average rates of printer ink use. You can then use that data to preemptively refill the ink.
Separation of concerns - software around the printer ink or printing process should be separate from the reporting aspect of the printer ink levels.
Similar to #1, sending raw data to be processed/learned upon to somewhere else is beneficial, as processing the data is moved from the device (which should focus on printing) to somewhere else (the cloud, a local compute server).
This collected data can be used to analyze trends and make business decisions.
This collected data can be used to preemptively act on situations instead of reactively (increasing efficiency).
Other questions:
As I understand IoT, it is usually a physical device or sensor that can connect to the Internet (either itself or through another device) and send up data. It usually is a physical device, but can it be more of a software device? IE a docker module that monitors the system and reports data? Would that be considered an IoT solution/device?
Although, stackoverflow is not the right place for such open questions (I would suggest other fora, like, e.g., researchgate), in general, the answer to all your questions, is yes, you are on the right way.
Especially for your last question, you have to have some kind of hardware (e.g., an extra or existing ink level meter inside the printer). All those hardware devices that interact with the environment and monitor something (temp, humidity, salt in water) are the sensors. Behind the sensors, you can have any kind of software/cloud/program/other hardware (e.g., raspberry/arduino), to implement your specific needs.

ROS: Access to sensor data from Jetson board

I dont know if someone can help me here. I also asked in the ros forum. So here is my problem:
Im working on a project and im a very beginner of ROS. I have a sensor which calculates the distance between two decanodes (range). The name of these two decanodes are AGV and SV. The AGV is the module which calculates the distance. Thats the key difference between AVG and SV. The AGV has to be connected to the PC via UART to USB, in my case its connected to the Jetson board. You have insight to the data of AGV with the docklight software. Its only for windows.
If everything is set up the sensor begins to collect the data (in meters).
My question is: How can I have access to these data. There is no information about that i should install a driver or something like that or a package. So if i connect it to the Jetson and if i look to the rosnode list i cant find anything which leads me to the data. I dont know what i have to do. I asked other people and they didnt know how to access the data if it is via UART to USB.
So it would be really nice if someone could write a helpful answer.
If I understand correctly, I think you will need to find documentation on the data format or protocol that your sensor is sending over its serial connection, or, if the manufacturer of the sensor provides a library or SDK with an API for receiving the data. Then write a new ROS node that receives the data and publishes it to the ROS system.

Does any one know about opensource network monitor tool for black berry?

Does any one know about opensource network monitor tool for BlackBerry ?
What about RIM Network Diagnostic Tool (source is available):
BlackBerry smartphones support many different transports that facilitate reliable data communication between third-party applications and the Internet. The transports available are direct Transmission Control Protocol (TCP), BlackBerry® Mobile Data System (BlackBerry MDS), BlackBerry® Internet Service Browsing (BIS-B), BlackBerry® Unite!™ software, Wireless Access Protocol (WAP)1.0, WAP2.0 and Wi-Fi® technology. It is important to understand the differences between these transports and how and when to leverage each transport. It is also crucial to determine if a transport is available for use before trying to use it. The Network Diagnostic Tool is essentially a role model that answers all these questions and is a functional diagnostic tool for testing a URL over various transports supported by the BlackBerry solutions, as well as for displaying the values of many network attributes during the test period.

Emulate GPS or a serial device

Is it possible to get location data out of Google Gears, Google Gelocation API or any other web location API (such as Fire Eagle) in such a format that it appears to other software as a GPS device?
It occured to me reading these answers to my question regarding WiFi location finding, on Super User, that if I could emulate a GPS unit, many of these web services could act as a 'poor-mans' GPS to otherwise less useful software that requires it.
Is GPSD an option?
Preferably OSX & Python, but I would be interested in any implementation.
There is a very similar thread on a Python mailinglist that mentions Windows virtual COM ports and discusses Unix's pseudo-tty capabilities. If the app(s) you want to use let you type in a specific tty device file, this may be the easiest route. (Short of asking the authors to provide a plugin API for what you're trying to do, or buying yourself a $20 bluetooth GPS mouse.)
Are you using OS X?
There is a project macosxvirtualserialport on Google code that provides a graphical wrapper around some of the features of a utility called socat. I'd recommend taking a look at socat if you see potential in the pseudo-tty route. I believe you could use socat to link a pipe from a Python program to a pseudo-tty.
Most native Mac apps will be querying IOServiceMatching for a device with kIOSerialBSDRS232Type, and I doubt that a pseudo-tty will show up as an IOKit service.
In this case, unless you can find a project that has already implemented such a thing, you will need to implement a driver as described in this How to create virtual COM port thread. If you're going to the trouble of create a device driver, you would want to base it on IOKit because of that likely IOServiceMatching query. You can find the Apple16X50Serial project mentioned in that post at the top of Apple's open source code list (go to the main page and pick an older OS release if you want to target something pre-10.6).
If your app is most useful with realtime data (e.g. the RouteBuddy app mentioned in the Python mailinglist thread can log current positions) then you will want to fetch updates from your web sources (hopefully they support long-polling) and convert them to basic NMEA RMC sentences. You do not want to do this from inside your driver code. Instead, divide your work up into kernel-land and user-land pieces that can communicate, and put as little of the code as possible into the kernel part.
If you want to let apps both read and write to these web services, your best bet would probably be to simulate a Garmin device. Garmin has more-or-less documented their protocol in the IntfSpec.pdf file included with their Device Interface SDK. Again, you'd want to split as much as you could into user-space code.
I was unable to find a project or utility that implements the kernel side of an IOKit-based virtual serial interface, but I'd be surprised if there wasn't one hiding somewhere out there. Unfortunately, most of the answers I found to that question were like this, with the developer being told to get busy writing a kext.
I'm not exactly sure how to accomplish what you're asking, but I may be able to lend some insight as to how you might begin to get it done. So here goes:
A GPS device shows up to most systems as nothing more than a serial device -- a.k.a. a COM port if you're dealing with Windows, /dev/ttySx if you're in *nix. By definition, a serial port's specific duty is to stream data across a bus, one block at a time. So, it would then follow logically that if you want to emulate the presence of a GPS device, you should gather the data you're consuming and put it into a stream that somehow acts like an active serial port.
There are, however, some complications you might want to consider:
Most GPS devices don't just send out location data; there's also information on satellite locations, fix quality, bearing, and so on. Then again, nobody's made any rules saying you have to make all that data available. There's probably more to this, but I'll admit that I need to do more research in this area myself.
I'm not sure how fast you can receive data when dealing with Google Latitude, etc., but any delays in receiving would definitely result in visible pauses in your "serial port"'s data stream. Again, this may not be as big a complication as it seems, because GPS devices are known to "burst" data across the bus anyway, but I'd definitely keep an eye on that. You want to make sure there's always a surplus of data coming across, not a shortage.
Along the way you'll also have to transform the coordinates you receive into valid GPS sentences, as well. You can find specifications for those, but I would definitely make friends with the NMEA standard -- even though it is a flawed standard, it's the one everyone seems to agree on anyway.
Hope this helped you, at least a little bit. Are there anymore details specific to your problem that you think could be useful in answering this question?
Take a look to Franson GPS Gate which allows you to connect to Google Earth among other things (like simulating GPS and so on). Is windows only though but I think you could get some useful ideas from it.
I haven't looked into it very much, but have you considered using Skyhook's SDK? It might provide you with some of what you are looking for. It's available for every major desktop and mobile OS.

Resources