I read about one device being able to call a function on another device but I cant work out how to and not sure if it is possible for one device to actually read data provided by another. For example if deviceA is providing a temperature reading that I can read and monitor on the dashboard is it possible for another device to , a little like the dashboard, read this data directly from deviceA ? This would be useful for allowing one device to make decisions using data not directly measurable by it
I know exactly where you are coming from. I live on a narrowboat and have various sensors measuring battery volts and current, solar panel current, temperatures and humidities etc.
It is often a case that an alarm would be much smarter (or more sensible) if it were based on more than one parameter. Unfortunately neither Thinger or IFTTT allow simple tests such as:
IF A > X AND B > Y OR C is FALSE THEN TRIGGERr an alarm or action.
To get around this I’m in the process of building a “Thinger Hub”. All the sensors (via their associated ESP8266 processors) would relay their info to the Hub using the inter board comms described in the documentation.
So in a few days I should know some answers? For the time being I’m assuming the boards communicate via the Thinger.io server and not directly via my local network, which is a shame but hey ho.
At least on the Hub I should be able to correlate the data from all the sensors and implement simple, sensible logic to trigger alarms / actions.
I’ve written some test code and I’m now transferring data (12 parameters in all) from two remote ESP8266s to my MEGA2560 + Ethernet shield based hub.
I’m glad to report it works just as described in the documentation. The hub then uploads the data to a couple of dashboards. I’ve not yet written the “alarm” routines, but I intend to create several endpoints to trigger IFTTT channels. IFTTT is so useful as it can “talk” to many things without me having to tackle the awkward protocol translation process.
The hub will be in operation 24/7 so we’ll see how the sysetm performs over the next few weeks.
The simple but inelegant idea i am considering is to add a parameter to each device that contains its IP address on the network. If a device needs data directly it can use the server API once to collect the IP address and then use the IP address from then on to request directly from the device . With my devices this is easy as previously before thinger I used to interact with them using simple http requests so that functionality is still there. I guess this reduces thinger to simply a command and control roll in some cases.
There’s nothing wrong with simple ! It usually works better?
One of my problems is I send data via the uk’s 4G mobile data network. THis uses dynamic addressing AND extensive firewalls which prevent incoming data unless I employ SSH tunnelling which I’ve not mastered yet Doh. Fixed IP’s for my onboard router would be great but very expensive as the mobile companies charge very high rates for these !
I suppose the next step is to build my own server running Thinger? But bang goes the simplicity then !
well all the devices that i want to talk to each other are on the same small network so it is easy for them to access each other directly. You could use a service like noip.com to link your dynamic address to a domain name effectively giving you a static ip address . I used to use that a lot