Giter VIP home page Giter VIP logo

Comments (23)

pkempe avatar pkempe commented on September 23, 2024

Maybe of interest, there was a disconnect two hours before the above issue, but it seems to have been handled properly:

2014-05-05 16:57:35,810 DEBUG: Sending: b'28:3f88f96199cb0086ba5445b2d0c2bebb8f3e6ef278:B:SensorEventh8:protocol8:mandolyn9:sensor_idiEs5:model13:temperaturehumidityslh4:typei2s6:lastUpi5367A6DFs5:value2:36ss'
2014-05-05 16:57:35,823 DEBUG: Received: b'28:4affb3503776765605b46c3f622c8f5d85e04cfaC:A:disconnect'
2014-05-05 16:57:35,824 ERROR: Communication error: Disconnected by server
Traceback (most recent call last):
  File "/usr/local/bin/tellive_core_connector", line 293, in <module>
    main(config[section])
  File "/usr/local/bin/tellive_core_connector", line 238, in main
    raise RuntimeError("Disconnected by server")
RuntimeError: Disconnected by server
2014-05-05 16:57:35,824 INFO: Reconnecting in 108 seconds
2014-05-05 16:59:24,022 DEBUG: Fetching server list from api.telldus.com:443
2014-05-05 16:59:25,352 DEBUG: Found 10 available servers
2014-05-05 16:59:25,352 DEBUG: Connecting to gaby.telldus.com:45000
2014-05-05 16:59:25,427 INFO: Connected to gaby.telldus.com:45000
2014-05-05 16:59:25,433 DEBUG: Sending: b'28:69b2dfce750c51ab1e35f013f08aaa4fd6e8e7ebAC:8:Registerh4:uuid24:d4607341-2e15-4e35-8e00-89342da0582a3:key20:THETECHET2STUSWAGACRUWEFU5EWUW5W4:hash4:sha1sh8:protocoli2s2:os6:macosxA:os-version6:10.9.27:version5:0.4.2s'
2014-05-05 16:59:25,555 DEBUG: Received: b'28:92eec3e51dd81147f5ffe28734f1696f912f08cf26:A:Registeredh10:supportedMethodsi3D7ss'
2014-05-05 16:59:25,555 DEBUG: Client is registered, supported methods: 0x3d7 -> 0x3d7
2014-05-05 16:59:25,559 DEBUG: Sending: b'28:4bd98fadce7fc5073e4ddb9c4ec76c7c8705785d8F:D:DevicesReportlh7:methodsi3s5:statei2sA:stateValue1:02:idi3s4:name9:Brytare 1sh7:methodsi3s5:statei2sA:stateValue1:02:idi2s4:name9:Brytare 2ss'
2014-05-05 16:59:25,565 DEBUG: Sending: b'28:cdd01219ef425fa2125f2f9e6757bd28a479619a341:D:SensorsReportllh8:protocol8:mandolyn4:name9:Krypgrund9:sensor_idiDs5:model13:temperaturehumidityslh4:typei1s6:lastUpi53669DFBs5:value3:8.9sh4:typei2s6:lastUpi53669DFBs5:value2:65ssslh8:protocol8:mandolyn4:nameA:Vardagsrum9:sensor_idiCs5:model13:temperaturehumidityslh4:typei1s6:lastUpi5367A740s5:value4:21.9sh4:typei2s6:lastUpi5367A740s5:value2:23ssslh8:protocol8:mandolyn4:name5:Altan9:sensor_idiEs5:model13:temperaturehumidityslh4:typei1s6:lastUpi5367A71Bs5:value3:9.9sh4:typei2s6:lastUpi5367A71Bs5:value2:36ssslh8:protocol8:mandolyn4:name6:Sovrum9:sensor_idiBs5:model13:temperaturehumidityslh4:typei1s6:lastUpi5367A737s5:value4:20.7sh4:typei2s6:lastUpi5367A737s5:value2:25ssslh8:protocol6:oregon4:nameA:Ovanvaning9:sensor_idi35s5:model4:1A2Dslh4:typei1s6:lastUpi5367A5F4s5:value4:20.8sh4:typei2s6:lastUpi5367A5F4s5:value2:31ssss'
2014-05-05 16:59:35,656 DEBUG: Sending: b'28:533afa3508789f99271a755c429b474c14713e9e79:B:SensorEventh8:protocol8:mandolyn9:sensor_idiEs5:model13:temperaturehumidityslh4:typei1s6:lastUpi5367A757s5:value3:9.9ss'

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

