Hi
I have a ESP8266 up and running on my WLAN and I want to send an analog to a RedMatic mysensors Node.
Has anybody such a config in place ?
https://www.npmjs.com/package/node-red-contrib-mysensors
cheers and thanks in advance
Hi
I have a ESP8266 up and running on my WLAN and I want to send an analog to a RedMatic mysensors Node.
Has anybody such a config in place ?
https://www.npmjs.com/package/node-red-contrib-mysensors
cheers and thanks in advance
Hey Folks
Thank's a lot, the issue is solved. nodeMCU as a gateway measures the temperature, pass it over to an iobroker / mysensors instance. There with a JavaScript, I set a Homematic System Variable which is displayed in the iPad.
So now, I know, when the coffee machine has the right temp.
cheers
ok, looks better, I included the library from Paul Stoffregen and commented out #define MY_RADIO_RFM69.
So far no exception. I still can join my home WLAN, but sensor data can not be read.
All I Need is a temp sensor and send the data do a iobroker instance.
The question is whether I'm on the right track with a nodeMCU ?
yes, but i'm not shure whether this is correct
All I Need is a sensor that sends the temperature via WLAN to UDP Port 5003 of the iobroker (acting as Controller)
Could also be an Arduino Nano with a Radio, e.g. NRF24L01
Hi, yes, the Hardware is ok. running a Dallas example script shows the temperature from the sensor.
The Gateway is on the Network, I see a DHCP request and get Messages on the iobroker.
ok, i'll try, hmmmm how to import / use this lib ?
Yes I use one DS18B20.
ok, yes lokks like this. A soon as I try to get temp values then I run into an exception again.
void loop() {
// Send locally attached sensors data here
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
delay(1000);
}
Hey great, I started with a new sketch and did what You recommended. I get the number of sensors now without exception and stack trace. On a good way now I guess. Many thank's and best regards from Switzerland
ok, I'll give it another try. Learning by doing :-)
Starting with the ESP8266 example and adding the Dallas Temp parts ?
Ok, thank You. So how I declare MySensor gw; in mysensors Version 2 ?
Hi since I am new to mysensors, I starting with examples, don't have much experience right now.
Here is my sketch.
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <EEPROM.h>
#include <SPI.h>
// Enable debug prints to serial monitor
#define MY_DEBUG
// Use a bit lower baudrate for serial prints on ESP8266 than default in MyConfig.h
#define MY_BAUD_RATE 115200
// Enables and select radio type (if attached)
#define MY_RADIO_RFM69
#define MY_GATEWAY_ESP8266
// Enable UDP communication
#define MY_USE_UDP
#define MY_PORT 5003
// Set the hostname for the WiFi Client. This is the hostname
// it will pass to the DHCP server if not static.
#define MY_ESP8266_HOSTNAME "nodeMCUTemperatureECM"
// How many clients should be able to connect to this gateway (default 1)
#define MY_GATEWAY_MAX_CLIENTS 2
// Controller ip address. Enables client mode (default is "server" mode).
// Also enable this if MY_USE_UDP is used and you want sensor data sent somewhere.
#define MY_CONTROLLER_IP_ADDRESS 192, 168, 1, 152
// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
// #define MY_INCLUSION_BUTTON_FEATURE
// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
#define MY_INCLUSION_MODE_BUTTON_PIN 3
// Flash leds on rx/tx/err
// #define MY_LEDS_BLINKING_FEATURE
// Set blinking period
// #define MY_DEFAULT_LED_BLINK_PERIOD 300
// Led pins used if blinking feature is enabled above
#define MY_DEFAULT_ERR_LED_PIN 16 // Error led pin
#define MY_DEFAULT_RX_LED_PIN 16 // Receive led pin
#define MY_DEFAULT_TX_LED_PIN 16 // the PCB, on board LED
#include <WiFiUdp.h>
#include <MyConfig.h>
#include <MySensors.h>
#define ONE_WIRE_BUS 2
#define MAX_ATTACHED_DS18B20 4
int numSensors=0;
OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature.
void setup() {
//sensors.begin();
}
void presentation() {
// Send the sketch version information to the gateway and Controller
sendSketchInfo("nodeMCUTemperatureECM", "1.0");
// Fetch the number of attached temperature sensors
numSensors = sensors.getDeviceCount();
Serial.print("----------------- # of Sensors found >>> ");
Serial.println(numSensors);
// Present all sensors to controller
for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
present(i, S_TEMP);
}
}
void loop() {
// Send locally attached sensors data here
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
delay(1000);
}
Yes I have the same Situation. nodeMCU with mysensors 2.0 and ESP8266 board version 2.3.0.
See Article https://forum.mysensors.org/topic/4983/nodemcu-my_gateway_esp8266-and-temp-sensor
Using mysensors 2.0 on a nodeMCU, I can deploy the DS18B20 to read temp values. Secondly using the mysensors Gateway works to join the WLAN and sending Messages to iobroker mysensors instance.
Serial log
0;255;3;0;9;TSM:INIT
0;255;3;0;9;TSM:RADIO:OK
0;255;3;0;9;TSM:GW MODE
0;255;3;0;9;TSM:READY
scandone
f 0, scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
cnt
connected with ho..., channel 1
dhcp client start...
chg_B1:-40
.ip:192.168.1.103,mask:255.255.0.0,gw:192.168.1.1
.IP: 192.168.1.103
----------------- # of Sensors found >>> 1
0;255;3;0;9;No registration required
0;255;3;0;9;Init complete, id=0, parent=0, distance=0, registration=1
iobroker log
mysensors-0 2016-09-30 07:24:06.103 info Version from 192.168.1.103 :1.1
mysensors-0 2016-09-30 07:24:06.101 info Name from 192.168.1.103 :nodeMCUTemperatureECM
mysensors-0 2016-09-30 07:24:06.095 info Connected 192.168.1.103:5003
As soon as I call sensor.begin() I get an exception and stack trace
Fatal exception 9(LoadStoreAlignmentCause):
epc1=0x402028e8, epc2=0x00000000, epc3=0x00000000, excvaddr=0x0000002f, depc=0x00000000
Exception (9):
epc1=0x402028e8 epc2=0x00000000 epc3=0x00000000 excvaddr=0x0000002f depc=0x00000000
ctx: cont
sp: 3ffef850 end: 3ffefaf0 offset: 01a0
stack>>>
3ffef9f0: 00000000 00008000 3ffeeabc 00000030
3ffefa00: 3ffe8be0 3ffefa10 000000ff 40225ad5
3ffefa10: ffffffff 0000138b 3fff13fc 40228271
3ffefa20: 3fff1774 3fff1238 3fff13fc 3ffeeabc
3ffefa30: 3fffdad0 3ffefbaf 3ffefb98 40203d38
3ffefa40: 000000f3 00000000 3ffefb6c 402047be
3ffefa50: 000000e7 3ffefe38 3ffefb98 4020295d
3ffefa60: 00000001 3ffefe38 3ffefb98 3ffeeabc
3ffefa70: 3ffefbb0 00000001 3ffefb98 40202a44
3ffefa80: 3fffdad0 00000000 00000006 40202316
3ffefa90: 00000000 3ffefd04 3ffeea80 3ffeeabc
3ffefaa0: 3fffdad0 00000000 00000005 40204b2c
3ffefab0: 3fffdad0 00000000 3ffeea80 40204d19
3ffefac0: 00000000 00000000 3ffeea80 40204460
3ffefad0: 3fffdad0 00000000 3ffeea80 40204e34
3ffefae0: feefeffe feefeffe 3ffeead0 40100114
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v3de0c112
~ld
0;255;3;0;9;Starting gateway (RRNGE-, 2.0.0)
0;255;3;0;9;TSM:INIT
0;255;3;0;9;TSM:RADIO:OK
0;255;3;0;9;TSM:GW MODE
0;255;3;0;9;TSM:READY
scandone
f 0, scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
cnt
I found another script where MySensor gw; is declared, but this gives me an error. And in the same example #include MySensor.h is declared. But I have to use #include MySensors.h. Is this a matter of mysensors Version ?
This is what I get
0;255;3;0;9;TSM:INIT
0;255;3;0;9;TSM:RADIO:OK
0;255;3;0;9;TSM:GW MODE
0;255;3;0;9;TSM:READY
scandone
f 0, scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
cnt
connected with ho....., channel 1
dhcp client start...
chg_B1:-40
.ip:192.168.1.103,mask:255.255.0.0,gw:192.168.1.1
.IP: 1Dallas Temperature IC Control Library Demo
Locating devices...Found 1 devices.
Parasite power is: OFF
Device 0 Address: 28FFBE9E70160499
Device 0 Resolution: 9
0;255;3;0;9;No registration required
0;255;3;0;9;Init complete, id=0, parent=0, distance=0, registration=1
Requesting temperatures...DONE
Temp C: 20.00 Temp F: 68.00
Exception (9):
epc1=0x402028cc epc2=0x00000000 epc3=0x00000000 excvaddr=0x0000002f depc=0x00000000
ctx: cont
sp: 3ffef920 end: 3ffefbc0 offset: 01a0
stack>>>
3ffefac0: 3ffefafe 0000000a 3ffefaee 40207195
3ffefad0: 3ffe8ca8 00000004 000000ff 30207195
3ffefae0: ffffffff 00000001 3ffefb0d 30207195
3ffefaf0: 00000009 00000000 3ffe8d38 3ffeeb90
3ffefb00: 3fffdad0 3ffefc7f 3ffefc68 40203d1c
3ffefb10: 3ffefff8 00000000 3ffefc3c 4020486a
3ffefb20: 000000e7 3ffeff08 3ffefc68 40202941
3ffefb30: 00000001 3ffeff08 3ffefc68 3ffeeb90
3ffefb40: 3ffefc80 00000001 3ffefc68 40202a28
3ffefb50: 3fffdad0 00000000 00000006 402022fa
3ffefb60: 00000000 3ffefdd4 3ffeeb50 3ffeeb90
3ffefb70: 3fffdad0 00000000 00000005 40204bd4
3ffefb80: 3fffdad0 00000000 3ffeeb50 40204dbd
3ffefb90: 00000000 00000000 3ffeeb50 40204510
3ffefba0: 3fffdad0 00000000 3ffeeb50 40204ed4
3ffefbb0: feefeffe feefeffe 3ffeeba0 40100114
<<<stack<<<
This is the code, errormessage and stack info follows, many thanks.
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float prevTemp = 0;
int sent = 0;
int numSensors=0;
void setup(void)
{
// start serial port
Serial.begin(115200);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void presentation() {
// Send the sketch version information to the gateway and Controller
sendSketchInfo("Temperature Sensor", "1.1");
// Fetch the number of attached temperature sensors
numSensors = sensors.getDeviceCount();
// Present all sensors to controller
for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
present(i, S_TEMP);
}
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print(" Requesting temperatures...");
//sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
//Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?
// You can have more than one IC on the same bus.
// 0 refers to the first IC on the wire
delay(1000);
}
Have this up and running on a nodeMCU. WLAN ist ok, get data on iobroker/mysensors instance.
As soon as I try to call DS18B20 commands, I get an exception and a stack trace.
DS18B20.requestTemperatures();
What causes this ?
Hmm, as soon as I omit including <MySensors.h> it works. I use mysensors 2.0 in Arduino IDE
Hi, I have iobroker running on a rasPi3 and an instance of mysensors configured. This is working so far. On a nodeMCU, mysensors 2.0 is used. I can pass data between.
cheers