These are chat archives for esp8266/Arduino

22nd
May 2015
tzapu
@tzapu
May 22 2015 04:20
i got it to compile at some point but the oled is still dark, waaaay over my head in this :P
alon24
@alon24
May 22 2015 04:25
did u set the correct i2c adress
Can I share the code
Can u share the code?
tzapu
@tzapu
May 22 2015 04:54
can i attach here i wonder
i hope this is ok
that compiles and i can upload to my nodemcu dev board
although, as i said, i m way over my head and maybe i commented/removed some parts i shouldn t have
tries with both 0x3C and 0x3D for i2c address
but i am not sure if the pins i connected the oled to were correct
tried with both gpio 12-14 and 4-5 i think
this produced a working sketch
pin 4 = SDA
pin 5 = SCL
ya know they are mostly swapped on the silk screens so if one way does not work, switch the pins
Ivan Grokhotkov
@igrr
May 22 2015 08:40
tried connecting I2C CO2 sensor last night, didn't work
will scope the thing today
also there are some modifications to the i2c part suggested in this issue: https://github.com/esp8266/Arduino/issues/254#issuecomment-104067714
need to see if this improves things for me
ficeto
@ficeto
May 22 2015 08:56
I have used many many sensors and things with this I2C code
what he sees is quite normal
usually people expect the master to contol transmission fully but that is not the case
there are times that the lib waits for the slave to release the lines
Ivan Grokhotkov
@igrr
May 22 2015 08:58
well, the thing is that it does work for him with the earlier code...
ficeto
@ficeto
May 22 2015 08:58
there is a thing called clock stretching that oh so the thing os I2C
how come it works for me
and what I see on this scope looks fine
Ivan Grokhotkov
@igrr
May 22 2015 08:59
it works for me with an i2c EEPROM and an abmient light sensor. but doesn't work with CO2 sensor...
the older code used to work for co2 as well
ficeto
@ficeto
May 22 2015 09:00
have to see if I can find something that does not work
i see what he has commented and can say that those lines are there exactly to deal with shitty slaves
Ivan Grokhotkov
@igrr
May 22 2015 09:00
that's okay in my book
I would prefer the library to be forgiving as much as possible instead of being uber-compliant at the cost of not being able to work with shitty slaves
ficeto
@ficeto
May 22 2015 09:01
i'm fine with getting a working code for all
Ivan Grokhotkov
@igrr
May 22 2015 09:02
well, at least AVR's i2c slave
ficeto
@ficeto
May 22 2015 09:02
maybe we need to compile a sample list of things that do not work
Ivan Grokhotkov
@igrr
May 22 2015 09:02
sure
mine is K30 i2c sensor
I'll double-check if made any mistake with hardware connection today
ficeto
@ficeto
May 22 2015 09:06
i can hook up just about any sensor/display without external pullups
ficeto
@ficeto
May 22 2015 09:13
@igrr link me please if they reply there
Ivan Grokhotkov
@igrr
May 22 2015 09:31
k
ficeto
@ficeto
May 22 2015 09:36
#include <Wire.h>

void setup(){
  Serial1.begin(115200);
  Serial1.println("\nI2C Scanner");
  Wire.begin();
  Wire.setClock(400000);
}

void loop(){
  byte error, address;
  int nDevices;

  Serial1.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++){
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0){
      Serial1.print("I2C device found at address 0x");
      if (address<16) Serial1.print("0");
      Serial1.print(address,HEX);
      Serial1.println("  !");
      nDevices++;
    } else if (error == 4){
      Serial1.print("Unknow error at address 0x");
      if (address<16) Serial1.print("0");
      Serial1.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial1.println("No I2C devices found\n");
  else
    Serial1.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}
I could not find a device that can not be seen
but the DS1307 which runs on 100KHz
if I switch to 100KHz I can see that too
tested with SSD1306, DS1307, DS3231, MPU6050, BMP180, MS1156, HMC5883, TMP102 and I2C EEPROM
that is all I found around to test with
tzapu
@tzapu
May 22 2015 10:09
hi, i m trying the above i2c scanner but getting MEM CHECK FAIL!!!
ficeto
@ficeto
May 22 2015 10:12
what version IDE?
tzapu
@tzapu
May 22 2015 10:17
1.6.4
nodemcu dev board
ficeto
@ficeto
May 22 2015 10:17
same here
well not teh board
tzapu
@tzapu
May 22 2015 10:19
wrote the blynk sketch
seems to boot up fine
i ve also tried to see what it says around mem check fail but it s garbled at 9600, 115200 and 74880
weird
hmm, i ve changed Serial1 to Serial on a wild guess
and it works

