20151214_jeffrey - silenceuncrio/diary GitHub Wiki

Index

  • 0950 ๅนซๅฟ™ IoS ๅฐ็ต„ๆธฌ้‡ BLE Beacon ่ท้›ข
  • 1015 review diary and write index
  • 1040 write engineering notebook
  • 1100 mail from Jammy - Re: [Share]issues for openHAB gateway solution.
  • 1300 survey ๅฆ‚ไฝ•ไพ†้€ฒ่กŒ ๅฐ openWrt ็š„ uhttpd ็š„ experiments
  • 1335 ๅœจ JS9331 ๅฏซ CGI
    • include cgilib via menuconfig and make
  • 1515 ๅˆฉ็”จ web ๅˆทๅ†™ๆ–ฐ็š„ๅ›บไปถ
  • 1530 ๅฏซ CGI - pritf
  • 1610 ๅฏซ CGI - #include <cgi.h>
  • 1740 ๅฏซ CGI - issue: ไธ่ฆๅ‘ผๅซ cgiFree()
  • 1750 ่ทŸ Jammy ่Šไธ€ไธ‹่งฃ้–‹ๆฝ›ๅœจๅฟƒ็ต

0950

ไธ€ๆ—ฉไพ†ๅ…ˆๅนซๅฟ™ IoS ๅฐ็ต„ๆธฌ้‡ BLE Beacon ่ท้›ข
็›ฎๅ‰ๅฎ˜ๆ–น็š„ๅฐๆฟๅญๆœ€้ ๅชๅˆฐ 20 ๅ…ฌๅฐบๅทฆๅณ

1015

review diary and write index

1040

write engineering notebook

1100

Re: [Share]issues for openHAB gateway solution.

Jammy ๆ–ผ 2015/12/13 ไธŠๅˆ 03:07 ๅฏซ้“:

Dear Jeffrey,

ๆˆ‘ๆƒณๅ›ž้ฅ‹็š„ๆ˜ฏ๏ผŒๅœจๆˆ‘้€ฒๆ˜‡้ ปๅ‰๏ผŒPioneerๆœ‰ๅซๆˆ‘surveyไธ€ไธ‹smart gatewayใ€‚
ๆ‰€ไปฅๆˆ‘็•ถๆ™‚ๆœ‰ๆ‰พๅไพ†็ฏ‡็š„paperไพ†็œ‹(IEEE explorerไธŠ็š„)๏ผŒ
ๅฐ่ฑกไธญ้€™ไบ›ๅ”ๅฎš้ƒฝๆœ‰็œ‹ๅˆฐๆœ‰ไบบ็”จ(smart gateway็š„้€š่จŠๆ–นๅผไนŸๆ˜ฏๅ„ๆ–นไบ‚่ˆž....)
ๆˆ‘็ฆฎๆ‹œไธ€ๅฏไปฅ่ฉฆ่‘—ๆŠŠ้€™ไบ›paperๆ‰พๅ‡บไพ†(ๆ‡‰่ฉฒๅœจๅ…ฌๅธ)

ๆˆ‘ไธๅปบ่ญฐๅœจ้€™ๅ€‹ๆ™‚ๅ€™ๅš้€™ๆจฃ็š„survey๏ผŒ
ๆˆ‘่ช็‚บ้€™ๆ™‚ๅ€™ๅทฒ็ถ“ๆ™šไบ†๏ผŒ
ๆ•ดๅ€‹็ณป็ตฑๆžถๆง‹ๅทฒ็ถ“ๅฎš็พฉ้ŽๅŠ๏ผŒ
่€Œไธ”ๅฐฑ็ฎ—ๆ™‚ๅ…‰ๅ€’่ฝ‰..้‡ไพ†ไธ€ๆฌก๏ผŒๆˆ‘ไนŸไธ่ช็‚บๆฅญ็•Œๆ‡‰่ฉฒๅš้€™็จฎๅญธๆ กๆ‰ๅญ˜ๅœจ็š„็ ”็ฉถ๏ผŒ
ๅ…ถๅฏฆ้€™ๅฅๆ˜ฏ้•ๅฟƒไน‹่ซ–...ไฝ†่‡ณๅฐ‘ๆˆ‘ๅ€‘้€™็จฎ่ฆๆจก็š„ๅ…ฌๅธๆ˜ฏ้€™ๆจฃใ€‚

ๆณไธ”ๅ„ๅ”่ญฐ็š„ๆฏ”่ผƒๆ˜ฏไธ€ๅ€‹ๅพˆๅคง็š„็ ”็ฉถ้กŒ็›ฎ๏ผŒ
(ๆ›ดไธๆไน‹ๅพŒๅ”่ญฐๆ”น็‰ˆๅพŒ็š„ๅ‹่ฒ ็ตๆžœ)

