These are chat archives for SmingHub/Sming

21st
Mar 2016
laurentppol
@laurentppol
Mar 21 2016 04:18
got @Sming compiling, app TOO, (w/o HWTimer).
how to use HW-Timer?
alon24
@alon24
Mar 21 2016 07:16
@hreintke u here?
I am having an issue in rtos, where i get a message in websocket command listener, i then process it, and as a last action of the process, I want to send the data to all the connected websocket client
I am guessing when I do that it tries to send the data to this websocket client (that I am currently handling a message from) and resets
executing websocket command
Received Command, size = 14,cmd = app loadConfig
CommandExecutor : executing command app
Returning Delegate for app 

App debug : app loadConfig
loadConfig called
server has 1 websocket clients
TCP connection send: 2 
TCP connection send: 110 
TCP connection send: 2 
TCP connection send: 22 
TCP connection send: 2 
TCP connection send: 6 
TCP received new: 20 bytes
onReadyToSendData: 1
Static OnSent buf = 2920
TCP sent: 144
onReadyToSendData: 2
Static OnReceive buf = 2920
WS: app --heartbeat--
executing websocket command
Received Command, size = 17,cmd = app --heartbeat--
CommandExecutor : executing command app
Returning Delegate for app 

Fatal exception (9): 
epc1=0x40255271
epc2=0x00000000
epc3=0x4010181b
epcvaddr=0x3ffe0041
depc=0x00000000
rtn_add=0x40255278
�
 ets Jan  8 2013,rst cause:2, boot mode:(1,6)
could this be an issue, shoudl I use a timer?
(to send the data to the clients (including this one), or should I just send to all OTHER clients?
void processAppCommands(Command inputCommand, CommandOutput* commandOutput)
{
    commandOutput->printf("App : %s\r\n",inputCommand.getCmdString().c_str());
....
        else if(commandToken[1].equals("saveConfig")) {
            debugf("SaveConfig called");
            ActiveConfig.Kp = sousCommand.sousController->Kp;
            ActiveConfig.Ki = sousCommand.sousController->Ki;
            ActiveConfig.Kd = sousCommand.sousController->Kd;
            ActiveConfig.Needed_temp = sousCommand.sousController->Setpoint;
            ActiveConfig.enabled = sousCommand.enabled;
            ActiveConfig.highlow = sousCommand.highLow;
            ActiveConfig.operationMode = sousCommand.operationMode;
            saveConfig(ActiveConfig);
        }
//THE ISSSUE is with updateInitAllClients()
        else if(commandToken[1].equals("loadConfig")) {
            debugf("loadConfig called");
            loadConfig();
            updateInfoOnStart();
            updateInitAllClients();
        }
    }
}

void updateInitAllClients() {
    WebSocketsList &clients = server.getActiveWebSockets();
    debugf("server has %i websocket clients", clients.size());
    for (int i = 0; i < clients.count(); i++) {
        updateInitWebSockets(clients[i]);
    }
}