Also, the sensors I use have reported readings as usual during the period, they're just not picked up by tellive-py.

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Could you run strace -p <pid of tellive process> and let it run for a while and post the output here?

Also, if you could run tellcore_events --sensor (from tellcore-py) at the same time that would be good.

This way we might be able to see if events from telldus are coming as they should.

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

strace is not available on Mac OS X, but google says that dtruss produces equivalent output, you tell me if it's what you asked for. Launched them simultaneously, output is from about 1 minute.

sudo dtruss -p 3198
SYSCALL(args)        = return
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
poll(0x7FFF5BFFEE10, 0x1, 0x1388)        = 1 0
read(0x9, "\027\003\001\0", 0x5)         = 5 0
read(0x9, "\005\341\f\350{8\230\254\034,a\\\032\2304HDd\027\035\353V\325\301`o\320\263\304z 8\0", 0x20)      = 32 0
read(0x9, "\027\003\001\0", 0x5)         = 5 0
read(0x9, "\002aW\313\374\307\347[r3\v\223V\220\221\020C?\310\346\206\336D\350r\303N|\311\366a(\202s1!Ac\366\247(\340a\002/\225\005\250\243\306f\222R\267S\246K\271\206\257\242;M\307?\252o\212\254\235\020v\353\202\250\023\234\033\226\301\0", 0x50)       = 80 0
write(0x2, "2014-05-07 21:38:09,658 DEBUG: Received: b'28:59fc427083682822da64c0e2cd2e879d1483d2566:4:pong'\n\0", 0x60)      = 96 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 71 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 110 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 73 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 109 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 143 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 109 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 143 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 110 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 1 0
recvfrom(0xC, 0x101ED39E0, 0x1FF)        = 144 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
select(0xD, 0x1004F3B78, 0x0, 0x0, 0x101ED3BE8)      = 0 0
tellcore_events --sensor
[SENSOR] 12 [mandolyn/temperaturehumidity] (1) @ 1399491490 <- 21.4
[SENSOR] 12 [mandolyn/temperaturehumidity] (2) @ 1399491490 <- 31
[SENSOR] 14 [mandolyn/temperaturehumidity] (1) @ 1399491516 <- 6.4
[SENSOR] 14 [mandolyn/temperaturehumidity] (2) @ 1399491516 <- 76
[SENSOR] 14 [mandolyn/temperaturehumidity] (1) @ 1399491516 <- 6.4
[SENSOR] 14 [mandolyn/temperaturehumidity] (2) @ 1399491516 <- 76
[SENSOR] 12 [mandolyn/temperaturehumidity] (1) @ 1399491549 <- 21.3
[SENSOR] 12 [mandolyn/temperaturehumidity] (2) @ 1399491549 <- 31

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Can you in mac os x list the file descriptors that a process has open, to be able to say what 0xC is?

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

Please give me an example of how you'd do that on Linux, if you can. Not
sure what to look for...

7 maj 2014 kl. 21:47 skrev Erik Johansson [email protected]:

Can you in mac os x list the file descriptors that a process has open, to
be able to say what 0xC is?


Reply to this email directly or view it on
GitHubhttps://github.com//issues/3#issuecomment-42474311
.

from tellive-py.

erijo avatar erijo commented on September 23, 2024