ๆˆ‘่ช็‚บๆˆ‘ๅ€‘็พๅœจๆ‡‰่ฉฒๅš็š„

  1. ๆญไธ€ๅ€‹ๆœ€็ฐกๅ–ฎ็š„RESTful benchmarkๆฉŸๅˆถ๏ผŒๅฎš็พฉๆˆ‘ๅ€‘็š„็ณป็ตฑไธ€ๆฌกๅฏไปฅๅญ˜ๅœจๅคšๅฐ‘่จŠๆฏๆต้‡(ๅฎš็พฉ็ฉบ้–“ไธญ็š„sensor/reactor or control box)ใ€‚

  2. ๅฆ‚ๆžœuhttpd็š„ๆธฌ่ฉฆไธ้œ€่ฆ้กๅค–็š„effort๏ผŒNginx้œ€่ฆ๏ผŒ้‚ฃๆšซๆ™‚ๅฟฝ็•ฅNginxใ€‚

  3. ๅฆ‚ๆžœhttp RESTfulๅฎŒๅ…จไธๆ•ทไฝฟ็”จ๏ผŒไนŸๅฐฑๆ˜ฏ่ชชcontrol centerๅฏๆŽฅๅ—sensor/reactorๆ•ธ้‡้ ๅฐๆ–ผsmart room/smart officeไฝฟ็”จ๏ผŒ้€™ๅ€‹ๆ™‚ๅ€™ๆˆ‘ๅ€‘ๆ‰ๅฏไปฅ่ชๅฎšๆˆ‘ๅ€‘็š„่จญ่จˆๆ˜ฏ้•่ƒŒๆˆ‘ๅ€‘ๆœ€ๆ—ฉ็š„่ฆๆ ผๅฎš็พฉ)๏ผŒๆ‰่ฉฒๅœจ้€™ไบ›็ ”็ฉถไธญ็š„ๅ”่ญฐๅฐ‹ๆ‰พๅˆ้ฉ็š„๏ผŒๆˆ–ๆ˜ฏ่‡ช่กŒๅฎš็พฉ(http+REST/http+self-defined/???+???/...etc)ใ€‚

  4. ๆŠŠๅ”่ญฐๆฏ”่ผƒ้€™ๅ›žไบ‹ๆ”พๅœจๅฟƒ่ฃก๏ผŒๅณไฝฟ็›ฎๅ‰ไธๆ˜Žๆœ—๏ผŒๆœ‰ไธ€ๅคฉไป–ๅ€‘ไนŸๆœƒๅˆ†ๅ‡บๅ‹่ฒ ๏ผŒๅˆฐๆ™‚ไธ่ƒฝไธ็Ÿฅ้“ๆœ‰้€™ๅ€‹ๆฑ่ฅฟใ€‚

Best Regards,
Jammy
ๅœจ Sat, 12 Dec 2015 11:27:32 +0800, jeffrey [email protected]ๅฏซ้“:

Jammy ้€™ๅฐไฟกๅชๅฏ„็ตฆๆˆ‘่€Œๅทฒ

ๅ‰›ๅ‰›ๆ‰็œ‹ๅˆฐ

้›ฃๆ€ชไป–ๆ—ฉไธŠไพ†ๅ•ๆˆ‘ๅ•ฅ่ซ–ๆ–‡็š„ไบ‹
้‚„ๆœ‰ๆ€Ž้บผๆธฌๅฃ“ๅŠ›ๆธฌ่ฉฆ็š„ไบ‹ๆƒ…

ๆˆ‘็•ถๆ™‚้‚„ๆžไธๆธ…ๆฅšๆ€Ž้บผๅ›žไบ‹

1300

ๅ…ˆ survey ไธ€ไธ‹ๅฆ‚ไฝ•ไพ†้€ฒ่กŒ ๅฐ openWrt ็š„ uhttpd ็š„ experiments

่ ปๅฟซๅฐฑๆœ‰ไบ†็›ฎๆจ™, ๅ› ็‚บๅคง้ƒจๅˆ†็ถฒๅ‹้ƒฝๆŽจ่–ฆ้€™ไธ€ๅฅ— Apache JMeterโ„ข

1335

ไธ‹่ผ‰ไบ† JMeter ไน‹ๅพŒ็™ผ็พ่‡ชๅทฑๅพˆๅคšๆ“”ๅฟƒ้ƒฝๆ˜ฏๅคš้ค˜็š„
ๅทฒ็ถ“ๅฏไปฅ็›ดๆŽฅๅœจ JS9331 ๅฏซ CGI ไพ†ๅšๆธฌ่ฉฆไบ†

็›ดๆŽฅไพ†ๅฏซ event.cgi ๅฅฝไบ†

ๆˆ‘้œ€่ฆ็ขบ่ช JS9331 ไธŠๆœ‰ cgi ๅ’Œ json ้€™ๅ…ฉๅ€‹ library
Coji ไธๅœจไบ†...
่‡ชๅทฑไพ†ๅง

ไธ€ๆญฅไธ€ๆญฅ

ๅœจ่‡ชๅทฑ้›ป่…ฆไธŠๆ–ฐๅขžๅ…ฉๅ€‹่ณ‡ๆ–™ๅคพ

  • C:\Users\JEFFREY\Desktop\si_projects\js9331_event_cgi
  • D:\ubuntu_share\js9331_event_cgi

ๆ–ฐๅขž Source Insight project

  • project name: js9331_event_cgi
  • project data files: C:\Users\JEFFREY\Desktop\si_projects\js9331_event_cgi
  • project source directory: D:\ubuntu_share\js9331_event_cgi

ๅœจๆˆ‘็š„ JS9331 ้–‹็™ผ็’ฐๅขƒ Ubuntu ไธญ็š„ openwrt ็›ฎ้Œ„ไธ‹