void updateInitWebSockets(WebSocket client) {

    char *buf = new char[200];
    sprintf(buf, "updatePID:%s,%s,%s;updateSetPoint:%s;updateWIFI:%s,%s;relayState:%s;highlow;currentTemp=%s",
            String(sousCommand.sousController->Kp, 1).c_str(),
            String(sousCommand.sousController->Ki, 1).c_str(),
            String(sousCommand.sousController->Kd, 1).c_str(),
            String(sousCommand.sousController->Setpoint, 1).c_str(),
            ActiveConfig.NetworkSSID.c_str(),
            ActiveConfig.NetworkPassword.c_str(),
            (sousCommand.relayState == true ? "true" : "false"),
            ActiveConfig.highlow == true ? "true" : "false",
            String(sousCommand.currentTemp,2));
//            ,ActiveConfig.operationMode == Manual ?0:1);

    String ret = String(buf);
    delete buf;
    client.sendString(ret);
}
hreintke
@hreintke
Mar 21 2016 07:38
@alon24 :
Doesn't the error come when you are executing : Received Command, size = 17,cmd = app --heartbeat--
You should check the code there
alon24
@alon24
Mar 21 2016 07:43
no I do not think so, or i do not know, it happens when I explicitly click the loadConfig button
--heartbeat--- runs all the time
there is actually no server code to handle heartbeat,, since it is used to : 1. send heartbeat to client every 4s, client sees the bit, and resets counter
if client (websocket client ) misses more than 2-3 bits, it closes connection (or whatever)
every time client gets a bit, it sends a bit in response
   function onOpen(event){
  if(window.timerID){ /* a setInterval has been fired */
    window.clearInterval(window.timerID);
    window.timerID=0;
  }

  if (heartbeat_interval === null) {
        missed_heartbeats = 0;
        heartbeat_interval = setInterval(function() {
            try {
                missed_heartbeats++;
                if (missed_heartbeats >= 2)
                    throw new Error("Too many missed heartbeats.");
                socket.send("app " + heartbeat_msg);
            } catch(e) {
                clearInterval(heartbeat_interval);
                heartbeat_interval = null;
                console.warn("Closing connection. Reason: " + e.message);
                socket.close();
            }
        }, 5000);
    }

    toggleShowOverlay(false);
    // doSend("app getInitData")
    // setFormState(true);
}
hreintke
@hreintke
Mar 21 2016 07:51
Where in your code is : epc1=0x40255271
alon24
@alon24
Mar 21 2016 08:02
App debug : app loadConfig
loadConfig called
loading file exists
loaded file = {
  "network": {},
  "Sousvide": {
    "T": 36.00,
    "kp": 1.80,
    "ki": 1.00,
    "kd": 1.00
  },
  "operations": {
    "type": "0",
    "highLow": "0"
  }
}
server has 1 websocket clients
TCP connection send: 2 
TCP connection send: 110 
TCP connection send: 2 
TCP connection send: 22 
TCP connection send: 2 
TCP connection send: 6 
TCP received new: 20 bytes
onReadyToSendData: 1
Static OnSent buf = 2920
TCP sent: 144
onReadyToSendData: 2
TCP connection send: 2 
TCP connection send: 13 
Static OnSent buf = 2920
TCP sent: 15
onReadyToSendData: 2
Static OnReceive buf = 2920
WS: app --heartbeat--
executing websocket command
Received Command, size = 17,cmd = app --heartbeat--
CommandExecutor : executing command app
Returning Delegate for app 

Fatal exception (28): 
epc1=0x40243558
epc2=0x00000000
epc3=0x40242e41
epcvaddr=0x00000000
depc=0x00000000
rtn_add=0x40243542
�
 ets Jan  8 2013,rst cause:2, boot mode:(1,7)


PORT CLOSED

                0x0000000040243488                Print::print(char const*)
 *fill*         0x0000000040243497        0x1 
 .text._ZN5Print7printlnEv
                0x0000000040243498       0x29 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
                                         0x35 (size before relaxing)
                0x0000000040243498                Print::println()
 *fill*         0x00000000402434c1        0x3 
 .text._ZN5Print7printlnEPKc
                0x00000000402434c4       0x25 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
                                         0x31 (size before relaxing)
                0x00000000402434c4                Print::println(char const*)
 *fill*         0x00000000402434e9        0x3 
 .text._ZN5Print6printfEPKcz
                0x00000000402434ec       0x91 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
                                         0x95 (size before relaxing)
                0x00000000402434ec                Print::printf(char const*, ...)
 *fill*         0x000000004024357d        0x3 
 .text._ZN5Print11printNumberEmh
                0x0000000040243580       0x74 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
                                         0x80 (size before relaxing)
                0x0000000040243580                Print::printNumber(unsigned long, unsigned char)
 .text._ZN5Print5printEli
                0x00000000402435f4       0x5b /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
                                         0x6b (size before relaxing)
                0x00000000402435f4                Print::print(long, int)
 *fill*         0x000000004024364f        0x1 
 .text._ZN5Print5printEii
                0x0000000040243650        0xf /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
                                         0x17 (size before relaxing)
                0x0000000040243650                Print::print(int, int)
 *fill*         0x000000004024365f        0x1 
 .text._ZN5Print10printFloatEdh
                0x0000000040243660      0x191 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
                                        0x209 (size before relaxing)
                0x0000000040243680                Print::printFloat(double, unsigned char)
 *fill*         0x00000000402437f1        0x3 
 .text._ZN5Print5printEdi
                0x00000000402437f4       0x15 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(Print.o)