drl
I2C Scanner
Scanning...
No I2C devices found

Scanning...
No I2C devices found

Scanning...
No I2C devices found

Scanning...
No I2C devices found

Scanning...
No I2C devices found

Scanning...
No I2C devices found

Scanning...
No I2C devices found

tzapu
@tzapu
May 22 2015 10:25
and now it sees ssd1306 Scanning...
I2C device found at address 0x3C
Ivan Grokhotkov
@igrr
May 22 2015 10:29
found another one which doesn't work with new code but used to work before — MPR121
it replies to the scanner, but when you try to do something more complicated, it fails
now i tried the changes mentioned in the topic...
let me show you the scope pics
tzapu
@tzapu
May 22 2015 10:31
and thank you @igrr and @ficeto i now have a working ssd3601 on i2c, lovely :D
Ivan Grokhotkov
@igrr
May 22 2015 10:31
nah
still doesn't work
let me try and revert to my older code
ficeto
@ficeto
May 22 2015 10:32
make sure you have enough power
alon24
@alon24
May 22 2015 10:53
so now that the ssd1306 works, can this code goto a repository or come when doing the board manager?
Ivan Grokhotkov
@igrr
May 22 2015 10:57
@ficeto ok so i disconnected everything, connected back and now with the modified code from the issue on github, MPR121 works
and it doesn't work with what we have in git
Screen Shot 2015-05-22 at 13.56.31.png
this is what happens with the current code
and when i change that,
Ivan Grokhotkov
@igrr
May 22 2015 11:03
Screen Shot 2015-05-22 at 14.03.13.png
now i don't like that SCL becomes asymmetric, but at least it works
ficeto
@ficeto
May 22 2015 11:05
that is not the reason
i would love to have screenshots of the same exact transmission
on both libs
this clock is not OK to be like that!
return back to the "new" coe
then comment in twi_write_stop
the first SDA_LOW();
give it a shot
Ivan Grokhotkov
@igrr
May 22 2015 11:12
ok
sec
Ivan Grokhotkov
@igrr
May 22 2015 11:20
made the change
captured the same situation:
Screen Shot 2015-05-22 at 14.21.32.png
Screen Shot 2015-05-22 at 14.20.26.png
ficeto
@ficeto
May 22 2015 11:24
which is which and what is the result
Ivan Grokhotkov
@igrr
May 22 2015 11:25
the first one is the current git with SDA_LOW removed from twi_write_stop.
after the third exchange SDA goes low and stays there forever
the second one is with the changes from github issue
the interaction goes on and device responds with correct readings
ficeto
@ficeto
May 22 2015 11:28
ok first issue is fixed with that stop
the next issue I see is the it has ack on address send
that is funky
this code prolly tricks it with those short clocks
ack is actually OK
that's in spec
ficeto
@ficeto
May 22 2015 11:34
ok next thing
in twi_readFrom()
in the while loop
change 10 to 20
the difference i see is that the other code produced one more clock on which the slave responded
no that's not it
ficeto
@ficeto
May 22 2015 11:58
simple question
in your call when you write, do you send stop?
you are reading one byte and then you want to write one byte
in between do you send stop?
Ivan Grokhotkov
@igrr
May 22 2015 12:01
no I don't
    Wire.beginTransmission(address); 
    Wire.write(reg); // set address to read from our requested register
    Wire.endTransmission(false); // repeated start
    Wire.requestFrom(address,(unsigned char)1);  // just a single byte
that's between write and read
ficeto
@ficeto
May 22 2015 12:03
change twi_writeTo to:

