ESP8266 WiFi gateway port for MySensors
-
@Anduril said:
no WLAN found, reconnect after 1s
That's a clear indication the ESP cannot connect to your WiFi accesspoint.
Is the SSID matching your accesspoint ('WLAN')?
Is the encryption supported by the ESP (see e.g. https://nurdspace.nl/ESP8266#Features -- not sure if it is accurate)
Weird characters in the password could be problematic (and of course the password is case-sensitive).Changing between DHCP/Fixed IP won't make a difference here, as the ESP doesn't even connect. IP configuration starts once connected.
@Yveaux
SSID is 'WLAN' (all capital). Encryption is WPA2 which should be supported. The password contains '|' (don't know the name, vertical line) and 'ß' (german character). I use them among other more common ones to raise the complexity of the encryption. As I am using a bunch of wifi devices I don't want to go around and change passwords for all if not absolutely necessary. Is there a way to specify these 'weird characters' e.g. by ASCII codes or anything else?Changing the IP was not to solve this problem but for future use, as my DHCP is not very good. Can you tell me how to fix IP else?
-
@Yveaux
SSID is 'WLAN' (all capital). Encryption is WPA2 which should be supported. The password contains '|' (don't know the name, vertical line) and 'ß' (german character). I use them among other more common ones to raise the complexity of the encryption. As I am using a bunch of wifi devices I don't want to go around and change passwords for all if not absolutely necessary. Is there a way to specify these 'weird characters' e.g. by ASCII codes or anything else?Changing the IP was not to solve this problem but for future use, as my DHCP is not very good. Can you tell me how to fix IP else?
-
good idea @Yveaux, seems that 'ß' is the problem. serial.print shows ß at that position. Do you know how to avoid that?
@Anduril probably Unicode problem of the editor. I assume you use the Arduino editor? Try a simple editor like notepad to type the problematic character, or directly type it in windows by setting your keyboard in numpad mode and type it's ascii code: alt+225
-
@Yveaux tried with a nano to print out "ß" to serial, no problems. After that I tried that sketch on ESP:
void setup() { Serial.begin(115200); const char *pass = "ß1ß"; Serial.println(" "); //to break line after rubbish at init Serial.println(pass); }[not readable/copyable stuff] ß1ßSo in general it should be no problem compiling the char 'ß' even on ESP.. Also in the ESPGateway sketch I don't see anything that is changing the *pass, but maybe you know what is going on with this string in more detail.
edit: it seems to happen even before void setup in the gw sketch. I uncommented everything in setup, loop and output, but still get the distorted serial print of pass.
-
@Yveaux tried with a nano to print out "ß" to serial, no problems. After that I tried that sketch on ESP:
void setup() { Serial.begin(115200); const char *pass = "ß1ß"; Serial.println(" "); //to break line after rubbish at init Serial.println(pass); }[not readable/copyable stuff] ß1ßSo in general it should be no problem compiling the char 'ß' even on ESP.. Also in the ESPGateway sketch I don't see anything that is changing the *pass, but maybe you know what is going on with this string in more detail.
edit: it seems to happen even before void setup in the gw sketch. I uncommented everything in setup, loop and output, but still get the distorted serial print of pass.
-
@Yveaux already tried that. When using my own sketch I get "ß1ß", when using the gw sketch (with really everything commented out, so no functionality) I get "ß1ß". I thought that it might be a problem of UFT encoding, had this issue with transfering LaTeX files created on linux system to windows system and vice versa: the system that creates the file sets the charset.
But I also created a completely new .ino with the gateway-code inside and new created gatewayutil.h with data copied in notepad++, but no succes.
And yes I use Arduino IDE as editor. Is there a good way to use another editor and compile/upload without the IDE? -
@Yveaux already tried that. When using my own sketch I get "ß1ß", when using the gw sketch (with really everything commented out, so no functionality) I get "ß1ß". I thought that it might be a problem of UFT encoding, had this issue with transfering LaTeX files created on linux system to windows system and vice versa: the system that creates the file sets the charset.
But I also created a completely new .ino with the gateway-code inside and new created gatewayutil.h with data copied in notepad++, but no succes.
And yes I use Arduino IDE as editor. Is there a good way to use another editor and compile/upload without the IDE? -
@hek yeah already did this, when leaving out ß it works perfect. So no problem with router or ESP hardware. But changing the wifi password would be the worst case, as I have to reassign that to squeezeboxes, smartphones, laptops, wifi printer,... (and all guest devices of friends/familie) but still possible if all other things fail.
@Yveaux Would it help if I send you the files for verification? Is it possible inside this forum or only via email? -
@Yveaux thank you very much for offering help with verification, but something strange happened during preperation of files: I took an example sketch and modified it to print the "ß1ß" on serial --> working fine.
But after saving the file I tried again, only reading rubbish. Thats strange! So it has something to do with saving the file and maybe setting a special encoding. Maybe thats related to the editor? Could you please try to redo what I explained and see if you get the same results? Thank you. @hek have you ever had such a problem of a sketch behaving differently after saving? -
@Yveaux thank you very much for offering help with verification, but something strange happened during preperation of files: I took an example sketch and modified it to print the "ß1ß" on serial --> working fine.
But after saving the file I tried again, only reading rubbish. Thats strange! So it has something to do with saving the file and maybe setting a special encoding. Maybe thats related to the editor? Could you please try to redo what I explained and see if you get the same results? Thank you. @hek have you ever had such a problem of a sketch behaving differently after saving?@Anduril Ok, did some tests:
Copied your problematic example string from this topic into Arduino IDE (1.6.5), on Windows 10:
Saved the sketch.
Viewed sketch.ino in notepad:
Newlines are f*cked up, but "ß1ß" can clearly be recognized.Viewed the same sketch in HxD hex viewer:
And there we are! The string is stored as Unicode characters!
Reading it back in Arduino IDE:
Everything looks fine again.
Apparently the unicode string gets compiled directly and shows as multiple, wrong characters in your sketch when used/printed...
Ok, one more idea: you can try to store the ß character as an escaped ASCII character in you string (refer to this ).
This will look strange in the code, but should print correctly to the console:The ASCII escape sequence for ß is \xE1 Your test sequence "ß1ß" then becomes "\xE11\xE1"Please try this...
-
@Mickey In principle the MQTT gateway should also run on the ESP8266, if you make the same changes to it as I did to the Ethernet gateway example (diff of the files should help a lot: https://www.diffchecker.com/eeo5ahzn).
On the other hand, the pubsubclient (https://github.com/knolleary/pubsubclient) MQTT client implementation by knolleary is heavily tested and works fine on ESP8266 (I tested it myself).
The ESP8266 has a lot more Flash & RAM available than an ATMega, so implementing MQTT should not be a problem.@Yveaux
hi
there is problem for sensor library when we intend use the its examples as following
In file included from \libraries\MySensors\MyGateway.cpp:13:0:\libraries\MySensors\utility/MsTimer2.h:7:2: error: #error MsTimer2 library only works on AVR architecture
#error MsTimer2 library only works on AVR architecture
^
In file included from \libraries\MySensors\MyGateway.cpp:14:0:
\libraries\MySensors\utility/PinChangeInt.h:103:19: fatal error: new.h: No such file or directory
#include <new.h>
^
compilation terminated.
Error compiling. -
@Yveaux
hi
there is problem for sensor library when we intend use the its examples as following
In file included from \libraries\MySensors\MyGateway.cpp:13:0:\libraries\MySensors\utility/MsTimer2.h:7:2: error: #error MsTimer2 library only works on AVR architecture
#error MsTimer2 library only works on AVR architecture
^
In file included from \libraries\MySensors\MyGateway.cpp:14:0:
\libraries\MySensors\utility/PinChangeInt.h:103:19: fatal error: new.h: No such file or directory
#include <new.h>
^
compilation terminated.
Error compiling.@mkeyno did you change anything to the gateway code, and which version of MySensors are you running?
I've ported the gateway code to ESP8266. That doesn't mean any sensor code will also automatically run on an ESP.
Packaged with MySensors are a lot of libraries that will not compile on ESP, so if you try to use one (pinchange int or timers) it will likely fail to compile. -
@Yveaux SUCCES!!! Thank you very much, your way worked nearly perfect. ONly small change: "ß" is represented by hexcode DF, so using \eDF gives the correct wifi password for me.
Now a last thing as bonus: how to setup a fixed ip and not using dhcp? My dhcp is not very usable as it reassigns all IPs on reboot (stupid firmware by Deutsche Telekom). -
@Yveaux SUCCES!!! Thank you very much, your way worked nearly perfect. ONly small change: "ß" is represented by hexcode DF, so using \eDF gives the correct wifi password for me.
Now a last thing as bonus: how to setup a fixed ip and not using dhcp? My dhcp is not very usable as it reassigns all IPs on reboot (stupid firmware by Deutsche Telekom).@Anduril Great to hear you got it to work!
how to setup a fixed ip and not using dhcp?
Google'd a bit. Seems like Wifi.config requires 3 parameters:
// static ip, gateway, netmask WiFi.config(IPAddress(192,168,1,100), IPAddress(192,168,1,1), IPAddress(255,255,255,0));Make sure to call it after WiFi.begin().
Btw. ESP8266 Arduino port follows the Arduino WiFi library API.
-
@mkeyno did you change anything to the gateway code, and which version of MySensors are you running?
I've ported the gateway code to ESP8266. That doesn't mean any sensor code will also automatically run on an ESP.
Packaged with MySensors are a lot of libraries that will not compile on ESP, so if you try to use one (pinchange int or timers) it will likely fail to compile.@Yveaux no buddy I used the last update of your repository, my question is , are you aware that your esp8266 sample sketch call library that wont work with esp architecture? I've compare last update with previous library and I've find the for couple of header file following code has been added
#ifdef AVR
#include <avr/interrupt.h>
#else
#error MsTimer2 library only works on AVR architecture
#endifand I was wondering why your sample sketch call such file into the compiling
-
Hi @Yveaux
could you please assist in the error.
ESP8266 MySensors Gateway Connecting to HoUsEoFcLoWnS scandone f 0, scandone .add 0 aid 5 pm open phy_2,type:2 0 0 cnt connected with HoUsEoFcLoWnS, channel 11 dhcp client start... .ip:192.168.0.23,mask:255.255.255.0,gw:192.168.0.1 .Connected! IP: 192.168.0.23 ets Jan 8 2013,rst cause:4, boot mode:(3,7) wdt reset load 0x4010f000, len 1264, room 16 tail 0 chksum 0x42 csum 0x42 ~ldThe gateway just keeps looping and connecting.
I'm using a NodeMCU with a NRF ( both from ebay),
Using the Regular library, and default sketch with SSID/pass updated.i tried checking the error "rst cause:4, boot mode:(3,7)" but wasn't able to find something.
I even tried to power it using a USB cellphone charger, but i was unable to telnet so that rules out the power issue
Thanks in advance