lsof -p <pid>, ls -l /proc/<pid>/fd, netstat -anp

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024
sudo lsof -p 3198
COMMAND  PID  USER   FD    TYPE             DEVICE  SIZE/OFF     NODE NAME
Python  3198 media  cwd     DIR                1,2      1394        2 /
Python  3198 media  txt     REG                1,2     25384 33270842 /Library/Frameworks/Python.framework/Versions/3.4/Resources/Python.app/Contents/MacOS/Python
Python  3198 media  txt     REG                1,2   5774760 33270839 /Library/Frameworks/Python.framework/Versions/3.4/Python
Python  3198 media  txt     REG                1,2     59592 33269547 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/binascii.so
Python  3198 media  txt     REG                1,2     36248 33269532 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_random.so
Python  3198 media  txt     REG                1,2    102328 33269540 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_struct.so
Python  3198 media  txt     REG                1,2     48952 33269521 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_hashlib.so
Python  3198 media  txt     REG                1,2     61784 33269561 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/time.so
Python  3198 media  txt     REG                1,2    100448 33269551 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/math.so
Python  3198 media  txt     REG                1,2    176432 33269537 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_socket.so
Python  3198 media  txt     REG                1,2     44376 33269522 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_heapq.so
Python  3198 media  txt     REG                1,2    185592 33269517 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_datetime.so
Python  3198 media  txt     REG                1,2    181904 33269539 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_ssl.so
Python  3198 media  txt     REG                1,2     36864 33269531 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_posixsubprocess.so
Python  3198 media  txt     REG                1,2     66360 33269558 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/select.so
Python  3198 media  txt     REG                1,2    564616 33269555 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/pyexpat.so
Python  3198 media  txt     REG                1,2    284336 33269513 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/_ctypes.so
Python  3198 media  txt     REG                1,2   1544776 33269562 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/unicodedata.so
Python  3198 media  txt     REG                1,2    116816 33269545 /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/array.so
Python  3198 media  txt     REG                1,2    396828 26889208 /Library/Frameworks/TelldusCore.framework/Versions/2.1.2/TelldusCore
Python  3198 media  txt     REG                1,2    600832 31671236 /usr/lib/dyld
Python  3198 media  txt     REG                1,2 343698654 33259065 /private/var/db/dyld/dyld_shared_cache_x86_64
Python  3198 media    0r    CHR                3,2       0t0      306 /dev/null
Python  3198 media    1w    REG                1,2         0 33277872 /Users/media/tellive.log
Python  3198 media    2w    REG                1,2  37830779 33277873 /Users/media/tellive-errors.log
Python  3198 media    3r    CHR               13,1      0t32      584 /dev/urandom
Python  3198 media    5u   unix 0x34ad279863bcdfc5       0t0          ->0x34ad279863bcc5fd
Python  3198 media    6u  systm                          0t0          
Python  3198 media    9u   IPv4 0x34ad279873858b35       0t0      TCP 192.168.1.100:56436->gaby.machine.telldus.com:45000 (ESTABLISHED)
Python  3198 media   10u   unix 0x34ad27986251ea45       0t0          ->0x34ad27986251ff5d
Python  3198 media   11u   unix 0x34ad27986251ff5d       0t0          ->0x34ad27986251ea45
Python  3198 media   12u   unix 0x34ad2798682633ad       0t0          ->0x34ad27986252072d

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Can you do lsof on the telldusd process as well? I'm assuming that FD 12 is a connection to that process but I'd like to verify it.

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

I suppose telldusd means TelldusService on Mac OS X:

sudo lsof -p 66
COMMAND   PID USER   FD     TYPE             DEVICE   SIZE/OFF     NODE NAME
TelldusSe  66 root  cwd      DIR                1,2       1394        2 /
TelldusSe  66 root  txt      REG                1,2    1384616 26889214 /Library/Telldus/TelldusService
TelldusSe  66 root  txt      REG                1,2     527036 26889213 /Library/Telldus/libftd2xx.1.2.2.dylib
TelldusSe  66 root  txt      REG                1,2     180352 31672174 /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle/Contents/MacOS/IOUSBLib
TelldusSe  66 root  txt      REG                1,2     600832 31671236 /usr/lib/dyld
TelldusSe  66 root  txt      REG                1,2  343698654 33259065 /private/var/db/dyld/dyld_shared_cache_x86_64
TelldusSe  66 root    0r     CHR                3,2        0t0      306 /dev/null
TelldusSe  66 root    1w     CHR                3,2  0t1794372      306 /dev/null
TelldusSe  66 root    2w     CHR                3,2 0t51869209      306 /dev/null
TelldusSe  66 root    3u  KQUEUE                                        count=1, state=0x2
TelldusSe  66 root    4     PIPE 0x34ad27985f35b215      16384          ->0x34ad27985f35b165
TelldusSe  66 root    5     PIPE 0x34ad27985f35b165      16384          ->0x34ad27985f35b215
TelldusSe  66 root    6u    unix 0x34ad27985f28bd05        0t0          /tmp/TelldusEvents
TelldusSe  66 root    7     PIPE 0x34ad27985f35b0b5      16384          ->0x34ad27985f35b005
TelldusSe  66 root    8     PIPE 0x34ad27985f35b005      16384          ->0x34ad27985f35b0b5
TelldusSe  66 root    9u    unix 0x34ad27985f1fca45        0t0          /tmp/TelldusClient
TelldusSe  66 root   11u    unix 0x34ad27986252072d        0t0          /tmp/TelldusEvents

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Ok, so it looks like events are getting to tellive-py. Now the question is where do they stop...

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Could you please run dtruss again, this again with the the flags -f -l -a in addition to -p as before?

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

I have since restarted tellive_core_connector, are you still interested?

from tellive-py.

erijo avatar erijo commented on September 23, 2024

No. We'll probably have to wait and see if it happens again and run dtruss with the flags then instead.

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

It has reappeared, this time only about 1,5 days after system reboot.

System boot time was 2014-05-18 22:06.

2014-05-20 08:52:29,815 DEBUG: Sending: b'28:585d15cd6607f6c783aa21121ada0d17133471017A:B:SensorEventh9:sensor_idiDs8:protocol8:mandolyn5:model13:temperaturehumidityslh5:value4:10.66:lastUpi537AFBADs4:typei1sss'
2014-05-20 08:52:29,816 DEBUG: Sending: b'28:666310d77212917e458b5c06194e0619ef4048e778:B:SensorEventh9:sensor_idiDs8:protocol8:mandolyn5:model13:temperaturehumidityslh5:value2:916:lastUpi537AFBADs4:typei2sss'
2014-05-20 08:52:29,975 DEBUG: Sending: b'28:585d15cd6607f6c783aa21121ada0d17133471017A:B:SensorEventh9:sensor_idiDs8:protocol8:mandolyn5:model13:temperaturehumidityslh5:value4:10.66:lastUpi537AFBADs4:typei1sss'
2014-05-20 08:52:29,977 DEBUG: Sending: b'28:666310d77212917e458b5c06194e0619ef4048e778:B:SensorEventh9:sensor_idiDs8:protocol8:mandolyn5:model13:temperaturehumidityslh5:value2:916:lastUpi537AFBADs4:typei2sss'
2014-05-20 08:52:32,440 DEBUG: Sending: b'28:7e7c691ff9e15f0794331fa0f601e82ab00a7f097A:B:SensorEventh9:sensor_idiEs8:protocol8:mandolyn5:model13:temperaturehumidityslh5:value4:13.46:lastUpi537AFBB0s4:typei1sss'
2014-05-20 08:53:36,482 DEBUG: Received: b'28:59fc427083682822da64c0e2cd2e879d1483d2566:4:pong'
2014-05-20 08:54:32,578 DEBUG: Sending: b'28:6129697c4bb6179e8696877d36297326634db7ef6:4:Ping'
2014-05-20 08:55:37,054 DEBUG: Received: b'28:59fc427083682822da64c0e2cd2e879d1483d2566:4:pong'
2014-05-20 08:56:32,714 DEBUG: Sending: b'28:6129697c4bb6179e8696877d36297326634db7ef6:4:Ping'