I had to reuse the code (this time its in ap mode, not sta like it was before)
                0x0000000040242db0       0x6f /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(m_printf.o)
                                         0x77 (size before relaxing)
                0x0000000040242db0                m_printf
 *fill*         0x0000000040242e1f        0x1 
 .text.uart_tx_one_char
                0x0000000040242e20       0x35 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(uart.o)
                                         0x39 (size before relaxing)
                0x0000000040242e24                uart_tx_one_char
 *fill*         0x0000000040242e55        0x3 
 .text.UART_SetBaudrate
                0x0000000040242e58       0x29 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(uart.o)
                                         0x31 (size before relaxing)
                0x0000000040242e5c                UART_SetBaudrate
 *fill*         0x0000000040242e81        0x3
hreintke
@hreintke
Mar 21 2016 08:35

I am still not sure that it is in the loadconfig.
There is server has 1 websocket clients -> from loadconfig
The messages are sent

....
TCP received new: 20 bytes
onReadyToSendData: 1
Static OnSent buf = 2920
TCP sent: 144
onReadyToSendData: 2
TCP connection send: 2 
TCP connection send: 13 
Static OnSent buf = 2920
TCP sent: 15
onReadyToSendData: 2

A new message comes in and is processed.

Static OnReceive buf = 2920
WS: app --heartbeat--
executing websocket command
Received Command, size = 17,cmd = app --heartbeat--
CommandExecutor : executing command app
Returning Delegate for app
I have seen similar behavior when accessing the commandToken "outside it's range"
hreintke
@hreintke
Mar 21 2016 08:41
Where does the console.warn("Closing connection. Reason: " + e.message); print to ?
alon24
@alon24
Mar 21 2016 08:43
Removed all other stuff, and from the handler of command (in application) I just send a known text
This message was deleted
 *fill*         0x000000004024bc6f        0x1 
 .text._ZN13CommandOutputC2EP16MemoryDataStream
                0x000000004024bc70       0x37 /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(CommandOutput.o)
                                         0x43 (size before relaxing)
                0x000000004024bc70                CommandOutput::CommandOutput(MemoryDataStream*)
                0x000000004024bc70                CommandOutput::CommandOutput(MemoryDataStream*)
 *fill*         0x000000004024bca7        0x1 
 .text._ZN13CommandOutput5flushEv
                0x000000004024bca8       0xef /Users/iklein/docker/sming-docker/workspace/SmingRTOS/sming/compiler/lib//libsming.a(CommandOutput.o)
                                        0x12b (size before relaxing)
                0x000000004024bca8                CommandOutput::flush()
else if(commandToken[1].equals("loadConfig")) {
            debugf("loadConfig called");
//            loadConfig();
//            updateInfoOnStart();
            updateInitAllClients();
//            updateWebSocketTimer.startOnce();
        }

void updateInitAllClients() {
    WebSocketsList &clients = server.getActiveWebSockets();
//    debugf("server has %i websocket clients", clients.size());
    for (int i = 0; i < clients.count(); i++) {
        updateInitWebSockets(clients[i]);
    }
}

void updateInitWebSockets(WebSocket client) {

    client.sendString("updatePID:2,2,2");
}
when I press the loadconfig button, it goes boom
response sendBody
HttpResponse write stream
TCP connection send: 1024 
TCP connection send: 1024 
TCP connection send: 24 
Stream completed
TCP connection closing
~TCP connection
Static OnSent buf = 2170
-TCP connection
TCP connection send: 2 
TCP connection send: 13 
Static OnSent buf = 2920
TCP sent: 15
onReadyToSendData: 2
Static OnReceive buf = 2920
WS: app loadConfig
executing websocket command
Received Command, size = 14,cmd = app loadConfig
CommandExecutor : executing command app
Returning Delegate for app 