unsigned char twi_writeTo(unsigned char address, unsigned char * buf, unsigned int len, unsigned char sendStop){
  unsigned int i;
  if(!twi_write_start()) return 4;//line busy
  if(!twi_write_byte(((address << 1) | 0) & 0xFF)) return 2;//received NACK on transmit of address
  for(i=0; i<len; i++){
    if(!twi_write_byte(buf[i])) return 3;//received NACK on transmit of data
  }
  if(sendStop) twi_write_stop();
  i = 0;
  while(SDA_READ() == 0 && (i++) < 10){
    SCL_LOW();
    twi_delay(twi_dcount);
    SCL_HIGH();
    twi_delay(twi_dcount);
  }
  return 0;
}
readFrom to:
unsigned char twi_readFrom(unsigned char address, unsigned char* buf, unsigned int len, unsigned char sendStop){
  unsigned int i;
  if(!twi_write_start()) return 4;//line busy
  if(!twi_write_byte(((address << 1) | 1) & 0xFF)) return 2;//received NACK on transmit of address
  for(i=0; i<len; i++) buf[i] = twi_read_byte(false);
  if(sendStop) twi_write_stop();
  i = 0;
  while(SDA_READ() == 0 && (i++) < 10){
    SCL_LOW();
    twi_delay(twi_dcount);
    SCL_HIGH();
    twi_delay(twi_dcount);
  }
  return 0;
}
and let me know
and try with that commented line back uncommented
maybe readFrom should stay as it was
nah
this should cover naggy devices
Ivan Grokhotkov
@igrr
May 22 2015 12:07
what are those extra SCL pulses?
ficeto
@ficeto
May 22 2015 12:08
they let the device release the data line
most devices I tested didi not need them but some did
his changes of the clock writes did exactly that
added a low clock at the end of the write
when no stop has been written
it was more of a guess patch than understanding what the issue is
Ivan Grokhotkov
@igrr
May 22 2015 12:11
cool
no error
TOUCH: 0 0 0 0 0 0 0 0 0 0 0 0 0
FDAT: 508 506 514 497 576 563 544 571 546 667 659 651 0
BVAL: 508 504 512 496 576 560 544 568 544 664 656 648 0
works now
ficeto
@ficeto
May 22 2015 12:11
ok commiting
that with the uncommented line correct?
Ivan Grokhotkov
@igrr
May 22 2015 12:11
correct
ficeto
@ficeto
May 22 2015 12:13
esp8266/Arduino#303
tzapu
@tzapu
May 22 2015 12:37
@alon24 , ficeto's modifications in a fork for ssd1306 https://github.com/tzapu/Adafruit_SSD1306
ficeto
@ficeto
May 22 2015 12:38
@tzapu this is too hardware specific. I did not look at the other changes made, wanted to get it running
different approach is required so the changes can be pushed to Adafruit and actually acomplish something in thelong run
tzapu
@tzapu
May 22 2015 12:39
@ficeto thanks, this is just for people like me desperate in the short term :D
i won t be pushing this to ada
ficeto
@ficeto
May 22 2015 12:53
adafruit/Adafruit_SSD1306#25
there
here is the commit ficeto/Adafruit_SSD1306@fef5856
that is a proper fix as it will not break AVR/SAM functionality
tzapu
@tzapu
May 22 2015 12:59
WOW, you are insanely great
ficeto
@ficeto
May 22 2015 13:14
:D I wish...
just average great... :D
@Links2004 why not do the same for your library?
maybe Ada will pull it
i saw in the new interface that libraries can be added from a list
Markus
@Links2004
May 22 2015 13:16
then i need to test with an AVR first, shut work but never tested ;)
ficeto
@ficeto
May 22 2015 13:16
if we push the support changes to the original repos, users will widely benefit
i can test it
i can test it with both AVR and SAM
Markus
@Links2004
May 22 2015 13:17
perfect, I will create an github clone and push the development there
ficeto
@ficeto
May 22 2015 13:17
the screen is actually hooked to my due
oops not... to an STM
only had to push ;)
ficeto
@ficeto
May 22 2015 13:21
gimme your sketch
Markus
@Links2004
May 22 2015 13:22
for testing i use the graphicstest example
ficeto
@ficeto
May 22 2015 13:22
any special init?
Markus
@Links2004
May 22 2015 13:22
for esp8266 use graphicstest_esp8266 (delays needed)
no all like the orginal one
Markus
@Links2004
May 22 2015 13:52
is the prototype for base64-encoded known ? i only find the one for base64_decode
EXP_FUNC int STDCALL base64_decode(const char *in,  int len, uint8_t *out, int *outlen);
ficeto
@ficeto
May 22 2015 13:59
have ti somewhere
btw the screen does nothing here
ILI9341 Test!
Display Power Mode: 0xFF
MADCTL Mode: 0xFF
Pixel Format: 0xFF
Image Format: 0xFF
Self Diagnostic: 0xFF
Benchmark                Time (microseconds)
Screen fill              276653
Text                     53706
Lines                    535445
Horiz/Vert Lines         24500
Rectangles (outline)     17211
Rectangles (filled)      575097
Circles (filled)         178600
Circles (outline)        233160
Triangles (outline)      169835
Triangles (filled)       245148
Rounded rects (outline)  81775
Rounded rects (filled)   659289
Done!
Markus
@Links2004
May 22 2015 14:00
on esp hardware?
ficeto
@ficeto
May 22 2015 14:00
yup
youdo not have the reset pin connected right?
Markus
@Links2004
May 22 2015 14:00
have it on vcc.
#define TFT_DC 4
#define TFT_CS 15
ficeto
@ficeto
May 22 2015 14:02
ok
we have a picture
DC can not be 16
ficeto
@ficeto
May 22 2015 14:07
CS can be
why so?
Markus
@Links2004
May 22 2015 14:09
both pins are implemented the same way?
https://github.com/Links2004/Adafruit_ILI9341/blob/master/Adafruit_ILI9341.cpp#L173
is it not booting ?
ficeto
@ficeto
May 22 2015 14:10
nope
CS can be both 15 and 16
DC has to not be 16
Markus
@Links2004
May 22 2015 14:12
so the application in not starting up, then the problem comes from pin 16 and deepsleep handling
may the display pull DC in some direction
ficeto
@ficeto
May 22 2015 14:12
app is starting
debug is in console
screen is black
or shows the last screen inverted flickering
Markus
@Links2004
May 22 2015 14:14