jeffrey@jeffrey-virtual-machine:~/openwrt$ make menuconfig

Library ้ธๅ–ฎๆŒ‰ Enter ้€ฒๅ…ฅ
ๅพ€ไธ‹ๆ‹‰ๆœƒ็œ‹ๅˆฐ cgilib
ไธ้Žๅฏฆๅœจไธ็Ÿฅ้“้ธ built-in ๆˆ– module

.config - OpenWrt Configuration
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Libraries โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚  Arrow keys navigate the menu.  <Enter> selects submenus --->.          โ”‚  
  โ”‚  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, โ”‚  
  โ”‚  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> โ”‚  
  โ”‚  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       โ”‚  
  โ”‚ โ”Œโ”€โ”€โ”€โ”€^(-)โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚  
  โ”‚ โ”‚        ...                                                          โ”‚ โ”‚  
  โ”‚ โ”‚    < > ccid........................... Generic USB CCID smart card rโ”‚ โ”‚  
  โ”‚ โ”‚    < > cgilib................................................ Simpleโ”‚ โ”‚  
  โ”‚ โ”‚    < > check....................................... Unit testing fraโ”‚ โ”‚  
  โ”‚ โ”‚        ...                                                          โ”‚ โ”‚  
  โ”‚ โ””โ”€โ”€โ”€โ”€v(+)โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚  
  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค  
  โ”‚        <Select>    < Exit >    < Help >    < Save >    < Load >         โ”‚  
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  

ไธ€็›ดๆ‹‰ๅˆฐๆœ€ไธ‹้ข้ƒฝๆฒ’็œ‹ๅˆฐ jsonc ็š„ library