Did rerun tellcore_events -sensor simultaneously with dtruss -p <pid> -f -l -a as requested (output is from running appr. 1 minute):

tellcore_events --sensor
[SENSOR] 53 [oregon/1A2D] (1) @ 1400693982 <- 23.6
[SENSOR] 53 [oregon/1A2D] (2) @ 1400693982 <- 41
[SENSOR] 53 [oregon/1A2D] (1) @ 1400693983 <- 23.6
[SENSOR] 53 [oregon/1A2D] (2) @ 1400693983 <- 41
[SENSOR] 12 [mandolyn/temperaturehumidity] (1) @ 1400693995 <- 25.1
[SENSOR] 12 [mandolyn/temperaturehumidity] (2) @ 1400693995 <- 48
[SENSOR] 53 [oregon/1A2D] (1) @ 1400694021 <- 23.6
[SENSOR] 53 [oregon/1A2D] (2) @ 1400694021 <- 41
[SENSOR] 53 [oregon/1A2D] (1) @ 1400694022 <- 23.6
[SENSOR] 53 [oregon/1A2D] (2) @ 1400694022 <- 41
sudo dtruss -p 273 -f -l -a
    PID/THRD  RELATIVE  ELAPSD    CPU SYSCALL(args)          = return
  273/0xaecd1:   6873011 1148691     28 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873060 1149896     33 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873116 1147126     38 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873169 1146884     30 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873223 1146897     36 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873259 1145907     23 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873312 1133803     37 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873378 1147841     51 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873538     147     12 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 1 0
  273/0xaecd1:   6873549     184      8 recvfrom(0xC, 0x101E109E0, 0x1FF)        = 71 0
  273/0xaecd1:   6873418  917489     22 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 1 0
  273/0xaecd1:   6873438     177     14 recvfrom(0xC, 0x101E109E0, 0x1FF)        = 183 0
  273/0xaecd1:   6873619 1135347     19 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873672 1145010     40 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873731 1136600     44 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873790 1144443     44 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873835 1148363     31 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873898 1135963     48 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873953 1144236     40 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6873985 1146856     20 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874043 1146244     42 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874094 1148186     37 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874127 1150085     20 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874181 1149865     39 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874225 1150007     31 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874265 1149973     27 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874311 1148317     31 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874361 1135741     33 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874420 1147083     43 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874477 1145718     39 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874531 1149552     37 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874579 1143572     33 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874614 1146037     18 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874675 1143794     44 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6874764   85606     19 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 1 0
  273/0xaecd1:   6874780     160     10 recvfrom(0xC, 0x101E109E0, 0x1FF)        = 201 0
  273/0xaecd1:   6874929  207642     21 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 1 0
  273/0xaecd1:   6874943      17      9 recvfrom(0xC, 0x101E109E0, 0x1FF)        = 93 0
  273/0xaecd1:   6874998      14      4 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 1 0
  273/0xaecd1:   6875005       9      5 recvfrom(0xC, 0x101E109E0, 0x1FF)        = 108 0
  273/0xaecd1:   6874731 1148878     40 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6875099 1147019     25 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6875152 1149960     39 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6875207 1149946     37 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0
  273/0xaecd1:   6875253 1149289     33 select(0xD, 0x1004B94F8, 0x0, 0x0, 0x101E10BE8)      = 0 0

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Could you please clone the git repository and checkout the branch debug (git co debug) and run that version. Hopefully the logs will give us some more information (the dtruss logs did not give me enough info unfortunately).

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