strange i not see any difference between the functions

  inline void spiCsHigh(void);
  inline void spiCsLow(void);

and

  inline void spiDcHigh(void);
  inline void spiDcLow(void);
ficeto
@ficeto
May 22 2015 14:15
no clue really
both pins surely work
just not when DC is 16
Markus
@Links2004
May 22 2015 14:16
may pin 16 need different handling some how like in __digitalWrite
ficeto
@ficeto
May 22 2015 14:16
why is it handled as CS?
Markus
@Links2004
May 22 2015 14:17
may it is allways in the same state and so the display works
ficeto
@ficeto
May 22 2015 14:17
no, tried pulling CS low
screen does not boot
unless CS needs to be high, there isn't a way this to work
Markus
@Links2004
May 22 2015 14:18
CS low --> enable display SPI rx
ficeto
@ficeto
May 22 2015 14:19
yes, but connecting CS to GND dors not boot the screen
which means that pin 16 is working
Markus
@Links2004
May 22 2015 14:19
and DC is not an 16 in this case
ficeto
@ficeto
May 22 2015 14:20
DC is on 15
Markus
@Links2004
May 22 2015 14:20
will try it.
ficeto
@ficeto
May 22 2015 14:20
15 has a pulldown resistor
ficeto
@ficeto
May 22 2015 14:29
ok so.. SPI works, I2C works, Interrupt/digital/analogRead works
serial works
SD/SPIFFS also
pwm seems working, though I have not tested it wil scope lately
I'm sooo looking forward WebSocketing
I wander what the latency and load will be
Markus
@Links2004
May 22 2015 14:33
DC: 4 CS: 15 --> OK
DC: 4 CS: 16 --> FAIL
DC: 4 CS: GND --> FAIL
DC: 4 CS: VCC --> FAIL
if i hook me logic analyzer the pin don't do noting.
if i get base64_encode to working the header stuff is done
DC: 16 CS: 15 --> FAIL also
ficeto
@ficeto
May 22 2015 14:37
size_t base64_encode(char* target, size_t target_len, const char* source, size_t source_len);
try that
Markus
@Links2004
May 22 2015 14:38
so pin 16 is not possible with ILI9341 in high speed mode if you set the ILI9341_USE_DIGITAL_WRITE define it shut work
ficeto
@ficeto
May 22 2015 14:38
yes pi16 is separate from the rest
no INT there
Markus
@Links2004
May 22 2015 14:38
k will try it
ficeto
@ficeto
May 22 2015 14:39
how is the CS working?
when I have it on pin 16
and if i have it in GND or VCC the screen does not work
yet it works on pin 16
WTF?
Markus
@Links2004
May 22 2015 14:39
by me its never working on 16 and the logic analyzer dont see any signal change
ficeto
@ficeto
May 22 2015 14:41
then i'm crazy
and so is my ESP12e
it makes all the sence to me not to be working if pin 16 is not impemented
why is it then?
Markus
@Links2004
May 22 2015 14:41
I use an ESP12, strange I dont get it.
ficeto
@ficeto
May 22 2015 14:43
pin 16 is a good option btw
because you can have 4 and 5 for I2C
123 for uart
if you are like me and are always in programming more
pin 0 is unusable
Markus
@Links2004
May 22 2015 14:45
pin 0 can be output, but only if no serial programmer connected -> most time usless
pin16 integration is possible but may costs speed, have some ideas to that but first i work on websocket ;)
Markus
@Links2004
May 22 2015 16:02
cant get base64_encode to working.. will use a public domain variant for now, this is blocking to long the development...
Ivan Grokhotkov
@igrr
May 22 2015 16:02
look what Espressif has for us
wifi_station_get_rssi
Markus
@Links2004
May 22 2015 16:03
wow nice, new SDK release?
Ivan Grokhotkov
@igrr
May 22 2015 16:03
system_phy_set_max_tpw
tzapu
@tzapu
May 22 2015 16:04
speaking of hidden sdk functions, did anyone manage to get smart connect to work?
Ivan Grokhotkov
@igrr
May 22 2015 16:04
I merged it but never tried actually
Espressif's android app is a paid app.
this kinda drove me off
tzapu
@tzapu
May 22 2015 16:05
ah, so it doesn t work with the TI one , but theirs
Markus
@Links2004
May 22 2015 16:05
@igrr will you update the SDK?
Ivan Grokhotkov
@igrr
May 22 2015 16:14
I will
ficeto
@ficeto
May 22 2015 16:24
/var/folders/b_/2gy4g72944359d2vj4htbtwm0000gn/T/build734757813300315175.tmp/DS3231.c.o: In function `rtc_read':
DS3231.c:(.text+0x218): undefined reference to `localtime'
DS3231.c:(.text+0x22b): undefined reference to `localtime'
collect2: error: ld returned 1 exit status
how to get over shit like that?
ficeto
@ficeto
May 22 2015 16:26
obviously i'm not that dumb :D
Markus
@Links2004
May 22 2015 16:26
basically its return the unix time. so simply try millis()/1000
ficeto
@ficeto
May 22 2015 16:27
i think i found the problem
i have some time.h from some shit lib in my libraries
missed to include it in the sketch
with that shit lib removed the problem persist
same with gmtime
Ivan Grokhotkov
@igrr
May 22 2015 16:30
since we have dropped libc, those functions have to be implemented in libc_replacements.c
ficeto
@ficeto
May 22 2015 16:30
in rtc_read there is no mention of localtime/gmtime
Markus
@Links2004
May 22 2015 16:32
can you link the library?
Ivan Grokhotkov
@igrr
May 22 2015 16:32
and elsewhere in DS3231.c?
or .h
ficeto
@ficeto
May 22 2015 16:32
yes.. sure there is
just not in that method

bool rtc_set(uint32_t epoch){
  time_t timev = (time_t)(epoch);
  struct tm * now = gmtime(&timev);
  uint8_t buf[7];
  buf[0] = dec2bcd(now->tm_sec);   
  buf[1] = dec2bcd(now->tm_min);
  buf[2] = dec2bcd(now->tm_hour);      // sets 24 hour format
  buf[3] = dec2bcd(now->tm_wday?now->tm_wday:7);   
  buf[4] = dec2bcd(now->tm_mday);
  buf[5] = dec2bcd(now->tm_mon + 1);
  buf[6] = dec2bcd(now->tm_year - 100); 
  return rtc_writeBytes(0x00, buf, 7) && rtc_setReg(RTCCR, RTCINTCN) && rtc_setReg(RTCSR, 0);
}
Ivan Grokhotkov
@igrr
May 22 2015 16:33
well there is a lib for arduino, called DateTime
it has local time
localTime damn autocorrect
and maybe gmtime as well
Markus
@Links2004
May 22 2015 16:40
yay get the Websocket authentication working. but without usage of base64_encode from espressif.
tzapu
@tzapu
May 22 2015 17:01
this is a very weird one and my play time is over, but if i m using https://github.com/ficeto/Adafruit_SSD1306 for the oled, i can t connect to wifi anymore, using the previous lib, buchered as it was connects every time.
very weird and i have no idea why that is even possible
everything including the old works fine, it just does not connect to wifi anymore
ficeto
@ficeto
May 22 2015 17:20
makes no sense will try later
you sure it's all the same in your sketch?
_BEGIN_STD_C

struct tm
{
  int    tm_sec;
  int    tm_min;
  int    tm_hour;
  int    tm_mday;
  int    tm_mon;
  int    tm_year;
  int    tm_wday;
  int    tm_yday;
  int    tm_isdst;
};

clock_t       _EXFUN(clock,    (void));
double       _EXFUN(difftime, (time_t _time2, time_t _time1));
time_t       _EXFUN(mktime,   (struct tm *_timeptr));
time_t       _EXFUN(time,     (time_t *_timer));
#ifndef _REENT_ONLY
char      *_EXFUN(asctime,  (const struct tm *_tblock));
char      *_EXFUN(ctime,    (const time_t *_time));
struct tm *_EXFUN(gmtime,   (const time_t *_timer));
struct tm *_EXFUN(localtime,(const time_t *_timer));
#endif
size_t       _EXFUN(strftime, (char *_s, size_t _maxsize, const char *_fmt, const struct tm *_t));

char      *_EXFUN(asctime_r,    (const struct tm *, char *));
char      *_EXFUN(ctime_r,    (const time_t *, char *));
struct tm *_EXFUN(gmtime_r,    (const time_t *, struct tm *));
struct tm *_EXFUN(localtime_r,    (const time_t *, struct tm *));

_END_STD_C
isn't _EXFUN something in ROM?
Markus
@Links2004
May 22 2015 17:22
no its an macro
#define    _EXFUN(name, proto)        name proto
from _ansi.h
ficeto
@ficeto
May 22 2015 17:50
yeah sorry
it expands to localtime_r(const time_t , struct tm ) for example
but isn't that something tha is available?
that is more what I asked
got around the problem BTW
RTC now set, no dependency on external lib
Markus
@Links2004
May 22 2015 17:52
its part of the libc but we have no working one
Markus
@Links2004
May 22 2015 18:35
[WS-Server][0] new client from 192.168.2.23
[WS-Server][0][handleHeader] Header read fin.
[WS-Server][0][handleHeader]  - cURL: /test
[WS-Server][0][handleHeader]  - cIsUpgrade: 1
[WS-Server][0][handleHeader]  - cIsWebsocket: 1
[WS-Server][0][handleHeader]  - cKey: HZWiz/bTnWH+OgpwpJI9eg==
[WS-Server][0][handleHeader]  - cProtocol: esp8266
[WS-Server][0][handleHeader]  - cExtensions: permessage-deflate; client_max_window_bits
[WS-Server][0][handleHeader]  - cVersion: 13
[WS-Server][0][handleHeader] Websocket connection incomming.
[WS-Server][0][handleHeader]  - sKey: MWNhfY7Pwncg1672FizJslz0mmM=
[WS-Server][0][handleWebsocket] ------- read massage frame -------
[WS-Server][0][handleWebsocket] fin: 1 rsv1: 0 rsv2: 0 rsv3 0  opCode: 1
[WS-Server][0][handleWebsocket] mask: 1 payloadLen: 49
[WS-Server][0][handleWebsocket] Text: Message from Browser to ESP8266 yay its Working!!
[WS-Server][0][handleWebsocket] ------- read massage frame -------
[WS-Server][0][handleWebsocket] fin: 1 rsv1: 0 rsv2: 0 rsv3 0  opCode: 1
[WS-Server][0][handleWebsocket] mask: 1 payloadLen: 4
[WS-Server][0][handleWebsocket] Text: ping
one way done Browser to ESP8266
ficeto
@ficeto
May 22 2015 18:47
yey!
ficeto
@ficeto
May 22 2015 22:05
so SPIFFS was a big mistake