.config - OpenWrt Configuration
 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Libraries โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚  Arrow keys navigate the menu.  <Enter> selects submenus --->.          โ”‚  
  โ”‚  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, โ”‚  
  โ”‚  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> โ”‚  
  โ”‚  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       โ”‚  
  โ”‚ โ”Œโ”€โ”€โ”€โ”€^(-)โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚  
  โ”‚ โ”‚        ...                                                          โ”‚ โ”‚  
  โ”‚ โ”‚    < > libjson...................... javascript object notation (comโ”‚ โ”‚  
  โ”‚ โ”‚    -*- libjson-c..................................... javascript objโ”‚ โ”‚  
  โ”‚ โ”‚    < > libldns............................ A library to simplify DNSโ”‚ โ”‚  
  โ”‚ โ”‚        ...                                                          โ”‚ โ”‚  
  โ”‚ โ””โ”€โ”€โ”€โ”€v(+)โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚  
  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค  
  โ”‚        <Select>    < Exit >    < Help >    < Save >    < Load >         โ”‚  
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  

ๅ€’ๆ˜ฏๆœ‰็œ‹ๅˆฐ libjson-c ๅ‰้ขๆ‰“ไบ† *
ๆ‡‰่ฉฒๆ˜ฏ built-in ็š„ๆ„ๆ€

็ดขๆ€ง้€ฃ cgilib ไนŸ้ธ built-in, ้€™่ฆๆŒ‰ Y

็›ดๆŽฅๆ•ฒ make

jeffrey@jeffrey-virtual-machine:~/openwrt$ make menuconfig
configuration written to .config

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

jeffrey@jeffrey-virtual-machine:~/openwrt$ make
 make[1] world
 make[2] target/compile
 make[3] -C target/linux compile
 make[2] package/cleanup
 make[2] package/compile
 make[3] -C package/libs/toolchain compile
 make[3] -C package/libs/libnl-tiny compile
 make[3] -C package/libs/libjson-c compile
 make[3] -C package/utils/lua compile
 make[3] -C package/libs/libubox compile
 make[3] -C package/system/ubus compile
 make[3] -C package/system/uci compile
 make[3] -C package/network/config/netifd compile
 make[3] -C package/system/opkg host-compile
 make[3] -C package/system/ubox compile
 make[3] -C package/libs/lzo compile
 make[3] -C package/libs/zlib compile
 make[3] -C package/libs/ncurses compile
 make[3] -C package/libs/ncurses compile
 make[3] -C package/utils/util-linux compile
 make[3] -C package/utils/ubi-utils compile
 make[3] -C package/system/procd compile
 make[3] -C package/utils/jsonfilter compile
 make[3] -C package/base-files compile
 make[3] -C package/system/fstools compile
 make[3] -C package/boot/uboot-envtools compile
 make[3] -C package/libs/gettext compile
 make[3] -C package/libs/libiconv compile
 make[3] -C package/libs/libtool compile
 make[3] -C package/libs/cyassl compile
 make[3] -C package/libs/ocf-crypto-headers compile
 make[3] -C package/libs/openssl compile
 make[3] -C package/libs/polarssl compile
 make[3] -C package/libs/ustream-ssl compile
 make[3] -C package/network/services/uhttpd compile
 make[3] -C package/network/utils/iwinfo compile
 make[3] -C package/utils/lua host-compile
 make[3] -C package/utils/px5g compile
 make[3] -C package/firmware/linux-firmware compile
 make[3] -C package/kernel/linux compile
 make[3] -C package/network/utils/iptables compile
 make[3] -C package/network/config/firewall compile
 make[3] -C feeds/luci/contrib/package/luci compile
 make[3] -C feeds/luci/contrib/package/freifunk-common compile
 make[3] -C package/libs/libreadline compile
 make[3] -C package/network/services/samba36 compile
 make[3] -C feeds/luci/contrib/package/luci-addons compile
 make[3] -C feeds/oldpackages/libs/cgilib compile
 make[3] -C feeds/packages/libs/libgpg-error compile
 make[3] -C feeds/packages/libs/libgcrypt compile
 make[3] -C feeds/oldpackages/utils/ntfs-3g compile
 make[3] -C feeds/oldpackages/net/ser2net compile
 make[3] -C feeds/packages/libs/alsa-lib compile
 make[3] -C feeds/packages/utils/alsa-utils compile
 make[3] -C feeds/packages/utils/attr compile
 make[3] -C feeds/packages/utils/bzip2 compile
 make[3] -C package/libs/libpcap compile
 make[3] -C package/libs/uclient compile
 make[3] -C feeds/packages/net/cshark compile
 make[3] -C feeds/packages/libs/faad2 compile
 make[3] -C feeds/packages/libs/speex compile
 make[3] -C feeds/packages/multimedia/ffmpeg compile
 make[3] -C feeds/packages/libs/flac compile
 make[3] -C feeds/packages/libs/libffi host-compile
 make[3] -C package/libs/gettext host-compile
 make[3] -C package/libs/libiconv host-compile
 make[3] -C feeds/packages/libs/glib2 host-compile
 make[3] -C feeds/packages/libs/libffi compile
 make[3] -C feeds/packages/libs/glib2 compile
 make[3] -C feeds/packages/libs/libaudiofile compile
 make[3] -C feeds/packages/libs/libid3tag compile
 make[3] -C feeds/packages/libs/libmad compile
 make[3] -C feeds/packages/libs/libmms compile
 make[3] -C feeds/packages/libs/libmpdclient compile
 make[3] -C feeds/packages/libs/libogg compile
 make[3] -C feeds/packages/libs/libsndfile compile
 make[3] -C feeds/packages/libs/libvorbis compile
 make[3] -C feeds/packages/libs/libvorbisidec compile
 make[3] -C feeds/packages/utils/minicom compile
 make[3] -C feeds/packages/sound/mpc compile
 make[3] -C package/network/utils/curl compile
 make[3] -C feeds/packages/sound/mpd compile
 make[3] -C feeds/packages/net/vsftpd compile
 make[3] -C package/kernel/gpio-button-hotplug compile
 make[3] -C package/network/services/hostapd compile
 make[3] -C package/network/utils/iw compile
 make[3] -C package/kernel/mac80211 compile
 make[3] -C package/kernel/w1-gpio-custom compile
 make[3] -C package/libs/uclibc++ compile
 make[3] -C package/network/config/swconfig compile
 make[3] -C package/network/ipv6/odhcp6c compile
 make[3] -C package/libs/gmp compile
 make[3] -C package/libs/nettle compile
 make[3] -C package/network/services/dnsmasq compile
 make[3] -C package/network/services/dropbear compile
 make[3] -C package/network/services/odhcpd compile
 make[3] -C package/network/utils/linux-atm compile
 make[3] -C package/network/utils/resolveip compile
 make[3] -C package/network/services/ppp compile
 make[3] -C package/network/utils/iperf compile
 make[3] -C package/system/mtd compile
 make[3] -C package/system/opkg compile
 make[3] -C package/utils/busybox compile
 make[3] -C package/utils/fuse compile
 make[2] package/install
 make[3] package/preconfig
 make[2] target/install
 make[3] -C target/linux install
 make[3] -C target/toolchain install
 make[2] package/index
jeffrey@jeffrey-virtual-machine:~/openwrt$ 

make ้Žไบ†
็„ถๅพŒๅ’ง

JS9331 ้–‹็™ผๆฟ OpenWrt ๅ…ฅ้–€ๆ•™็จ‹
...
4.3.6. ็ผ–่ฏ‘ OpenWrt ๆบ็ 
...
็ผ–่ฏ‘ๅฎŒๆˆๅŽ็š„ OpenWrt ๅ›บไปถๅฏไปฅๅœจโ€œopenwrt /bin/ar71xxโ€ไธ‹ๆ‰พๅˆฐใ€‚

jeffrey@jeffrey-virtual-machine:~/openwrt/bin/ar71xx$ ls
md5sums
openwrt-ar71xx-generic-root.squashfs
openwrt-ar71xx-generic-root.squashfs-64k
openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin
openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin
openwrt-ar71xx-generic-uImage-gzip.bin
openwrt-ar71xx-generic-uImage-lzma.bin
openwrt-ar71xx-generic-vmlinux.bin
openwrt-ar71xx-generic-vmlinux.elf
openwrt-ar71xx-generic-vmlinux.gz
openwrt-ar71xx-generic-vmlinux.lzma
openwrt-ar71xx-generic-vmlinux-lzma.elf
OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2
packages
jeffrey@jeffrey-virtual-machine:~/openwrt/bin/ar71xx$ 

ๆ›ธไธŠ่ชช openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin ๅฐฑๆ˜ฏ OpenWrt ๅ›บไปถ

้‚ฃๆˆ‘่ฆๆ€Ž้บผๆŠŠ้€™ๅ€‹ๅ›บไปถไธŸๅˆฐ JS9331 ไธŠๅ‘ข?

JS9331 ้–‹็™ผๆฟไฝฟ็”จๆ‰‹ๅ†Š
...
3. ๅผ€ๅ‘ๆฟๅ›บไปถ้•œๅƒ็ƒงๅฝ•่ฏดๆ˜Ž

้€™่ฃกๆœ‰่ชชๆ˜Ž

ๆˆ‘็œ‹ๆˆ‘ๅฐฑ็”จๆœ€็ฐกๅ–ฎ็š„

3.1.1 openwrt ็ฝ‘็ปœ็ƒงๅ†™

ๅœจ่‡ชๅทฑ้›ป่…ฆๆ–ฐๅขž่ณ‡ๆ–™ๅคพ
D:\ubuntu_share\js9331_firmware

็„ถๅพŒๅฐ‡ openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin ่ค‡่ฃฝๅˆฐ่ฉฒ่ณ‡ๆ–™ๅคพๅŽป

jeffrey@jeffrey-virtual-machine:~/openwrt/bin/ar71xx$ cp openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin /mnt/hgfs/share/js9331_firmware/

ๅฐฑ็…ง่‘—ๆ‰‹ๅ†ŠไธŠๅฏซ็š„ๅนนไบ†

1515

้‚„ๅฅฝ web ไป‹้ขๆœ‰้‡ๆ–ฐๅซๆˆ‘่ผธๅ…ฅๅธณ่™Ÿๅฏ†็ขผ

ๅ›ž้กงๆˆ‘ๅ‰›ๅ‰›ๅšไบ†็”š้บผไบ‹ๆƒ…

้€ฒ menuconfig ๆŒ‰ Y ้ธไบ† cgilib
<*> cgilib................................................ Simple

Exit and Save ไน‹ๅพŒๆ•ฒไบ† make

jeffrey@jeffrey-virtual-machine:~/openwrt$ make
 make[1] world
 make[2] target/compile
 make[3] -C target/linux compile
 make[2] package/cleanup
 make[2] package/compile
 make[3] -C package/libs/toolchain compile
 make[3] -C package/libs/libnl-tiny compile
 make[3] -C package/libs/libjson-c compile
         ...
 make[3] -C feeds/oldpackages/libs/cgilib compile
         ...
 make[3] -C package/utils/fuse compile
 make[2] package/install
 make[3] package/preconfig
 make[2] target/install
 make[3] -C target/linux install
 make[3] -C target/toolchain install
 make[2] package/index
jeffrey@jeffrey-virtual-machine:~/openwrt$ 

็„ถๅพŒๆˆ‘ๅพ—ๅˆฐไบ† openWrt ๅ›บไปถไธ€ๅ€‹ openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin

็„ถๅพŒ็›ดๆŽฅๅˆฉ็”จ็พๆˆ็š„ web interface ๅˆทๅ†™ๆ–ฐ็š„ๅ›บไปถ

็ญ‰ไบ†ๅ…ฉไธ‰ๅˆ†้˜้‡ๆ–ฐ็™ปๅ…ฅไบ† web

ๆœ‰้ฉš็„ก้šช

1530

ไพ†ๅฏซ CGI ๅง

  • main.c
#include <stdio.h>

int
main(void) {

    printf("event.cgi: hello world\n");

    return 0;
}

jeffrey@jeffrey-virtual-machine:/mnt/hgfs/share/js9331_event_cgi$ mips-openwrt-linux-gcc main.c -o event.cgi

ไธŠๅ‚ณ event.cgi ๅˆฐ /tmp ๅŽป

root@JoySince:/# cd /tmp/
root@JoySince:/tmp# ls
TZ                hosts             luci-sessions     state
dhcp.leases       lock              overlay           sysinfo
dnsmasq.d         log               resolv.conf
etc               luci-indexcache   resolv.conf.auto
event.cgi         luci-modulecache  run
root@JoySince:/tmp# chmod 755 event.cgi
root@JoySince:/tmp# ls
TZ                hosts             luci-sessions     state
dhcp.leases       lock              overlay           sysinfo
dnsmasq.d         log               resolv.conf
etc               luci-indexcache   resolv.conf.auto
event.cgi         luci-modulecache  run
root@JoySince:/tmp#

่จ˜ๅพ—ไฟฎๆ”นๆฌŠ้™

root@JoySince:/tmp# ./event.cgi
event.cgi: hello world

ๅฅฝ
ๆˆๅŠŸ็š„ไธ€ๅฐๆญฅ

่ค‡่ฃฝๅˆฐ CGI ็›ฎ้Œ„ไธ‹

root@JoySince:/tmp# cp event.cgi /www/cgi-bin/
root@JoySince:/tmp# ls /www/cgi-bin/
event.cgi  luci

็ถฒๅ€ๅˆ—ๆ•ฒ http://192.168.1.251/cgi-bin/event.cgi ๅพ—ๅˆฐ

Bad Gateway

The process did not produce any response

็ฎ—ไบ†
้–‹ๅง‹ๅฅ— cgilib ไบ†

  • main.c
#include <cgi.h>

s_cgi *cgi;

int
main(void) {

    cgi = cgiInit();

    cgiSetType("application/json");
    cgiHeader();

    printf("{\"hello\": \"world\"}");
    cgiFree (cgi);

    return 0;
}

ๅ‡บๅ•้กŒไบ†

jeffrey@jeffrey-virtual-machine:/mnt/hgfs/share/js9331_event_cgi$ mips-openwrt-linux-gcc main.c -o event.cgi
main.c:2:17: fatal error: cgi.h: No such file or directory
 #include <cgi.h>
                 ^
compilation terminated.

1610

ๅพž 579 ็š„ compile ๅนณๅฐๆ‰พไธ€ไบ›้ปžๅญ

mips-openwrt-linux-uclibc-gcc -L/home/jeffrey/UGW-5.4/proscend/apps/webcgi/../icos -s -L./ -L/home/jeffrey/UGW-5.4/staging_dir/target-mips_r2_uClibc-0.9.30.1_vrx288_gw_he_vdsl_lte/usr/lib -Wl,-rpath,/tmp -licos -lcgi -ljson-c -o z_lan_vif.cgi z_lan_vif.o
mips-openwrt-linux-uclibc-strip z_lan_vif.cgi
cp z_lan_vif.cgi www/cgi-bin/
Compile wan_more_conn.c ...
mips-openwrt-linux-uclibc-gcc -std=gnu99 -Wall -Wstrict-prototypes -D__ICOS__ -D_GNU_SOURCE -D__DEBUG__ -O0 -DMCSVTAG="\"\""  -D_PDM_SHDSL -D_PDM_HTB -D_MODEL_ID=5790 -D_BRAND_ID=50 -D_MODEL_NAME="P-793H v3" -D_DATECODE=20151023  -I/home/jeffrey/UGW-5.4/proscend/apps/webcgi/../icos/include -I/home/jeffrey/UGW-5.4/proscend/apps/webcgi/include -I/home/jeffrey/UGW-5.4/proscend/apps/webcgi/cgilib-0.7 -I/home/jeffrey/UGW-5.4/staging_dir/target-mips_r2_uClibc-0.9.30.1_vrx288_gw_he_vdsl_lte/usr/include -c -o wan_more_conn.o wan_more_conn.c

ๅœจ JS9331 ็š„้–‹็™ผๅนณๅฐๅฐ็™ผ็พไบ†ไธ€ๅ † library

jeffrey@jeffrey-virtual-machine:/mnt/hgfs/share/js9331_event_cgi$ ls /home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/
glib-2.0                 libgmodule-2.0.so           libntfs-3g.so.85
iptables                 libgmodule-2.0.so.0         libntfs-3g.so.85.0.0
libasound.so             libgmodule-2.0.so.0.4101.0  libogg.a
libasound.so.2           libgmp.a                    libogg.so
libasound.so.2.0.0       libgmp.so                   libogg.so.0
libatm.a                 libgmp.so.10                libogg.so.0.8.2
libatm.so                libgmp.so.10.2.0            libpanel.a
libatm.so.1              libgobject-2.0.a            libpanel.so
libatm.so.1.0.0          libgobject-2.0.so           libpanel.so.5
libattr.a                libgobject-2.0.so.0         libpanel.so.5.9
libattr.so               libgobject-2.0.so.0.4101.0  libpcap.a
libattr.so.1             libgpg-error.a              libpcap.so
libattr.so.1.1.2448      libgpg-error.so             libpcap.so.1.3
libaudiofile.a           libgpg-error.so.0           libpcap.so.1.3.0
libaudiofile.so          libgpg-error.so.0.10.0      libpolarssl.so
libaudiofile.so.1        libgthread-2.0.a            libpolarssl.so.1.3.9
libaudiofile.so.1.0.0    libgthread-2.0.so           libpolarssl.so.7
libavcodec.a             libgthread-2.0.so.0         libpostproc.a
libavcodec.so            libgthread-2.0.so.0.4101.0  libpostproc.so
libavcodec.so.54         libhistory.a                libpostproc.so.52
libavcodec.so.54.23.100  libhistory.so               libpostproc.so.52.0.100
libavdevice.a            libhistory.so.6             libreadline.a
libavdevice.so           libhistory.so.6.2           libreadline.so
libavdevice.so.54        libhogweed.a                libreadline.so.6
libavdevice.so.54.0.100  libhogweed.so               libreadline.so.6.2
libavfilter.a            libhogweed.so.2             libsndfile.a
libavfilter.so           libhogweed.so.2.5           libsndfile.so
libavfilter.so.2         libiconv-stub               libsndfile.so.1
libavfilter.so.2.77.100  libid3tag.so                libsndfile.so.1.0.25
libavformat.a            libid3tag.so.0              libspeex.a
libavformat.so           libid3tag.so.0.3.0          libspeexdsp.a
libavformat.so.54        libintl-stub                libspeexdsp.so
libavformat.so.54.6.100  libip4tc.so                 libspeexdsp.so.1
libavutil.a              libip4tc.so.0               libspeexdsp.so.1.5.0
libavutil.so             libip4tc.so.0.1.0           libspeex.so
libavutil.so.51          libip6tc.so                 libspeex.so.1
libavutil.so.51.54.100   libip6tc.so.0               libspeex.so.1.5.0
libblkid.a               libip6tc.so.0.1.0           libssl.a
libblkid.so              libiptc.so                  libssl.so
libblkid.so.1            libiptc.so.0                libssl.so.1.0.0
libblkid.so.1.1.0        libiptc.so.0.0.0            libswresample.a
libblobmsg_json.so       libiwinfo.so                libswresample.so
libbz2.so                libjson.a                   libswresample.so.0
libbz2.so.1.0            libjson-c.a                 libswresample.so.0.15.100
libbz2.so.1.0.6          libjson-c.so                libswscale.a
libcgi.a                 libjson-c.so.2              libswscale.so
libcgi.so                libjson-c.so.2.0.1          libswscale.so.2
libcgi.so.1              libjson_script.so           libswscale.so.2.1.100
libcgi.so.1.0.0          libjson.so                  libubi-utils.a
libcrypto.a              libjson.so.0                libubox.a
libcrypto.so             libjson.so.0.1.0            libubox.so
libcrypto.so.1.0.0       libltdl.a                   libubus.so
libcurl.a                libltdl.so                  libucimap.a
libcurl.so               libltdl.so.7                libuci.so
libcurl.so.4             libltdl.so.7.3.0            libuClibc++-0.2.4.so
libcurl.so.4.3.0         liblua.a                    libuClibc++.a
libcurses.a              liblualib.so                libuClibc++.so
libcurses.so             liblua.so                   libuClibc++.so.0
libcyassl.so             liblua.so.5.1.5             libuclient.so
libcyassl.so.5           liblzo2.a                   libulockmgr.a
libcyassl.so.5.1.0       liblzo2.so                  libulockmgr.so
libfaad.a                liblzo2.so.2                libulockmgr.so.1
libfaad.so               liblzo2.so.2.0.0            libulockmgr.so.1.0.1
libfaad.so.2             libmad.a                    libustream-ssl.so
libfaad.so.2.0.0         libmad.so                   libuuid.a
libffi.a                 libmad.so.0                 libuuid.so
libffi.so                libmad.so.0.2.1             libuuid.so.1
libffi.so.6              libmenu.a                   libuuid.so.1.3.0
libffi.so.6.0.1          libmenu.so                  libvalidate.so
libFLAC.a                libmenu.so.5                libvorbis.a
libFLAC.so               libmenu.so.5.9              libvorbisenc.a
libFLAC.so.8             libmms.a                    libvorbisenc.so
libFLAC.so.8.2.0         libmms.so                   libvorbisenc.so.2
libform.a                libmms.so.0                 libvorbisenc.so.2.0.10
libform.so               libmms.so.0.0.2             libvorbisfile.a
libform.so.5             libmount.a                  libvorbisfile.so
libform.so.5.9           libmount.so                 libvorbisfile.so.3
libfuse.a                libmount.so.1               libvorbisfile.so.3.3.6
libfuse.so               libmount.so.1.1.0           libvorbisidec.a
libfuse.so.2             libmpdclient.a              libvorbisidec.so
libfuse.so.2.9.0         libmpdclient.so             libvorbisidec.so.1
libgcrypt.a              libmpdclient.so.2           libvorbisidec.so.1.0.3
libgcrypt.so             libmpdclient.so.2.0.5       libvorbis.so
libgcrypt.so.20          libncurses.a                libvorbis.so.0
libgcrypt.so.20.0.1      libncurses.so               libvorbis.so.0.4.7
libgio-2.0.a             libncurses.so.5             libxtables.so
libgio-2.0.so            libncurses.so.5.9           libxtables.so.10
libgio-2.0.so.0          libnettle.a                 libxtables.so.10.0.0
libgio-2.0.so.0.4101.0   libnettle.so                libz.a
libglib-2.0.a            libnettle.so.4              libz.so
libglib-2.0.so           libnettle.so.4.7            libz.so.1
libglib-2.0.so.0         libnl-tiny.so               libz.so.1.2.8
libglib-2.0.so.0.4101.0  libntfs-3g.a                lua
libgmodule-2.0.a         libntfs-3g.so               pkgconfig

ๆ‰€ไปฅๆˆ‘ๅœจไฝฟ็”จ mips-openwrt-linux-gcc ็š„ๆ™‚ๅ€™
ๆ‡‰่ฉฒไฝฟ็”จ -L ไพ†ๅ‘Š่จดๅฎƒๅŽปๅ“ช้‚Šๆ‰พๅ‡ฝๅผๅบซ

ๆˆ‘ไนŸๆ‡‰่ฉฒๅ‘Š่จด mips-openwrt-linux-gcc ๅ–ๅ“ช้‚Šๆ‰พ cgi.h ๆ‰ๅฐ

jeffrey@jeffrey-virtual-machine:/mnt/hgfs/share/js9331_event_cgi$ ls /home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/include/
af_vfs.h     etip.h        libavfilter    mac80211-backport  speex
alsa         faad.h        libavformat    mad.h              termcap.h
atmarpd.h    ffi.h         libavutil      menu.h             term.h
atmarp.h     ffitarget.h   libiptc        mp4ff.h            tremor
atmd.h       FLAC          libipulog      mp4ffint.h         ubi-media.h
atm.h        form.h        libltdl        mpd                ubi-user.h
atmsap.h     fuse          libmms         ncurses_dll.h      ubus_common.h
attr         fuse.h        libmount       ncurses.h          ubusmsg.h
audiofile.h  gcrypt.h      libnl-tiny     neaacdec.h         uci_blob.h
aupvlist.h   gio-unix-2.0  libopkg        net                uci_config.h
blkid        glib-2.0      libpostproc    nettle             uci.h
bzlib.h      gmp.h         libswresample  ntfs-3g            ucimap.h
cgi.h        gpg-error.h   libswscale     ogg                uClibc++
crypto       id3tag.h      libubi.h       openssl            ulockmgr.h
curl         ip6tables.h   libubi-tiny.h  panel.h            unctrl.h
cursesapp.h  iptables      libubox        pcap               uuid
cursesf.h    iptables.h    libubus.h      pcap-bpf.h         vorbis
curses.h     iwinfo        lnum_config.h  pcap.h             xtables.h
cursesm.h    iwinfo.h      ltdl.h         pcap-namedb.h      xtables-version.h
cursesp.h    json          luaconf.h      polarssl           zconf.h
cursesw.h    json-c        lua.h          pppd               zlib.h
cursslk.h    lauxlib.h     lualib.h       readline
cyassl       libavcodec    lzo            sndfile.h
eti.h        libavdevice   mac80211       sndfile.hh

ไพ†ๅšๅ€‹็ธฝ็ต

ๆˆ‘ๆƒณๅœจ /mnt/hgfs/share/js9331_event_cgi ็›ฎ้Œ„ไธ‹
ไฝฟ็”จ mips-openwrt-linux-gcc ไพ†็ทจ่ญฏ main.c ไฝฟๅ…ถ็”ข็”ŸๅŸท่กŒๆช” event.cgi

  • /mnt/hgfs/share/js9331_event_cgi/main.c
#include <stdio.h>
#include <cgi.h>
s_cgi *cgi;

int main(void) {
    cgi = cgiInit();
    cgiSetType("application/json");
    cgiHeader();
    printf("{\"hello\": \"world\"}");
    cgiFree (cgi);

    return 0;
}

ๆˆ‘้œ€่ฆๅ‘Š่จด mips-openwrt-linux-gcc ไธ‰ไปถไบ‹

  • -I/home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/include/
  • -L/home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/
  • -lcgi

command ๆ•ฒ่ตทไพ†ๆœƒๅƒไธ‹้ข้€™ไธ€ๅจ

mips-openwrt-linux-uclibc-gcc -I/home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/include/ -L/home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/ -lcgi -o event.cgi main.c

ๅ“ˆๅ“ˆ

jeffrey@jeffrey-virtual-machine:/mnt/hgfs/share/js9331_event_cgi$ mips-openwrt-linux-uclibc-gcc -I/home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/include/ -L/home/jeffrey/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib/ -lcgi -o event.cgi main.c
jeffrey@jeffrey-virtual-machine:/mnt/hgfs/share/js9331_event_cgi$ ls
event.cgi  main_0.c  main.c

็›ดๆŽฅไธŠๅ‚ณๅˆฐ JS9331 ็š„ /www/cgi-bin ็›ฎ้Œ„

root@JoySince:/www/cgi-bin# ls
event.cgi  luci

็ถฒๅ€ๅˆ—ๆ•ฒ http://192.168.1.251/cgi-bin/event.cgi ๅพ—ๅˆฐ

Bad Gateway

The process did not produce any response

shit

1740

Debug ็š„้Ž็จ‹ๅพ—ๅˆฐ่ฉญ็•ฐ็š„็ต่ซ–

  • /mnt/hgfs/share/js9331_event_cgi/main.c
#include <stdio.h>
#include <cgi.h>
s_cgi *cgi;

int main(void) {
    cgi = cgiInit();
    cgiSetType("application/json");
    cgiHeader();
    printf("{\"hello\": \"world\"}");
//    cgiFree (cgi);
    return 0;
}

ไธ่ฆๅ‘ผๅซ cgiFree()
ๅ•้กŒๅฐฑ่งฃๆฑบไบ† ้€™ๅฏฆๅœจ่ ป่ฉญ็•ฐ็š„

1750

ๅ‰›ๅ‰›ๆœ‰่ทŸ Jammy ่Šไบ†ไธ€ไธ‹

  • Jammy ็•ถๅ…ตๆ™‚็œ‹ไบ†ไธ€ไบ›ๅ’Œ IoT Protocol ็›ธ้—œๅญธ่ก“่ซ–ๆ–‡
  • Jammy ๆฒ’ๆœ‰ๅŽป็œ‹ CoAP ๆˆ– MQTT ็š„่ฆๆ ผ
  • ่Šไบ†ไธ€ไธ‹ Jammy ๅฐฑ้–‹ๅฟƒไบ†
  • Jammy ่กจ็คบไป–่ฆ่ถ•ๅฟซๅฐ‡ mantis wiki ็š„ smart lighting ้ƒจๅˆ†ๅฏซๅฎŒ็ตฆ Aaron ็”จ

ๆˆ‘ๆ‰ฟ่ซพไบ†ไธ€ไบ›ไบ‹

  • ้€ไป–ไธ€ๅฐ nodemcu ๅฐ่ปŠ
โš ๏ธ **GitHub.com Fallback** โš ๏ธ