Sorry for the extremely long delay. Since your last comment, I have not had any issues, hence the urge to solve the problem has been less apparent. I have now built and installed the debug branch.

FWIW, I get a few error messages when building and installing:

$ python setup.py build
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
  warnings.warn(msg)
running build
running build_py
running build_scripts
$ sudo python setup.py install
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
  warnings.warn(msg)
running install
running build
running build_py
running build_scripts
running install_lib
byte-compiling /Library/Python/2.7/site-packages/tellive/live.py to live.pyc
  File "/Library/Python/2.7/site-packages/tellive/live.py", line 63
    raise AttributeError(name) from None
                                  ^
SyntaxError: invalid syntax

running install_scripts
changing mode of /usr/local/bin/tellive_core_connector to 755
running install_egg_info
Removing /Library/Python/2.7/site-packages/tellive_py-0.4.2-py2.7.egg-info
Writing /Library/Python/2.7/site-packages/tellive_py-0.4.2-py2.7.egg-info

This might be related to the fact that I have both Python 2.7 and 3.x installed on the same machine, which causes a general mess that I can't quite resolve.

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Try running python3 setup.py ... instead of just python.

On 26 August 2014 11:14, pkempe [email protected] wrote:

Sorry for the extremely long delay. Since your last comment, I have not
had any issues, hence the urge to solve the problem has been less apparent.
I have now built and installed the debug branch.

FWIW, I get a few error messages when building and installing:

$ python setup.py build
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running build
running build_py
running build_scripts

$ sudo python setup.py install
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running install
running build
running build_py
running build_scripts
running install_lib
byte-compiling /Library/Python/2.7/site-packages/tellive/live.py to live.pyc
File "/Library/Python/2.7/site-packages/tellive/live.py", line 63
raise AttributeError(name) from None
^
SyntaxError: invalid syntax

running install_scripts
changing mode of /usr/local/bin/tellive_core_connector to 755
running install_egg_info
Removing /Library/Python/2.7/site-packages/tellive_py-0.4.2-py2.7.egg-info
Writing /Library/Python/2.7/site-packages/tellive_py-0.4.2-py2.7.egg-info

This might be related to the fact that I have both Python 2.7 and 3.x
installed on the same machine, which causes a general mess that I can't
quite resolve.


Reply to this email directly or view it on GitHub
#3 (comment).

Erik Johansson
Home Page: http://ejohansson.se/
PGP Key: http://ejohansson.se/erik.asc

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

That removes all warnings except 'Unknown distribution option: 'install_requires'

warnings.warn(msg) ’.

26 aug 2014 kl. 11:35 skrev Erik Johansson [email protected]:

Try running python3 setup.py ... instead of just python.

On 26 August 2014 11:14, pkempe [email protected] wrote:

Sorry for the extremely long delay. Since your last comment, I have not
had any issues, hence the urge to solve the problem has been less apparent.
I have now built and installed the debug branch.

FWIW, I get a few error messages when building and installing:

$ python setup.py build
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running build
running build_py
running build_scripts

$ sudo python setup.py install
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running install
running build
running build_py
running build_scripts
running install_lib
byte-compiling /Library/Python/2.7/site-packages/tellive/live.py to live.pyc
File "/Library/Python/2.7/site-packages/tellive/live.py", line 63
raise AttributeError(name) from None
^
SyntaxError: invalid syntax

running install_scripts
changing mode of /usr/local/bin/tellive_core_connector to 755
running install_egg_info
Removing /Library/Python/2.7/site-packages/tellive_py-0.4.2-py2.7.egg-info
Writing /Library/Python/2.7/site-packages/tellive_py-0.4.2-py2.7.egg-info

This might be related to the fact that I have both Python 2.7 and 3.x
installed on the same machine, which causes a general mess that I can't
quite resolve.