App debug : app loadConfig
loadConfig called
TCP connection send: 2 
TCP connection send: 15 
TCP connection send: 2 
TCP connection send: 22 
Fatal exception (9): 
epc1=0x4024bcb0
epc2=0x00000000
epc3=0x40244318
epcvaddr=0x6e696d73
depc=0x00000000
rtn_add=0x4024b584
�
 ets Jan  8 2013,rst cause:2, boot mode:(1,6)


PORT CLOSED
"console.warn("Closing connection. Reason: " + e.message); print to ?" prints to console in webclient
hreintke
@hreintke
Mar 21 2016 08:47
Need to go now, will try to reproduce in my dev environment later today.
Is your code on github ?
alon24
@alon24
Mar 21 2016 08:48
will put latest in 20 mins
development branch
(sosuvide)
hreintke
@hreintke
Mar 21 2016 08:49
ok thx
slaff
@slaff
Mar 21 2016 09:25
@hreintke Can you merge PR #659 ?
Alexander V. Ribchansky
@avr39-ripe
Mar 21 2016 10:52
@hreintke with fresh SmingRTOS/master with tcp_accepted my app survive 1100-1200 sec barrier.. but for some reason I can't get pequest.rawBody() :( always got {} "empty".. I think it needs fixes from @patrickjahns as in nonos..
hreintke
@hreintke
Mar 21 2016 10:54
@alon24 :
Can you update String(sousCommand.currentTemp,2) to String(sousCommand.currentTemp,2).c_str() and try again ?
hreintke
@hreintke
Mar 21 2016 10:59
@avr39-ripe :
Will need confirmation from @patrickjahns that is in line with the other updates he is making in this area and a PR on SmingRTOS.
alon24
@alon24
Mar 21 2016 11:52
@hreintke that fixed nothing for me
loadconfig button crashed all
(I do agree it should be c_str(), that was an oversight which was fixed , but does not affect the issue)
Patrick Jahns
@patrickjahns
Mar 21 2016 12:33
@hreintke
Sorry been busy with many other things (final thesis :-1: ) - I haven't gotten to continue with multipart (file upload) yet - the other 2 PRs in NONOS can be merged - for RTOS I haven't tested them yet.
Will need to setup a proper environment for them and test - but I am a bit worried since it will have more heap usage and rtos isn`t that kind with heap right?
@avr39-ripe
feel free to use my nonos PRs and try them on RTOS
alon24
@alon24
Mar 21 2016 13:14
I have another issue, I have a wii nunchuck, should be i2c 0x52 address. esp does not recognize it at, while arduino uno (cheap chinies one) does see it using i2cscanner (run on both arduino and esp
tried also with arduino ide-esp8266
so not realy a sming issue i think
can any1 guess help?
robotiko
@robotiko
Mar 21 2016 13:19
@alon24 so.. you mean that the i2c doenst work on esp Sming and ESPduino
but does on arduino?
5v arduino?
alon24
@alon24
Mar 21 2016 13:22
i am saying that i have a nunchuck - connecting to arduino (uno) finds it (0x52 == 82) connecting it to esp does not find it, it does find my lcd (0x3c)
i checked this using sming rtos and arduino ide- conneting to esp nodemcu v1
checked using iw2scanner
most annoyinhg
robotiko
@robotiko
Mar 21 2016 13:23
and arduino voltage level?
5v or 3,3v?
alon24
@alon24
Mar 21 2016 13:23
arduino is 5v
robotiko
@robotiko
Mar 21 2016 13:24
that can be a good reason
that the rx/tx are 3.3 and not 5v?
robotiko
@robotiko
Mar 21 2016 13:25
it depends on the i2c device logical levels
alon24
@alon24
Mar 21 2016 13:33
https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=49273 - and the cool thing here is that the nunchuk needs 3.3v, so we don't have to use any logic level converter, just direct wiring.
laurentppol
@laurentppol
Mar 21 2016 14:36
got DEV compiled and compiled app agaiinst
with 2.1.1 &soft timers system responds leasy not mimic Arduino Nano (same code)
laurentppol
@laurentppol
Mar 21 2016 14:45
@alon24 PI is Linux (my system) big overhead,
for AVR even Arduino is overkill
and even WORSE
Atmel doesn't support AVR-GCC guys...
laurentppol
@laurentppol
Mar 21 2016 14:51
but they USE AVR-GCC in their Studio
some king of suicice
will guus
alon24
@alon24
Mar 21 2016 14:56
the thing i wanted to show with the article ws that the nunchick is supposed to be 3.3v logic
laurentppol
@laurentppol
Mar 21 2016 14:56
guys of AVR-GCC work for NOTHING indefiniti vely??
donn't think
robotiko
@robotiko
Mar 21 2016 15:29
@alon24 the guy in the link you posted.. is using nodemcu .. with visuduino
so IF DEVICE IS EXACTLY THE SAME should work too
tested with espduino?
tested on same pins?
alon24
@alon24
Mar 21 2016 15:38
Same device, will test on same pins
hreintke
@hreintke
Mar 21 2016 16:45
@alon24 :
Reproduced similar behavior in my dev environment. No obvious reason.
Will need to investigate further.
alon24
@alon24
Mar 21 2016 16:59
@hreintke cool, then I am nor crazy
Rohit Gupta
@IndianTinker
Mar 21 2016 17:51
Hi,
I was able to finally build it. But when flashing blinky i get the following thing on the UART
no MTNL found, reconnect after 1s
reconnect
MTNL was the wifi name
but blink should blink LEDs without Wifi
alon24
@alon24
Mar 21 2016 17:59
@hreintke if u r looking at my code, and running it, there is another issue, say I connect chrome to esp, and let it run, in theory it should never stop updating
Because I have keep alive, but after 5 mins, esp closes the connection on it own, closes the websocket
Do not know why
Rohit Gupta
@IndianTinker
Mar 21 2016 18:11
@all When i do sudo make flash in the Basic_Blink directory
i get this all the time:

sudo make flash
C+ app/application.cpp
AR out/build/app_app.a
LD out/build/app.out

Memory / Section info:


out/build/app.out: file format elf32-xtensa-le

Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000375 3ffe8000 3ffe8000 000000e0 24
CONTENTS, ALLOC, LOAD, DATA
1 .rodata 000002c8 3ffe8378 3ffe8378 00000458 2
3
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00006b88 3ffe8640 3ffe8640 00000720 24
ALLOC
3 .irom0.text 0002dc9c 40209000 40209000 00005d80 2
4
CONTENTS, ALLOC, LOAD, READONLY, CODE
4 .text 0000565b 40100000 40100000 00000720 2**2

              CONTENTS, ALLOC, LOAD, READONLY, CODE

Generating image...

Generate firmware images successully in folder out/firmware.
Done

Generating spiffs_bin

Checking for spiffs files
No files found in ./files.
Creating empty out/firmware/spiff_rom.bin
Creating rom 'out/firmware/spiff_rom.bin' of size 0x30000 (196608) bytes.
Creating empty filesystem.
out/firmware/spiff_rom.bin---------->0x38000
Killing Terminal to free /dev/ttyUSB0
make: * [flash] Killed
/opt/esp-open-sdk/esptool/esptool.py -p /dev/ttyUSB0 -b 115200 write_flash -ff 40m -fm qio -fs 4m 0x00000 out/firmware/0x00000.bin 0x09000 out/firmware/0x09000.bin 0x38000 out/firmware/spiff_rom.bin
Connecting...

A fatal error occurred: Failed to connect to ESP8266
make: [flash] Error 2
asus@asus-X450CA:~/esp8266/sming/Sming/samples/Basic_Blink$ sudo make flash
Killing Terminal to free /dev/ttyUSB0
make:
[flash] Killed
/opt/esp-open-sdk/esptool/esptool.py -p /dev/ttyUSB0 -b 115200 write_flash -ff 40m -fm qio -fs 4m 0x00000 out/firmware/0x00000.bin 0x09000 out/firmware/0x09000.bin 0x38000 out/firmware/spiff_rom.bin
Connecting...
Erasing flash...
Took 0.34s to erase flash block
Wrote 24576 bytes at 0x00000000 in 2.4 seconds (81.9 kbit/s)...
Erasing flash...
Took 1.19s to erase flash block
Wrote 188416 bytes at 0x00009000 in 18.4 seconds (81.7 kbit/s)...
Erasing flash...
Took 1.11s to erase flash block
Wrote 196608 bytes at 0x00038000 in 18.6 seconds (84.6 kbit/s)...

Leaving...
python -m serial.tools.miniterm /dev/ttyUSB0 115200
--- Miniterm on /dev/ttyUSB0: 115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
scandone
no MTNL found, reconnect after 1s
reconnect
f 0, scandone
no MTNL found, reconnect after 1s
reconnect
f -180, scandone
no MTNL found, reconnect after 1s
reconnect
f r0, scandone

exit
Can this be used in sming?
robotiko
@robotiko
Mar 21 2016 18:43
I think it is already working
alon24
@alon24
Mar 21 2016 18:44
How fast can u'r nodemcu flash
robotiko
@robotiko
Mar 21 2016 18:44
921600 :D
alon24
@alon24
Mar 21 2016 18:44
No, I mean with new flasher
I use 921600 too now, they say this can go to 1.5-4M
Speed
robotiko
@robotiko
Mar 21 2016 18:45
ok .. so not such a big deal
right?
WHAT IS REALLY COOL is the "writing and only send the blocks that differ"
alon24
@alon24
Mar 21 2016 18:47
2-3 tomes faster
No it does not do it in cli
robotiko
@robotiko
Mar 21 2016 18:47
it also has some boot logic.. as I understand
alon24
@alon24
Mar 21 2016 18:54
Hey, so try it..
hreintke
@hreintke
Mar 21 2016 19:03
@alon24 :
I am not using your application for debugging. I updated the CommandProcessing_Debug example.
Always try to get a problem shown in a small program.
alon24
@alon24
Mar 21 2016 19:04
Np, and thanks, I try to pinpoint o my end too
hreintke
@hreintke
Mar 21 2016 19:16

OK, I already see the issue when having one websocket connection and doing the

void updateInitAllClients() {
    WebSocketsList &clients = server.getActiveWebSockets();
//    debugf("server has %i websocket clients", clients.size());
    for (int i = 0; i < clients.count(); i++) {
        clients[i].sendString("This is the reply from command");
    }
}

In the processCommands(...)

alon24
@alon24
Mar 21 2016 19:18
Cool
Fernando Vilmar Palha
@fvpalha
Mar 21 2016 19:53
Hi guys. Where I find a project with FOTA and SPIFFS ?
Alexander V. Ribchansky
@avr39-ripe
Mar 21 2016 19:56
@fvpalha Sming/samples/Basic_rBoot
Fernando Vilmar Palha
@fvpalha
Mar 21 2016 19:57
Thank you @avr39-ripe
Reinis Veips
@festlv
Mar 21 2016 20:55
hi everyone. I think I've found a bug when sending a lot of data to TcpClient- malloc/realloc return values are not checked in MemoryDataStream::write (https://github.com/SmingHub/Sming/blob/develop/Sming/SmingCore/DataSourceStream.cpp#L39)
of course, I might be missing something, but I've traced crashes of my application to those two lines (realloc mainly, because I had a single persistent TCP connection and tried to send tens of KiB/s of data through it)
Reinis Veips
@festlv
Mar 21 2016 21:38
hmm, it doesn't seem to be the only reason though, still getting crashes but at higher speeds
where do debug messages like these come from: "E:M 5192"?
Reinis Veips
@festlv
Mar 21 2016 22:04
sent a pull request for the problems I found: SmingHub/Sming#661
hreintke
@hreintke
Mar 21 2016 22:40
@festlv : See my remarks in the PR