{"id":2746,"date":"2018-02-10T00:42:22","date_gmt":"2018-02-09T15:42:22","guid":{"rendered":"http:\/\/nantoka.filmm.info\/blog\/?p=2746"},"modified":"2018-02-16T19:45:07","modified_gmt":"2018-02-16T10:45:07","slug":"%e6%94%af%e6%8f%b4%e3%83%87%e3%83%90%e3%82%a4%e3%82%b9%e3%80%80ver6%e3%82%b3%e3%83%bc%e3%83%89","status":"publish","type":"post","link":"https:\/\/nantoka.filmm.info\/blog\/?p=2746","title":{"rendered":"\u652f\u63f4\u30c7\u30d0\u30a4\u30b9\u3000Ver6\u30b3\u30fc\u30c9"},"content":{"rendered":"<p>\u652f\u63f4\u30c7\u30d0\u30a4\u30b9Ver6\u30b3\u30fc\u30c9<\/p>\n<pre class=\"lang:python decode:true\" title=\"radioV6\"># ODEKAKE Beacon 2018ver4\r\nfrom microbit import *\r\n#import microbit\r\nimport music\r\nimport radio\r\nimport os\r\n\r\ndisplay.scroll('RadV6')\r\nradio.config(channel=10, power=5, length =64)#BLE init  length\r\nradio.on()#BLE ON\r\n\r\nbtnChk = False\r\nmyID = 1\r\ngrCount  = 1\r\ngrChk = False\r\noneTime = False\r\nmissing = False\r\ntimerA = 0\r\ntimerB = 0\r\nconfig = '0,0'#myID,grCount,\r\ntune1 = [\"D4:1\"]\r\ntune2 = [\"E4:1\"]\r\ntune3 = [\"F4:1\"]\r\ntimB = 30000\r\ninterval = 3000#change to 1sec Feb.16\r\n#IDlist = []\r\n#IDlist2 = []\r\nidDic = {}#ID + time dictionary\r\n\r\n#File read\r\nif 'config.txt' in os.listdir():\r\n    with open('config.txt') as my_config:\r\n        conftxt = my_config.read()\r\n        conf = conftxt.split(',')#split by commma to list\r\n        myID = int(conf[0])#myID read and set\r\n        grCount  = int(conf[1])#my grCount read and set\r\n\r\nwhile True:\r\n    if button_a.is_pressed() and button_b.is_pressed():\r\n        ##setingMode\r\n        if btnChk is False:\r\n            btnChk = True\r\n            display.scroll('SET')\r\n            display.scroll('ID=' + str(myID))\r\n        elif btnChk is True:\r\n            btnChk = False #end set mode\r\n            shakeChk = False #end shake mode\r\n            display.show(Image.YES)\r\n    elif button_a.is_pressed():\r\n        if btnChk is True and grChk is False:#ID count mode\r\n            if myID &lt; 20:\r\n                myID += 1\r\n            else:\r\n                myID = 0\r\n            display.scroll('ID=' + str(myID) ,delay = 80)\r\n            #sleep(200)\r\n            #display.clear()\r\n        elif btnChk is False and grChk is True:#group count mode\r\n            if grCount &lt; 20:\r\n               grCount += 1\r\n            else:\r\n                grCount = 0\r\n            display.scroll('GR=' + str(grCount) ,delay = 80)\r\n        else:#normal mode\r\n            if(idDic):\r\n                mList2 = []#initialize and clear\r\n                for k, v in idDic.items():\r\n                    sabun2 = timA - v\r\n                    if sabun2 &lt; 10000:#if 20sec no access\r\n                        mList2.append(k)\r\n                nagasa = int(len(mList2)) + 1#own ID add\r\n                display.scroll(str(nagasa), delay = 80)\r\n                if nagasa == int(grCount):\r\n                    display.scroll('OK!', delay = 80)\r\n                    missing = False\r\n                elif nagasa &lt; int(grCount):\r\n                    display.show(Image.SAD)\r\n                else:\r\n                    display.scroll('??', delay = 100)\r\n                    ##music.play(tune2)\r\n                radio.send(str(myID) + ',' +  str(grCount) + ',nohelp,noset')\r\n            else:\r\n                display.show(Image.DUCK)\r\n            sleep(500)\r\n            display.clear()\r\n            \r\n    elif button_b.is_pressed():\r\n        if btnChk is False and grChk is False:#HELP SEND\r\n            radio.config(power=7)#HelpMode\r\n            radio.send(str(myID) + ',' +  str(grCount) + ',HELP' + ',noset')\r\n            radio.config(power=5)#HelpMode\r\n            display.scroll('HELP')\r\n            sleep(800)\r\n            display.clear()\r\n        elif btnChk is False and grChk is True:#end gr set mode\r\n            btnChk = False #end set mode\r\n            grChk = False #end shake mode\r\n            radio.send(str(myID) + ',' +  str(grCount) + ',nohelp' + ',set')\r\n            display.show(Image.YES)\r\n            sleep(500)\r\n            display.clear()\r\n            #File Save\r\n            saveConfig = str(myID) + ',' + str(grCount)\r\n            with open('config.txt', 'w') as my_conf:#save list my_conf\r\n                my_conf.write(saveConfig)\r\n            #with open('gr.txt', 'w') as gr_id:\r\n            #    gr_id.write(str(grCount))\r\n        elif btnChk is True and grChk is False:#end id set mode\r\n            btnChk = False\r\n            grChk = True#to Group set mode\r\n            display.show(Image.YES)\r\n            sleep(500)\r\n            display.clear()\r\n            display.scroll('GR=' + str(grCount))\r\n    #else:\r\n        #display.scroll('')\r\n        \r\n    #radio message 'myID,grCount,HELP'\r\n    try:\r\n        s = radio.receive()\r\n        if(s):\r\n            sList = s.split(',')#split by , to list\r\n            if sList[2] == 'HELP':\r\n                display.scroll('!')\r\n                music.play(music.BADDY)\r\n                display.show(Image.SAD)\r\n                sleep(3000)\r\n                display.clear()\r\n            elif btnChk is False and grChk is False:\r\n                if sList[3] == 'set':\r\n                    grCount = sList[1]\r\n                    saveConfig = str(myID) + ',' + str(grCount)\r\n                    display.scroll('GR=' + str(grCount))\r\n                    with open('config.txt', 'w') as gr_id:\r\n                        gr_id.write(saveConfig)\r\n                #elif sList[2] == 'nohelp' and sList[3] == 'noset':\r\n                else:#recieve ID check\r\n                    if(not myID == sList[0]):#without own device\r\n                        #time check\r\n                        nowTime = running_time()\r\n                        if(not idDic.get(sList[0])):#not in dictionary add ID and time\r\n                            updValue = {sList[0] : nowTime} \r\n                            idDic.update(updValue)\r\n                            #music.play(tune3)\r\n                        else:\r\n                            updValue = {sList[0]:nowTime} \r\n                            idDic.update(updValue)\r\n    except ValueError:#PacketError\r\n        display.show(Image.DUCK)\r\n        radio.reset()\r\n        sleep(200)\r\n        radio.config(channel=10, power=5, length =64)\r\n        display.clear()\r\n        \r\n    #send Beacon interval time            \r\n    timA = running_time()\r\n    if timA &gt; timB:\r\n        #del IDlist[:]#initialaize list\r\n        if btnChk is False and grChk is False:\r\n            radio.send(str(myID) + ',' +  str(grCount) + ',nohelp,noset')\r\n        #display.scroll(str(timA))\r\n            timB = timA + interval\r\n            #display.show(Image.PITCHFORK)\r\n            #sleep(100)\r\n            #display.clear()\r\n            #music.play(tune1)\r\n        \r\n    if(idDic):\r\n        mList = []#initialize and clear\r\n        #mList.clear()#need()?\r\n        for k, v in idDic.items():\r\n            sabun2 = timA - v\r\n            if sabun2 &gt; 200000:#200sec\r\n                mList.append(k)\r\n        \r\n        if(mList):\r\n            \r\n            ids  = ''\r\n            for t in mList:\r\n                ids += t + '_'\r\n            #display.scroll('ID=' + ids + 'missing', delay = 200)\r\n            if missing is False:\r\n                music.play(music.POWER_DOWN)\r\n                missing = True\r\n            display.scroll('ID' + ids + 'missing')\r\n            sleep(5000)\r\n\r\n    #sleep(100)<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u652f\u63f4\u30c7\u30d0\u30a4\u30b9Ver6\u30b3\u30fc\u30c9 # ODEKAKE Beacon 2018ver4 from microbit import * #import microbit import music import radio impo &hellip; <a href=\"https:\/\/nantoka.filmm.info\/blog\/?p=2746\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">\u652f\u63f4\u30c7\u30d0\u30a4\u30b9\u3000Ver6\u30b3\u30fc\u30c9<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,54,51],"tags":[],"class_list":["post-2746","post","type-post","status-publish","format-standard","hentry","category-iot","category-microbit","category-python"],"_links":{"self":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2746","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2746"}],"version-history":[{"count":3,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2746\/revisions"}],"predecessor-version":[{"id":2752,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2746\/revisions\/2752"}],"wp:attachment":[{"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2746"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2746"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nantoka.filmm.info\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}