Reply to this email directly or view it on GitHub
#3 (comment).

Erik Johansson
Home Page: http://ejohansson.se/
PGP Key: http://ejohansson.se/erik.asc

Reply to this email directly or view it on GitHub.

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

Finally, a recurrence. At 2014-09-12 17.05 sensor data stopped sending. Extended log as follows:

2014-09-12 17:04:28,019 DEBUG: Sending: b'28:8fafb5c0844a43ec13ae453221d07ce3f7feaef367:B:SensorEventh9:sensor_idiEEs5:model4:1A2D8:protocol6:oregonslh4:typei2s6:lastUpi54130B7Cs5:value2:49ss'
2014-09-12 17:04:36,685 DEBUG: On callback 2
2014-09-12 17:04:36,685 DEBUG: Processing callbacks
2014-09-12 17:04:36,686 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:04:36,686 DEBUG: On callback 2
2014-09-12 17:04:36,687 DEBUG: Sending: b'28:779bfc95be3a2e58b8e8b56af7686b02b93ffe2a7A:B:SensorEventh9:sensor_idiDs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei1s6:lastUpi54130B84s5:value4:15.0ss'
2014-09-12 17:04:36,687 DEBUG: Processing callbacks
2014-09-12 17:04:36,687 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:04:36,688 DEBUG: Sending: b'28:3d6bf004cfd98b329b14e1b25262b0543ba941f378:B:SensorEventh9:sensor_idiDs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei2s6:lastUpi54130B84s5:value2:90ss'
2014-09-12 17:05:07,015 DEBUG: On callback 2
2014-09-12 17:05:07,016 DEBUG: Processing callbacks
2014-09-12 17:05:07,016 DEBUG: On callback 2
2014-09-12 17:05:07,016 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:07,017 DEBUG: Sending: b'28:8f1c1892a36e5e9e78319ed474edd8584b9e55e569:B:SensorEventh9:sensor_idiEEs5:model4:1A2D8:protocol6:oregonslh4:typei1s6:lastUpi54130BA3s5:value4:23.9ss'
2014-09-12 17:05:07,017 DEBUG: Processing callbacks
2014-09-12 17:05:07,017 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:07,018 DEBUG: Sending: b'28:4b009295dfc3395b28992892fb8ec36c3b8c1b6267:B:SensorEventh9:sensor_idiEEs5:model4:1A2D8:protocol6:oregonslh4:typei2s6:lastUpi54130BA3s5:value2:49ss'
2014-09-12 17:05:17,030 DEBUG: On callback 2
2014-09-12 17:05:17,030 DEBUG: Processing callbacks
2014-09-12 17:05:17,030 DEBUG: On callback 2
2014-09-12 17:05:17,031 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:17,032 DEBUG: Sending: b'28:9c124d4968654e701684875a8d30fe62ca29c3fe7A:B:SensorEventh9:sensor_idiEs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei1s6:lastUpi54130BADs5:value4:19.4ss'
2014-09-12 17:05:17,032 DEBUG: Processing callbacks
2014-09-12 17:05:17,032 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:17,033 DEBUG: Sending: b'28:aa45f8acfae9a2e3d6cca66e5d77ffff139bba8c78:B:SensorEventh9:sensor_idiEs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei2s6:lastUpi54130BADs5:value2:73ss'
2014-09-12 17:05:17,173 DEBUG: On callback 2
2014-09-12 17:05:17,173 DEBUG: Processing callbacks
2014-09-12 17:05:17,174 DEBUG: On callback 2
2014-09-12 17:05:17,174 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:17,175 DEBUG: Sending: b'28:9c124d4968654e701684875a8d30fe62ca29c3fe7A:B:SensorEventh9:sensor_idiEs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei1s6:lastUpi54130BADs5:value4:19.4ss'
2014-09-12 17:05:17,175 DEBUG: Processing callbacks
2014-09-12 17:05:17,176 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:17,177 DEBUG: Sending: b'28:aa45f8acfae9a2e3d6cca66e5d77ffff139bba8c78:B:SensorEventh9:sensor_idiEs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei2s6:lastUpi54130BADs5:value2:73ss'
2014-09-12 17:05:20,064 DEBUG: Received: b'28:59fc427083682822da64c0e2cd2e879d1483d2566:4:pong'
2014-09-12 17:05:54,637 DEBUG: On callback 2
2014-09-12 17:05:54,638 DEBUG: Processing callbacks
2014-09-12 17:05:54,638 DEBUG: On callback 2
2014-09-12 17:05:54,638 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:54,639 DEBUG: Sending: b'28:6a92d581d27decaa2128f11d4b30588b10a79a437A:B:SensorEventh9:sensor_idiBs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei1s6:lastUpi54130BD2s5:value4:22.2ss'
2014-09-12 17:05:54,640 DEBUG: Processing callbacks
2014-09-12 17:05:54,640 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:05:54,640 DEBUG: Sending: b'28:25b192494fac2a1f9dc530bc3188ee626ff7745978:B:SensorEventh9:sensor_idiBs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei2s6:lastUpi54130BD2s5:value2:57ss'
2014-09-12 17:06:36,694 DEBUG: On callback 2
2014-09-12 17:06:36,694 DEBUG: Processing callbacks
2014-09-12 17:06:36,695 DEBUG: On sensor event for sensor (callback 2)
2014-09-12 17:06:36,696 DEBUG: Sending: b'28:5ddfccdba3d011d5f7c94d17d3fb01ddcb4b78e67A:B:SensorEventh9:sensor_idiDs5:model13:temperaturehumidity8:protocol8:mandolynslh4:typei1s6:lastUpi54130BFCs5:value4:15.0ss'
2014-09-12 17:07:21,334 DEBUG: Received: b'28:59fc427083682822da64c0e2cd2e879d1483d2566:4:pong'
2014-09-12 17:08:36,843 DEBUG: Sending: b'28:6129697c4bb6179e8696877d36297326634db7ef6:4:Ping'
2014-09-12 17:09:21,923 DEBUG: Received: b'28:59fc427083682822da64c0e2cd2e879d1483d2566:4:pong'
2014-09-12 17:10:36,992 DEBUG: Sending: b'28:6129697c4bb6179e8696877d36297326634db7ef6:4:Ping'
2014-09-12 17:11:22,132 DEBUG: Received: b'28:59fc427083682822da64c0e2cd2e879d1483d2566:4:pong'

