Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoTデバイス内アプリケーションの開発効率向上のためにコードの変更を動的に適用する方式の提案と実装 / IPSJ SIGSE 207

IoTデバイス内アプリケーションの開発効率向上のためにコードの変更を動的に適用する方式の提案と実装 / IPSJ SIGSE 207

第207回SE研究発表会-情報処理学会 http://www.ipsj.or.jp/kenkyukai/event/se207.html

23f4d5d797a91b6d17d627b90b5a42d9?s=128

Kentaro Kuribayashi

March 02, 2021
Tweet

Transcript

  1. ܀ྛ ݈ଠ࿠(GMOϖύϘגࣜձࣾ ϖύϘݚڀॴ/๺཮ઌ୺Պֶٕज़େֶӃେֶ), ࢁ࡚ ਐ(๺۝भࢢཱେֶ) , ྗ෢ ݈࣍(ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴ/GMOϖύϘגࣜձࣾ ϖύϘݚڀॴ). ୮

    ߁༤ (๺཮ઌ୺Պֶٕज़େֶӃେֶ) ൃදऀ: ܀ྛ݈ଠ࿠ / Pepabo R&D Institute, GMO Pepabo, Inc. 2021.03.01-02 ୈ207ճιϑτ΢ΣΞ޻ֶݚڀൃදձ IoTσόΠε಺ΞϓϦέʔγϣϯͷ։ൃޮ཰޲্ͷͨΊ ʹίʔυͷมߋΛಈతʹద༻͢ΔํࣜͷఏҊͱ࣮૷
  2. 1. ͸͡Ίʹ 2. ઌߦݚڀ 3. ఏҊํࣜͱ࣮૷ 4. ࣮ݧͱධՁ 5. ·ͱΊ

    2 ໨࣍
  3. 1. ͸͡Ίʹ

  4. • IoTσόΠε਺͸૿ՃͷҰ్Ͱ͋Δɽ • ͞Βʹ͸ɼίϯγϡʔϚ޲͚ʹՃ͑ ͯɼҩྍɾ࢈ۀ༻్ɾࣾձΠϯϑϥج ൫΁ͱɼ༻్͕ଟ༷Խ͍ͯ͠Δɽ • IoTσόΠε΁ͷ૿͑ଓ͚Δଟ༷ͳधཁ Λຬͨ͢ʹ͸ɼ։ൃޮ཰ͷ޲্͕ٻΊ ΒΕΔɽ

    IoTσόΠεͷ૿Ճɾଟ༷Խ 4 ग़ॴ<>૯຿ল৘ใ௨৴നॻྩ࿨೥൛ IUUQTXXXTPVNVHPKQKPIPUTVTJOUPLFJ XIJUFQBQFSSIUNM 
  5. • ։ൃޮ཰޲্ͷͨΊIoTσόΠεͷ։ ൃϓϥοτϑΥʔϜ͕ଟ਺ଘࡏ͢Δɽ • ϋʔυ΢ΣΞ: ESP8688ʹΑΔ։ൃ ΩοτɼArduinoɼRaspberry Pi౳ ʢӈਤத[2-6]ʣ •

    ιϑτ΢ΣΞ: Arduino IDEɼESP- IDFɼ Platform.io౳ʢӈਤத[7-9]ʣ ։ൃPFʹΑΔ։ൃޮ཰޲্ 5
  6. • IoTσόΠεΛߏ੒͢Διϑτ΢ΣΞ͸ӈ ਤͷ௨ΓͰ͋Δ[2]ɽຊݚڀ͕ର৅ͱ͢Δ ͷ͸IoTΞϓϦέʔγϣϯͰ͋Δɽ • IoTͷจ຺Ͱ͸ɼIoTΞϓϦέʔγϣϯ͸Τ ϯυϢʔβ޲͚ͷΞϓϦέʔγϣϯΛࢦ͢ ͕ɼ͜͜Ͱ͸IoT σόΠε಺ΞϓϦέʔ γϣϯΛIoTΞϓϦέʔγϣϯͱݺͿɽ

    ຊݚڀͷର৅ 6 ग़ॴ<>#BVXFOT + 13VDLFCVTDI 4(JBOOPVMJT *.PFSNBO BOE&%1PPSUFSl0WFSUIF"JS4PGUXBSF6QEBUFTJOUIF*OUFSOFUPG5IJOHT "O0WFSWJFXPG,FZ1SJODJQMFTz*&&&$PNNVOJDBUJPOT.BHB[JOF  r ຊݚڀͷର৅
  7. • IoTσόΠε͸ݻ༗ͷϋʔυ΢ΣΞΛ༻͍ΔͨΊɼ։ൃͨ͠಺༰Λݕূ͢Δʹ ͸࣮σόΠε΁ͷίʔυมߋͷద༻ϓϩηε͕ඞਢͱͳΔɽ • IoTΞϓϦέʔγϣϯͷ։ൃޮ཰޲্ͷͨΊɼద༻ϓϩηεʹ͔͔Δ࣌ؒΛ୹ ॖ͍ͨ͠ɽ 7 ຊݚڀ͕औΓ૊Ή՝୊ ։ൃ ద༻

    ݕূ ຊݚڀͷண໨఺มߋΛσόΠε΁ͷద༻͢Δ࣌ؒ ΠςϨʔγϣϯ
  8. 2. ઌߦݚڀ

  9. • IoTσόΠε͸ɼҰ౓഑උ͞Εͨޙ΋ܧଓతʹΞϓϦέʔγϣϯͷߋ৽͕ඞཁ Ͱ͋ΔɽҰํͰɼిݯ༰ྔ΍֬อɼϋʔυ΢ΣΞεϖοΫɼωοτϫʔΫଳҬ ౳ʹ੍͓͍ͯ໿ͷݫ͍͠؀ڥԼͰಈ࡞Λܧଓ͢Δඞཁ͕͋Δ[3]ɽ • ·ͨɼIoTσόΠε͸௚઀తʹΞΫηε͢Δ͜ͱ͕೉͍͠৔ॴʹ഑ஔ͞ΕΔ͜ ͱ΋ଟ͍ͨΊɼϦϞʔτ͔Βͷߋ৽ͱݕূ͕ՄೳͰ͋Δඞཁ͕͋Δ[4]ɽ 9 IoTσόΠε΁ͷίʔυมߋͷద༻ʹؔ͢Δ՝୊ <>/BSHFT:PVTFGOF[IBE

    "WMFFO.BMIJ BOE,BSZ'S „BNMJOH4FDVSJUZJOQSPEVDUMJGFDZDMFPGJPUEFWJDFT"TVSWFZ+PVSOBMPG/FUXPSLBOE $PNQVUFS"QQMJDBUJPOT 7PM Q %FDFNCFS <>4UFQIFO#SPXOBOE$PSNBD+4SFFOBO4PGUXBSFVQEBUJOHJOXJSFMFTTTFOTPSOFUXPSLT"TVSWFZBOEMBDVOBF+PVSOBMPG4FOTPSBOE "DUVBUPS/FUXPSLT 7PM /P QQr /PWFNCFS
  10. • ઌߦݚڀ͸ɼ։ൃऀʹΑΔίʔυͷมߋΛIoTσόΠεʹద༻͢Δํࣜͱͯ͠ɼҎԼͷදͷ௨ Γ੔ཧ͍ͯ͠Δʢ[5-6]ΑΓචऀ͕·ͱΊͨʣɽ • ϋʔυ΢ΣΞ΍ωοτϫʔΫ੍໿ͷڧ͍IoTσόΠεͷ࣮؀ڥ΁ͷ഑උޙͷߋ৽ํࣜʹண໨͠ ͍ͯΔͨΊɼಈతݴޠʹΑΔํࣜΛ࠾༻ෆՄͱ͍ͯ͠Δɽ 10 ઌߦݚڀʹΑΔίʔυมߋͷద༻ํࣜͷ੔ཧ ߋ৽ର৅ ֓ཁ

    ࠾༻Մ൱ εΫϦϓτݴޠʹΑΔίʔυ εΫϦϓτݴޠͷ࣋ͭಈతͳੑ࣭Λར༻ͯ͠ɼچ͍ίʔυΛ։ൃऀʹΑΔมߋޙͷ ৽͍͠ίʔυͰஔ͖׵͑Δɽ ✕ Ծ૝ػցͰಈ࡞͢ΔݴޠʹΑΔίʔυ Ծ૝ػցͰಈ࡞͢Δݴޠͷ࣋ͭಈతͳੑ࣭Λར༻ͯ͠ɼچ͍ίʔυΛ։ൃऀʹΑΔ มߋޙͷ৽͍͠ίʔυͰஔ͖׵͑Δɽ ✕ ϑΝʔϜ΢ΣΞΠϝʔδ ΞϓϦέʔγϣϯίʔυΛຒΊࠐΜͩϑΝʔϜ΢ΣΞΠϝʔδΛೖΕସ͑Δ͜ͱͰɼ ։ൃऀʹΑΔมߋޙͷ৽͍͠ίʔυΛద༻͢Δɽ ̋ ωΠςΟϒίʔυ΁ͷಈతϦϯΫ ։ൃऀʹΑΔมߋޙͷ৽͍͠ίʔυΛωΠςΟϒίʔυͱͯ͠഑ஔ͠ɼطଘͷίʔυ ͷϦϯΫઌΛಈతʹॻ͖׵͑Δɽ ̋ <>1FUFS3VDLFCVTDI &MJ%F1PPSUFS $BSPMJOB'PSUVOB BOE*OHSJE.PFSNBO(JUBS(FOFSJDFYUFOTJPOGPSJOUFSOFUPGUIJOHTBSDIJUFDUVSFTFOBCMJOHEZOBNJDVQEBUFTPGOFUXPSLBOEBQQMJDBUJPONPEVMFT"E)PD/FU XPSLT 7PM QQr +BOVBSZ <>1FUFS3VDLFCVTDI 4QJMJPT(JBOOPVMJT *OHSJE.PFSNBO +FSPFO)PFCFLF BOE&MJ%F1PPSUFS.PEFMMJOHUIFFOFSHZDPOTVNQUJPOGPSPWFSUIFBJSTPGUXBSFVQEBUFTJOMQXBOOFUXPSLT4JHGPY MPSBBOEJFFFH *OUFSOFUPG5IJOHT 7PM QQr
  11. • ຊݚڀͷ໨త͸ɼIoTΞϓϦέʔγϣϯͷ։ൃޮ཰ͷ޲্Ͱ͋Δɽ • IoTσόΠεͷϓϩτλΠϐϯά΍։ൃ࣌ʹ͓͍ͯ͸ɼ࣮؀ڥͰ༻͍ΒΕΔ௿ ফඅిྗΛಛ௃ͱ͢Δϋʔυ΢ΣΞΛ༻͍Δ͜ͱ͸ɼඞਢ৚݅Ͱ͸ͳ͍ɽ • ͦͷͨΊɼRaspberry Pi΍Beagle Bone౳ͷΑ͏ͳɼ૬ରతʹߴੑೳͷϋʔυ ΢ΣΞΛ༻͍Δ͜ͱ͕ՄೳͰ͋Δɽ

    • ΑͬͯɼͦͷΑ͏ͳϋʔυ΢ΣΞͷར༻Λલఏͱͯ͠ɼಈతͳੑ࣭Λ࣋ͭϓϩ άϥϛϯάݴޠΛར༻ՄೳͰ͋Δɽ 11 ຊݚڀͷ؍఺
  12. • ϑΝʔϜ΢ΣΞΠϝʔδͷߋ৽ʹ͍ͭͯ͸ɼϑΝʔϜ΢ΣΞͷసૹʹ͔͔ΔωͱϫʔΫసૹྔ ͷ࡟ݮ΍ɼେ͖ͳΠϝʔδΛॲཧ͢Δ͜ͱʹΑΔσόΠεͷిྗফඅͷ࡟ݮ͕ݕ౼͞Ε͍ͯΔ [6-7]ɽͦͷͨΊɼํࣜͱͯ͠2ͭʹ෼ׂ͢Δɽ • ίʔυͷಈతͳߋ৽ʹ͍ͭͯ͸ɼίʔυͷܗࣜʹؔΘΒͣಉҰͰ͋ΔͱΈͳͤΔͨΊɼ౷߹͠ ͯѻ͏ɽ 12 ຊݚڀʹΑΔίʔυมߋͷద༻ํࣜͷ੔ཧ ߋ৽ର৅

    ૢ࡞ ຊݚڀʹΑΔํࣜͷ੔ཧ ϑΝʔϜ΢ΣΞΠϝʔδ ෼ׂ ʢʣϑΝʔϜ΢ΣΞΠϝʔδͷશମΛద༻͢Δํࣜ ʢʣϑΝʔϜ΢ΣΞΠϝʔδͷࠩ෼Λద༻͢Δํࣜ εΫϦϓτݴޠʹΑΔίʔυ ݁߹ ʢʣΞϓϦέʔγϣϯίʔυΛಈతʹద༻͢Δํࣜ Ծ૝ػցͰಈ࡞͢ΔݴޠʹΑΔίʔυ ωΠςΟϒίʔυ΁ͷಈతϦϯΫ <>,POTUBOUJOPT"SBLBEBLJT 1BWMPT$IBSBMBNQJEJT "OUPOJT.BLSPHJBOOBLJT BOE"MFYBOESPT'SBHLJBEBLJT'JSNXBSFPWFSUIFBJSQSPHSBNNJOHUFDIOJRVFTGPSJPUOFUXPSLTrBTVSWFZ 4FQUFNCFS <>0OESFK,BDINBO .BSDFM#BMB[ BOE1FUFS.BMJL6OJWFSTBMGSBNFXPSLGPSSFNPUFpSNXBSFVQEBUFTPGMPXQPXFSEFWJDFT$PNQVU$PNNVO 7PM QQr .BZ
  13. 3. ఏҊํࣜͱ࣮૷

  14. • લड़ͷ௨ΓɼํࣜΛҎԼͷ௨Γ੔ཧͨ͠ɽ 1. ϑΝʔϜ΢ΣΞΠϝʔδͷશମΛద༻͢Δํࣜ 2. ϑΝʔϜ΢ΣΞΠϝʔδͷࠩ෼Λద༻͢Δํࣜ 3. ΞϓϦέʔγϣϯίʔυΛಈతʹద༻͢Δํࣜ • ઌߦݚڀʹ͓͍ͯ͸ɼϦιʔε੍໿ͷڧ͍ঢ়گʹ͓͚ΔσόΠεͷ഑උޙͷద

    ༻Λ՝୊ͱ͍ͯ͠ΔͨΊɼ্هͷ3.ʹ͍ͭͯ͸े෼ʹݕ౼͞Εͯ͜ͳ͔ͬͨɽ • ຊݚڀ͸ɼઌߦݚڀͰ͸ѻΘΕͯ͜ͳ͔ͬͨεΫϦϓτݴޠ΍Ծ૝ػցʹΑΔ ݴޠΛ༻͍Δํ๏ΛؚΊɼIoTΞϓϦέʔγϣϯͷ։ൃޮ཰ͷ޲্Λ໨తͱ͠ ͨ3.ͷํࣜΛ͋ΒͨΊͯఏҊ͢Δɽ 14 ఏҊํࣜ
  15. • ํࣜʢ1ʣ͓Αͼʢ2ʣʹ͓͚Δద༻ ϓϩηεͷγʔέϯεਤ͸ӈਤͷ௨ ΓͰ͋Δɽ • ίʔυͷมߋʹج͍ͮͯϑΝʔϜ ΢ΣΞΛੜ੒͠ɼσόΠε΁ద༻͢ Δʢӈਤ1ʙ2ʣɽ • ͞Βʹɼ৽ͨͳϑΝʔϜ΢ΣΞʹ

    ΑͬͯσόΠεΛ࠶ىಈ͢Δඞཁ͕ ͋Δʢӈਤ3ʣ ํࣜʢ1ʣ͓Αͼʢ2ʣ 15
  16. • ίʔυͷมߋ͸ஞ࣍తʹૹ৴ɾద༻ ͞ΕΔʢӈਤ1ʣ • มߋ͞ΕͨίʔυʹؔΘΔΞϓϦ έʔγϣϯͷߏ੒ཁૉʢ͜͜Ͱ͸ϓ ϩηεʣΛ࠶ىಈ͢Δʢӈਤ2ʣɽ • લϖʔδͷํࣜͱҟͳΓɼσόΠε ͷ࠶ىಈ͸ඞཁͳ͍ɽ

    ํࣜʢ3ʣ: ఏҊํࣜ 16
  17. • ఏҊํࣜͷ࣮૷ʹ͸ɼϓϩάϥϛϯάݴޠͱͯ͠Elixir[9] ΛɼIoTσόΠεͷ։ൃϓϥοτϑΥʔϜͱͯ͠Nerves[10] Λ༻͍ͨɽ • Elixir͸େن໛ͳฒߦϓϩηεΛՄೳͱ͢ΔErlang/OTPͷԾ ૝ػցͰಈ࡞͢ΔݴޠͰ͋Δɽ • Nerves͸ɼElixirΛಉVM্Ͱಈ࡞͢Δͷʹඞཁे෼ʹখ͞ ͳLinuxʹΑΔϑΝʔϜ΢ΣΞΛఏڙ͢ΔϓϥοτϑΥʔϜ

    Ͱ͋Δɽ ࣮૷ʢ1/2ʣ 17 <>l5IF&MJYJS1SPHSBNNJOH-BOHVBHFzIUUQTFMJYJSMBOHPSH <>l/FSWFT1MBUGPSNzIUUQTXXXOFSWFTQSPKFDUPSH
  18. • Elixirͷ࣮ߦج൫ͱͳΔErlang/OTPͷԾ૝ػցʢErlang VMʣ͸ɼ࣮ߦ࣌ʹΦ ϒδΣΫτίʔυΛಈతʹஔ͖׵͑ΒΕΔػೳΛఏڙ͍ͯ͠Δɽ • ίʔυͷஔ͖׵͑͸ɼErlang VM্Ͱಈ࡞͢Δϊʔυͱݺ͹ΕΔϓϩηεΛ௨ ͯ͡ߦΘΕΔɽϊʔυ͸ԕִखଓ͖ݺͼग़͠ʢRPCʣʹରԠ͍ͯ͠Δɽ • ԕִͷϗετ্ʢ͜ͷ৔߹͸IoTσόΠεʣͰಈ࡞͢Δϊʔυʹରͯ͠ɼچ͍

    ίʔυΛ৽͍͠ίʔυʹஔ͖׵͑ΔRPCΛ࣮ߦ͢Δ͜ͱͰɼ։ൃऀʹΑΔίʔ υͷมߋΛIoTσόΠε΁ద༻ͨ͠ɽ 18 ࣮૷ʢ2/2ʣ
  19. 4. ࣮ݧͱධՁ

  20. • ͦΕͧΕͷํࣜΛൺֱ͢ΔͨΊͷࢦඪͱͯ͠ɼίʔυͷมߋΛσόΠεʹద༻ ্ͨ͠ͰɼIoTΞϓϦέʔγϣϯ͕มߋΛऔΓࠐΜͩঢ়ଶͰಈ࡞͢Δ·Ͱʹཁ ͢Δ࣌ؒΛ༻͍ͨɽ • ίʔυͷมߋΛద༻͢Δର৅ͱͳΔIoTΞϓϦέʔγϣϯͱͯ͠ɼTCPιέο τܦ༝ͰΫϥΠΞϯτ͔Βड͚औͬͨจࣈྻΛͦͷ··ฦ٫͢Δɼ͍ΘΏΔ EchoαʔόΛ࣮૷ͯ͠༻͍ͨɽ • લड़ͷ௨ΓɼσόΠε࠶ىಈͷ༗ແʹؔΘΒͣɼIoTΞϓϦέʔγϣϯࣗମͷ

    ௨৴͕࠶։͢Δ·Ͱͷ࣌ؒΛࢦඪͱͯ͠ܭଌ͢ΔͨΊͰ͋Δɽ 20 ࣮ݧͷର৅ͱํ๏ʢ1/2ʣ
  21. • ͦΕͧΕͷํࣜʹ͍ͭͯɼίʔυมߋͷద༻ ʹ͓͚ΔϑΣʔζ͝ͱʹɼӈਤͷ௨ΓͦΕͧ ΕίϚϯυΛ༻͍ͯ࣌ؒΛܭଌͨ͠ɽ • pingίϚϯυ͓ΑͼncatίϚϯυʹ͍ͭͯ ͸ɼIoTσόΠε΍ΞϓϦέʔγϣϯ΁ͷ઀ଓ ͕ःஅ͞Ε͍ͯΔؒ͸܁Γฦ࣮͠ߦ͠ɼ઀ଓ ཱ͕֬͞ΕΔ·Ͱͷ࣌ؒΛܭଌͨ͠ɽ ࣮ݧͷର৅ͱํ๏ʢ2/2ʣ

    21
  22. • ࣮ݧ݁Ռ͸ɼԼදͷ௨ΓͰ͋ΔɽఏҊํࣜΛ࣮૷ͨ͠ʢ3ʣ͕࠷΋଎͘ɼܭଌͨ͠ࢦඪʹ͓͍ ͯʢ1ʣͱൺֱͯ͠95%ͷվળ͕ݟΒΕͨɽ • ʢ3ʣͷApplication Reboot͸ɼ਺msecҎԼͰ͋ΔͨΊຊ࣮ݧͰ͸ܭଌͰ͖ͳ͔ͬͨɽ • ʢ2ʣʹ͍ͭͯ͸ɼࠩ෼Λద༻͢ΔաఔʹϘτϧωοΫ͕͋ΓɼΉ͠Ζ஗͘ͳͬͯ͠·ͬͨͱ ߟ͑ΒΕΔɽ 22

    ࣮ݧ݁Ռ
  23. • ຊݚڀʹ͓͚ΔఏҊํࣜͷ࣮૷͸ɼมߋର৅ͷίʔυͷґଘؔ܎Λߟྀ͢Δ͜ͱͳ͘ಈతͳॻ ͖׵͑Λߦ͍ͬͯΔɽͦͷͨΊɼίʔυؒʹෳࡶͳґଘؔ܎͕͋Δ৔߹͸ෆ੔߹Λى͜͢Մೳ ੑ͕͋Δɽ͔ͦ͠͠ͷ৔߹͸ϑΝʔϜ΢ΣΞΛߋ৽͢Δ͜ͱͰ༰қʹ෮چՄೳͰ͋Δɽ • ఏҊํ͓ࣜΑͼ࣮૷ͷҰൠੑʹ͍ͭͯ͸ɼIoTΞϓϦέʔγϣϯͷ։ൃޮ཰޲্Λલఏʹ૬ର తʹεϖοΫͷߴ͍ϋʔυ΢ΣΞΛ༻͍Δ͜ͱ͕Ͱ͖ΔͨΊɼຊ࣮૷ͱ͸ผͷݴޠΛ༻͍ͯ΋ ࣮ݱՄೳͰ͋ΔͱࢥΘΕΔɽ • ·ͨɼErlang

    VMޓ׵ͷVMΛ։ൃ͢Δ͜ͱͰɼΑΓ௿εϖοΫͷϋʔυ΢ΣΞͰಈ࡞ͤ͞Δ औΓ૊Έ΋ਐΈͭͭ͋Δ[11]ɽ 23 ٞ࿦ <>#FUUJP %BWJEFOEl"UPN7.zIUUQTHJUIVCDPNCFUUJP"UPN7.
  24. 5. ·ͱΊ

  25. • IoTΞϓϦέʔγϣϯͷ։ൃޮ཰ͷ޲্Λ໨తͱͨ͠ɼ։ൃऀʹΑΔίʔυͷ มߋΛಈతʹద༻͢ΔํࣜͷఏҊͱ࣮૷Λߦͬͨɽ • ઌߦݚڀʹج͍ͮͯํࣜΛ੔ཧ্ͨ͠ͰɼఏҊํࣜͱطଘํࣜͱΛ࣮ݧʹΑΓ ൺֱݕ౼ͨ͠ɽ • ͦͷ݁Ռͱͯ͠ɼIoTΞϓϦέʔγϣϯ΁ͷίʔυมߋͷద༻ʹཁ͢Δ࣌ؒʹ ͍ͭͯɼఏҊํࣜͷ࣮૷͸95%ͷվળΛ࣮ݱͰ͖ͨɽ •

    ఏҊํࣜͷ࠾༻͸ɼIoTσόΠεͷ։ൃϓϥοτϑΥʔϜʹͱͬͯ༏Ґੑͱͳ ΓಘΔͱߟ͑Δɽ 25 ·ͱΊ
  26. 1. ૯຿ল. ৘ใ௨৴നॻྩ࿨2೥൛, https://www.soumu.go.jp/johotsusintokei/whitepaper/r02.html, 2020. 2. Bauwens, J., P. Ruckebusch,

    S. Giannoulis, I. Moerman, and E. D. Poorter. 2020. “Over-the-Air Software Updates in the Internet of Things: An Overview of Key Principles.” IEEE Communications Magazine 58 (2): 35–41. 3. Narges Yousefnezhad, Avleen Malhi, and Kary Fr ̈amling. Security in product lifecycle of iot devices: A survey. Journal of Network and Computer Applications, Vol. 171, p. 102779, December 2020. 4. Stephen Brown and Cormac J Sreenan. Software updat- ing in wireless sensor networks: A survey and lacunae. Journal of Sensor and Actuator Networks, Vol. 2, No. 4, pp. 717–760, November 2013. 5. Peter Ruckebusch, Eli De Poorter, Carolina Fortuna, and Ingrid Moerman. Gitar: Generic extension for internet-of-things architectures enabling dynamic up- dates of network and application modules. Ad Hoc Net- works, Vol. 36, pp. 127–151, January 2016. 6. Peter Ruckebusch, Spilios Giannoulis, Ingrid Moerman, Jeroen Hoebeke, and Eli De Poorter. Modelling the energy consumption for over-the-air software updates in lp- wan networks: Sigfox, lora and ieee 802.15.4g. Internet of Things, Vol. 3-4, pp. 104–119. 7. Konstantinos Arakadakis, Pavlos Charalampidis, An- tonis Makrogiannakis, and Alexandros Fragkiadakis. Firmware over-the-air programming techniques for iot networks – a survey. September 2020. 8. Ondrej Kachman, Marcel Balaz, and Peter Malik. Universal framework for remote firmware updates of low-power devices. Comput. Commun., Vol. 139, pp. 91–102, May 2019. 9. “The Elixir Programming Language.” https://elixir-lang.org/. 10. “Nerves Platform.” https://www.nerves-project.org/. 11. Bettio, Davide. n.d. “AtomVM.” https://github.com/bettio/AtomVM. 26 ࢀߟจݙ
  27. None