which is then followed by infinite ping/pongs.

from tellive-py.

erijo avatar erijo commented on September 23, 2024

It is strange this. From what I can see in the log, up until it stops working the callbacks come in pair: one for temperature and one for humidity. But when it stop working you only get the temperature reading.

Would you be willing to build and test a new TelldusCore library if I provided one with extra debugging?

from tellive-py.

pkempe avatar pkempe commented on September 23, 2024

Sure, I will do that.

It occurred to me that maybe this is caused by a buggy sensor that transmit improper data for some reason. There is spotty coverage for one of them, maybe that's interfering?
I don't think I have mentioned my hardware setup, I've got four sensors of this type: http://www.clasohlson.com/se/Temperaturgivare-hygrometer/36-1797, and one of this type: http://www.clasohlson.com/se/Extra-temperaturgivare-hygrometer-THGN132N/36-4288.

from tellive-py.

erijo avatar erijo commented on September 23, 2024

Please clone erijo/telldus and check out and build the callback-debug branch. Unfortunately I don't know exactly how to build it on mac, so I can't help you much there. But I would guess that it is possible to install the library to some temporary location and then edit library.py in tellcore-py and set LIBRARY_NAME to point to that one. It is only the client library that I have changed (i.e. TelldusCore).

from tellive-py.

Related Issues (7)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.