Refactored LAN final automate (Ethernet2 lib update required)

This commit is contained in:
2020-10-05 03:50:23 +03:00
parent 38cd7baf58
commit 13efb609d3
26 changed files with 27074 additions and 26300 deletions

View File

@@ -1,10 +1,10 @@
-DW5500_CS_PIN=53 -DW5500_CS_PIN=53
-DARTNET_ENABLE -DARTNET_ENABLE
-DDMX_SMOOTH -DDMX_SMOOTH
-DMODBUS_DIMMER_PARAM=SERIAL_8N1 -DMODBUS_DIMMER_PARAM=SERIAL_8E1
-DMODBUS_SERIAL_BAUD=9600 -DMODBUS_SERIAL_BAUD=9600
-DOTA -DOTA
-DSYSLOG_ENABLE -DSYSLOG_ENABLE
-DWiz5500 #-DWiz5500
-DSTATUSLED -DSTATUSLED
-DMCP23017 -DMCP23017

View File

@@ -0,0 +1,137 @@
:20000000A7C00000C0C00000BEC00000BCC00000BAC00000B8C00000B6C00000B4C0000023
:20002000B2C00000B0C00000AEC00000CBC400008FC40000A8C00000A6C00000A4C000005C
:20004000A2C00000A0C000009EC000009CC000009AC0000098C0000096C0000021C100003A
:2000600092C0000090C000008EC000008CC000008AC0000088C0000086C0000084C0000028
:2000800082C0000080C000007EC000007CC000007AC0000078C000001201100102000008C4
:2000A00041233D0001000102DC0109023E00020100C0320904000001020201000524000143
:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC
:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA
:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D
:200120002E03410072006400750069006E006F0020004400750065002000500072006F002D
:2001400067002E00200050006F0072007400000011241FBECFEFD2E0DEBFCDBF11E0A0E029
:20016000B1E0E8EEF0E102C005900D92A831B107D9F712E0A8E1B1E001C01D92A833B107E1
:20018000E1F722D1AFC73CCF9C01DC01AE57BF4FED91FC91119741911196FC93EE93805872
:2001A0009F4FE817F90711F42D933C939FB7F894F901EC57FF4F8081815080839FBF842F6B
:2001C0000895882311F03F9A01C03F9847980895882311F046980895469A0895DF92EF9253
:2001E000FF920F931F93FC018489813019F0823019F404C010E303C010E001C010E283896E
:20020000823009F418608589873031F0883031F0863029F4126003C0146001C016601092A3
:20022000C9001092C8001092CA000785F088E188D288202F3F2D4E2D5D2D10921E01203B7C
:2002400084E0380780E0480780E0580719F481E080931E01CA01B90122E030E040E050E006
:2002600026D720583B47414E5F4FCA01B901202F3F2D4E2D5D2DF9D6215030403093CD00C5
:200280002093CC001093CA0082E08093C80088E98093C9001F910F91FF90EF90DF9008957E
:2002A0001F920F920FB60F9211242F938F939F93EF93FF939091CE008EB38430F1F4E091ED
:2002C000A201F091A3019083E091A201F091A301CF0101969093A3018093A201825A914079
:2002E00021F482E291E0928381839FB7F8948091A6018F5F8093A6019FBFFF91EF919F911B
:200300008F912F910F900FBE0F901F901895FC0140911A0140931B0180911C0180931D015F
:200320008585282F30E02170307020931A01858590E096958795817080931C0180911E013B
:20034000882339F08FE590E090931901809318010895442341F4222331F08EE190E09093DB
:20036000190180931801089580E091E014C680E091E0C7C51F9384B7877F84BF18E10FB69E
:20038000F89410936000109260000FBE80E019DF469A3E9A87E690E09093CD008093CC0043
:2003A00086E08093CA001092C8001093C900539A5A9A8AB180638AB98BB180638BB9BDD2F0
:2003C00084E085BD1F9108950F931F93CF93DF93D1DF2FB7F89487EA91E09093280280939E
:2003E000270290932A02809329022FBF2FB7F89482E291E09093A3018093A2019093A501CC
:200400008093A4012FBF7894C7EAD1E003E08FB7F89490912B028FBF903809F180E091E0E4
:20042000E6D497FD1CC0E0912702F09128028083E0912702F0912802CF0101969093280251
:20044000809327028752924011F4D283C1839FB7F89480912B028F5F80932B029FBF8FB725
:20046000F8941091A6018FBFA89903C0113608F469C0A89A8091A601882361F05D9800936C
:200480001F0108C082E291E07FDE682F80E091E014D511501123B1F780911F01882351F097
:2004A00080911F01815080931F0180911F01882309F45D9A80912001882351F080912001E7
:2004C00081508093200180912001882309F45C9A8091180190911901181619067CF58F3560
:2004E000910521F481E074DE80E06BDE8091180190911901839721F480E06ADE80E061DE1A
:200500008091180190911901499721F480E060DE81E057DE8091180190911901019721F43B
:2005200080E056DE80E04DDE80911801909119010197909319018093180104C080E048DEEC
:2005400080E03FDE8FB7F89490912B028FBF992369F087EA91E018DE982F8091C80085FF9F
:20056000FCCF9093CE005C980093200180E091E095D42AD44CCFDA01923049F0933061F0DA
:200580009130F9F4E8E9F0E022E130E01EC0EAEAF0E02EE330E019C0813049F0813018F0DA
:2005A000823079F408C0E8EEF0E0849107C0ECEEF0E0849103C0E0E2F1E08491282F30E041
:2005C00004C0E0E0F0E020E030E0ED93FC93C901089528E030E040E003C04F5F220F331F15
:2005E00028173907D0F3842F8295807F08958093E9008091EB0081608093EB001092ED00ED
:200600006093EC004093ED008091EE00881F8827881F08951092F40090E09093E9001092EE
:20062000F0001092E8001092ED008091EB008E7F8093EB009F5F953081F70895809130028F
:2006400088238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008954A
:200660008EB3882349F08091E80080FFF9CF8091E8008E778093E800089594E68091EC0008
:2006800080FF05C08091E80080FF05C023C08091E80082FD1FC08EB3882311F482E00895AF
:2006A0008EB3853011F483E008958091EB0085FF02C081E008958091E10082FFDFCF8091CD
:2006C000E1008B7F8093E100992311F484E008959150D4CF80E008959C0140913602509171
:2006E00037024617570718F4F90120E038C06115710511F0AB01F8CF8091E8008E77809397
:20070000E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC08EB3882356
:2007200081F18EB3853079F18091E80080FF17C09091F20006C081918093F1004150504088
:200740009F5F4115510511F09830A8F320E0983009F421E08091E8008E778093E800411576
:20076000510591F6222381F606C08EB3882349F08EB3853041F08091E80082FFF6CF80E02F
:20078000089582E0089583E008959C0140913602509137024617570710F490E03BC061155D
:2007A000710511F0AB01F9CF8091E8008E778093E80040E050E0F1CF8091E80083FF02C008
:2007C00081E008958091E80082FD30C08EB3882399F18EB3853091F18091E80080FF1AC073
:2007E0008091F20009C0F9012F5F3F4FE491E093F100415050408F5F4115510511F08830CA
:2008000090F390E0883009F491E08091E8008E778093E8004115510579F6992369F606C0CA
:200820008EB3882349F08EB3853041F08091E80082FFF6CF80E0089582E0089583E0089531
:200840009C016115710529F48091E8008B778093E800F90120C08091E80083FF02C081E084
:2008600008958EB3882339F18EB3853031F18091E80082FFF0CF06C08091F10081936150E7
:20088000704021F08091F2008823B1F78091E8008B778093E80061157105E9F606C08EB379
:2008A000882349F08EB3853041F08091E80080FFF6CF80E0089582E0089583E0089542D0E2
:2008C00044D01EBA10922E0210922D0210922C0284E089BD89B5826089BD09B400FEFDCF22
:2008E0008091D800982F9F779093D80080688093D800809163008E7F809363008091D80084
:200900008F7D8093D8008091E0008E7F8093E0008091E1008E7F8093E1008091E200816028
:200920008093E2008091E100877F8093E1008091E20088608093E2000895C1DF81E0809355
:200940002F0208951092E20008951092E10008951F920F920FB60F9211241F932F933F9355
:200960004F935F936F937F938F939F93AF93BF93EF93FF93E9EEF0E0108117701082E0EF73
:20098000F0E08081877F80837894C3D0F894A9EEB0E01C92E0EFF0E08081886080831C9343
:2009A000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F910F900FBE0F901C
:2009C0001F9018951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF93BC
:2009E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E10009
:200A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC8D
:200A20001EBAD1D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B4B6
:200A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E6
:200A6000E2008091E20081608093E20080912E02882311F481E001C084E08EBBA4D1809185
:200A8000E10083FF27C08091E20083FF23C08091E100877F8093E10082E08EBB10922E024B
:200AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200AADDFE
:200AC00080E060E042E093DD8091F00088608093F00079D18091E10082FF0AC08091E2007E
:200AE00082FF06C08091E1008B7F8093E1006BD1FF91EF91BF91AF919F918F917F916F9183
:200B00005F914F913F912F910F900FBE0F901F9018951F93DF93CF93CDB7DEB7AC970FB667
:200B2000F894DEBF0FBECDBFE0E3F2E08091F100819322E0E833F207C9F7809130023091AE
:200B40003102353009F487C0363040F43130C9F1313070F0333009F01DC133C0383009F4B1
:200B6000EFC0393009F4FEC0363009F013C192C0803821F0823809F00DC108C090912C02BC
:200B800080912D02882399F0926011C08091340287708093E9008091EB0090E025E0969548
:200BA00087952A95E1F7982F91701092E9008091E800877F8093E8009093F1001092F1008E
:200BC000CAC0882319F0823009F0E4C090E08F719070009721F0029709F0DDC00CC0809164
:200BE0003202813009F0D7C010922D02333069F580932D022AC080913202882331F52091FB
:200C00003402277009F4C7C02093E9008091EB0080FFC1C0333021F48091EB00806213C0C2
:200C20008091EB0080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA00D6
:200C40008091EB0088608093EB001092E9008091E800877F83C0882309F09CC01091320210
:200C60008091E800877F8093E800E8DC04C08EB3882309F490C08091E80080FFF8CF812FCA
:200C80008F7711F492E001C093E09EBB80688093E30081C08058823008F07CC08091320228
:200CA0009091330223E08C3D920799F55FB7F894DE0115964EE020E030E061E2E42FF0E05B
:200CC00060935700849120FF03C082958F704F5F982F9F70892F805D8A3308F0895F8C93E8
:200CE00011961C9211972F5F3F4F12962431310529F75FBF8AE28B8383E08C838091E80085
:200D0000877F8093E800CE0103966AE270E0E4DC11C060913402AE014F5F5F4F2CDCBC0146
:200D20000097C9F18091E800877F8093E80089819A812BDD8091E8008B778093E8002BC05A
:200D4000803841F58091E800877F8093E80080912E028093F1008091E8008E778093E8006D
:200D60006DDC19C08823B1F490913202923098F48091E800877F8093E80090932E025EDCD7
:200D800080912E02882311F483E001C084E08EBBEEDA01C0E9DA8091E80083FF0AC08091EF
:200DA000EB0080628093EB008091E800877F8093E800AC960FB6F894DEBF0FBECDBFCF9185
:200DC000DF911F91089508951F938EB3882361F01091E9001092E9008091E80083FF01C079
:200DE00098DE17701093E9001F9108950895FC018EB3843021F587859089A189B289009757
:200E0000A105B105E1F085818093E9008091E80082FF15C08091F200882319F42FEF3FEF4D
:200E200004C08091F100282F30E08091F200882341F48091E8008B778093E80002C02FEFCC
:200E40003FEFC9010895FC018EB3843011F587859089A189B2890097A105B105D1F08181C5
:200E60008093E9008091F2008823A9F09091E8008091E8008E778093E80095FD0CC0FDDBF7
:200E8000982F882349F48091E8008E778093E80003C092E001C090E0892F0895FC018EB3B1
:200EA000843051F487859089A189B2890097A105B10511F0CF01C7CF08951F93FC01162FC4
:200EC0008EB38430D9F487859089A189B2890097A105B10599F081818093E9008091E80053
:200EE00085FD08C08091E8008E778093E800C5DB882329F41093F10080E001C082E01F9180
:200F000008950F931F93CF93DF93EC010D96FC0189E0DF011D928A95E9F72A813B81098197
:200F20008C81882311F410E001C014E0C90151DB182B1260802F61E8412F59DB882329F143
:200F40002E813F810D818885882311F410E001C014E0C9013EDB182B1260802F60E8412F33
:200F600046DB882391F02A853B8509858C85882311F410E001C014E0C9012BDB182B12603C
:200F8000802F61EC412F33DB01C080E0DF91CF911F910F910895CF93DF93EC018091E8003F
:200FA00083FF60C0888190E020913402309135022817390709F056C080913102813261F061
:200FC000823220F4803209F04DC019C0823269F1833209F047C038C080913002813A09F006
:200FE00041C08091E800877F8093E800CE010F9667E070E071DB8091E8008B7713C08091C0
:201000003002813279F58091E800877F8093E800CE010F9667E070E013DCCE01DFD88091F2
:20102000E8008E778093E8001DC0809130028132C9F48091E800877F8093E80080913202F9
:201040008D87CE0164D90DC080913002813251F48091E800877F8093E800CE01609132027A
:20106000C5DEECDADF91CF910895A1E21A2EAA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA217E2
:20108000B307E407F50720F0A21BB30BE40BF50B661F771F881F991F1A9469F760957095B3
:2010A000809590959B01AC01BD01CF01089597FB092E05260ED057FD04D0D7DF0AD0001CDC
:2010C00038F450954095309521953F4F4F4F5F4F0895F6F790958095709561957F4F8F4F6A
:2010E0009F4F0895F894FFCF00034000000440000002080000000000000000000000140066
:00000001FF

View File

@@ -0,0 +1,137 @@
:20000000A7C00000C0C00000BEC00000BCC00000BAC00000B8C00000B6C00000B4C0000023
:20002000B2C00000B0C00000AEC00000C1C4000085C40000A8C00000A6C00000A4C0000070
:20004000A2C00000A0C000009EC000009CC000009AC0000098C0000096C0000021C100003A
:2000600092C0000090C000008EC000008CC000008AC0000088C0000086C0000084C0000028
:2000800082C0000080C000007EC000007CC000007AC0000078C000001201100102000008C4
:2000A00041233D0001000102DC0109023E00020100C0320904000001020201000524000143
:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC
:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA
:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D
:200120002E03410072006400750069006E006F0020004400750065002000500072006F002D
:2001400067002E00200050006F0072007400000011241FBECFEFD2E0DEBFCDBF11E0A0E029
:20016000B1E0E4EDF0E102C005900D92A831B107D9F712E0A8E1B1E001C01D92A833B107E6
:20018000E1F72BD1A5C73CCF9C01DC01AE57BF4FED91FC91119741911196FC93EE93805873
:2001A0009F4FE817F90711F42D933C939FB7F894F901EC57FF4F8081815080839FBF842F6B
:2001C0000895882311F03F9A01C03F9847980895882311F046980895469A0895DF92EF9253
:2001E000FF920F931F93FC018489813019F0823019F404C010E303C010E001C010E283896E
:20020000823009F418608589873031F0883031F0863029F4126003C0146001C016601092A3
:20022000C9001092C8001092CA000785F088E188D288202F3F2D4E2D5D2D10921E01203B7C
:2002400084E0380780E0480780E0580719F481E080931E01CA01B90122E030E040E050E006
:200260001CD720583B47414E5F4FCA01B901202F3F2D4E2D5D2DEFD6215030403093CD00D9
:200280002093CC001093CA0082E08093C80088E98093C9001F910F91FF90EF90DF9008957E
:2002A0001F920F920FB60F9211242F938F939F93EF93FF939091CE008EB38430F1F4E091ED
:2002C000A201F091A3019083E091A201F091A301CF0101969093A3018093A201825A914079
:2002E00021F482E291E0928381839FB7F8948091A6018F5F8093A6019FBFFF91EF919F911B
:200300008F912F910F900FBE0F901F901895FC0140911A0140931B0180911C0180931D015F
:200320008585282F30E02170307020931A01858590E096958795817080931C0180911E013B
:20034000882339F088E790E090931901809318010895442341F4222331F082E390E09093EA
:20036000190180931801089580E091E00AC680E091E0BDC584B7877F84BF88E10FB6F89468
:2003800080936000109260000FBE81E01ADF16BC83E085BD86B58831E8F315BC16BC80E078
:2003A00010DF469A3E9A87E690E09093CD008093CC0086E08093CA001092C80088E18093C1
:2003C000C900539A5A9A8AB180638AB98BB180638BB9A9D284E085BD08950F931F93CF933B
:2003E000DF93C8DF2FB7F89487EA91E0909328028093270290932A02809329022FBF2FB7A6
:20040000F89482E291E09093A3018093A2019093A5018093A4012FBF7894C7EAD1E003E03E
:200420008FB7F89490912B028FBF903809F180E091E0D3D497FD1CC0E0912702F09128025F
:200440008083E0912702F0912802CF01019690932802809327028752924011F4D283C1831B
:200460009FB7F89480912B028F5F80932B029FBF8FB7F8941091A6018FBFA89903C011361D
:2004800008F456C0A89A8091A601882361F05D9800931F0108C082E291E076DE682F80E0C4
:2004A00091E001D511501123B1F780911F01882351F080911F01815080931F0180911F0135
:2004C000882309F45D9A80912001882351F08091200181508093200180912001882309F44E
:2004E0005C9A809118019091190118161906E4F4CC97CD9710F481E001C080E069DE8091D7
:200500001801909119010197C29710F481E001C080E057DE809118019091190101979093BB
:2005200019018093180104C080E052DE80E049DE8FB7F89490912B028FBF992369F087EAA6
:2005400091E022DE982F8091C80085FFFCCF9093CE005C980093200180E091E095D42AD46A
:200560005FCFDA01923049F0933061F09130F9F4E8E9F0E022E130E01EC0EAEAF0E02EE36E
:2005800030E019C0813049F0813018F0823079F408C0E8EEF0E0849107C0ECEEF0E08491A7
:2005A00003C0E0E2F1E08491282F30E004C0E0E0F0E020E030E0ED93FC93C901089528E087
:2005C00030E040E003C04F5F220F331F28173907D0F3842F8295807F08958093E900809142
:2005E000EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F08956A
:200600001092F40090E09093E9001092F0001092E8001092ED008091EB008E7F8093EB0016
:200620009F5F953081F708958091300288238CF403C08EB38823B1F08091E80082FFF9CFE2
:200640008091E8008B778093E80008958EB3882349F08091E80080FFF9CF8091E8008E77A4
:200660008093E800089594E68091EC0080FF05C08091E80080FF05C023C08091E80082FD8F
:200680001FC08EB3882311F482E008958EB3853011F483E008958091EB0085FF02C081E0ED
:2006A00008958091E10082FFDFCF8091E1008B7F8093E100992311F484E008959150D4CF46
:2006C00080E008959C0140913602509137024617570718F4F90120E038C06115710511F0B7
:2006E000AB01F8CF8091E8008E778093E80040E050E0F0CF8091E80083FF02C081E0089544
:200700008091E80082FD2DC08EB3882381F18EB3853079F18091E80080FF17C09091F20054
:2007200006C081918093F100415050409F5F4115510511F09830A8F320E0983009F421E0E8
:200740008091E8008E778093E8004115510591F6222381F606C08EB3882349F08EB38530D0
:2007600041F08091E80082FFF6CF80E0089582E0089583E008959C0140913602509137024D
:200780004617570710F490E03BC06115710511F0AB01F9CF8091E8008E778093E80040E0B5
:2007A00050E0F1CF8091E80083FF02C081E008958091E80082FD30C08EB3882399F18EB3EF
:2007C000853091F18091E80080FF1AC08091F20009C0F9012F5F3F4FE491E093F100415044
:2007E00050408F5F4115510511F0883090F390E0883009F491E08091E8008E778093E80004
:200800004115510579F6992369F606C08EB3882349F08EB3853041F08091E80082FFF6CF51
:2008200080E0089582E0089583E008959C016115710529F48091E8008B778093E800F90126
:2008400020C08091E80083FF02C081E008958EB3882339F18EB3853031F18091E80082FFD5
:20086000F0CF06C08091F10081936150704021F08091F2008823B1F78091E8008B77809307
:20088000E80061157105E9F606C08EB3882349F08EB3853041F08091E80080FFF6CF80E0F6
:2008A000089582E0089583E0089542D044D01EBA10922E0210922D0210922C0284E089BD81
:2008C00089B5826089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809186
:2008E00063008E7F809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1004F
:200900008E7F8093E1008091E20081608093E2008091E100877F8093E1008091E200886046
:200920008093E2000895C1DF81E080932F0208951092E20008951092E10008951F920F92B0
:200940000FB60F9211241F932F933F934F935F936F937F938F939F93AF93BF93EF93FF93D2
:20096000E9EEF0E0108117701082E0EFF0E08081877F80837894C3D0F894A9EEB0E01C927D
:20098000E0EFF0E08081886080831C93FF91EF91BF91AF919F918F917F916F915F914F914D
:2009A0003F912F911F910F900FBE0F901F9018951F920F920FB60F9211242F933F934F932D
:2009C0005F936F937F938F939F93AF93BF93EF93FF938091E10080FF1BC08091E20080FF57
:2009E00017C08091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E2006F
:200A00008091D80080628093D80019BC1EBAD1D18091E10084FF29C08091E20084FF25C018
:200A200084E089BD89B5826089BD09B400FEFDCF8091D8008F7D8093D8008091E1008F7E40
:200A40008093E1008091E2008F7E8093E2008091E20081608093E20080912E02882311F4F3
:200A600081E001C084E08EBBA4D18091E10083FF27C08091E20083FF23C08091E100877F87
:200A80008093E10082E08EBB10922E028091E1008E7F8093E1008091E2008E7F8093E200FD
:200AA0008091E20080618093E200AADD80E060E042E093DD8091F00088608093F00079D17E
:200AC0008091E10082FF0AC08091E20082FF06C08091E1008B7F8093E1006BD1FF91EF9163
:200AE000BF91AF919F918F917F916F915F914F913F912F910F900FBE0F901F9018951F938D
:200B0000DF93CF93CDB7DEB7AC970FB6F894DEBF0FBECDBFE0E3F2E08091F100819322E0B1
:200B2000E833F207C9F78091300230913102353009F487C0363040F43130C9F1313070F08B
:200B4000333009F01DC133C0383009F4EFC0393009F4FEC0363009F013C192C0803821F0E2
:200B6000823809F00DC108C090912C0280912D02882399F0926011C0809134028770809355
:200B8000E9008091EB0090E025E0969587952A95E1F7982F91701092E9008091E800877FCB
:200BA0008093E8009093F1001092F100CAC0882319F0823009F0E4C090E08F7190700097FF
:200BC00021F0029709F0DDC00CC080913202813009F0D7C010922D02333069F580932D02AF
:200BE0002AC080913202882331F520913402277009F4C7C02093E9008091EB0080FFC1C05B
:200C0000333021F48091EB00806213C08091EB0080618093EB0081E090E002C0880F991FEE
:200C20002A95E2F78093EA001092EA008091EB0088608093EB001092E9008091E800877F27
:200C400083C0882309F09CC0109132028091E800877F8093E800E8DC04C08EB3882309F411
:200C600090C08091E80080FFF8CF812F8F7711F492E001C093E09EBB80688093E30081C00C
:200C80008058823008F07CC0809132029091330223E08C3D920799F55FB7F894DE011596DC
:200CA0004EE020E030E061E2E42FF0E060935700849120FF03C082958F704F5F982F9F70F5
:200CC000892F805D8A3308F0895F8C9311961C9211972F5F3F4F12962431310529F75FBF39
:200CE0008AE28B8383E08C838091E800877F8093E800CE0103966AE270E0E4DC11C0609188
:200D00003402AE014F5F5F4F2CDCBC010097C9F18091E800877F8093E80089819A812BDD55
:200D20008091E8008B778093E8002BC0803841F58091E800877F8093E80080912E02809396
:200D4000F1008091E8008E778093E8006DDC19C08823B1F490913202923098F48091E8009B
:200D6000877F8093E80090932E025EDC80912E02882311F483E001C084E08EBBF8DA01C090
:200D8000F3DA8091E80083FF0AC08091EB0080628093EB008091E800877F8093E800AC9629
:200DA0000FB6F894DEBF0FBECDBFCF91DF911F91089508951F938EB3882361F01091E900B9
:200DC0001092E9008091E80083FF01C098DE17701093E9001F9108950895FC018EB38430E7
:200DE00021F587859089A189B2890097A105B105E1F085818093E9008091E80082FF15C03E
:200E00008091F200882319F42FEF3FEF04C08091F100282F30E08091F200882341F48091AA
:200E2000E8008B778093E80002C02FEF3FEFC9010895FC018EB3843011F587859089A18911
:200E4000B2890097A105B105D1F081818093E9008091F2008823A9F09091E8008091E8005C
:200E60008E778093E80095FD0CC0FDDB982F882349F48091E8008E778093E80003C092E05F
:200E800001C090E0892F0895FC018EB3843051F487859089A189B2890097A105B10511F017
:200EA000CF01C7CF08951F93FC01162F8EB38430D9F487859089A189B2890097A105B105FC
:200EC00099F081818093E9008091E80085FD08C08091E8008E778093E800C5DB882329F4E7
:200EE0001093F10080E001C082E01F9108950F931F93CF93DF93EC010D96FC0189E0DF0190
:200F00001D928A95E9F72A813B8109818C81882311F410E001C014E0C90151DB182B126025
:200F2000802F61E8412F59DB882329F12E813F810D818885882311F410E001C014E0C90127
:200F40003EDB182B1260802F60E8412F46DB882391F02A853B8509858C85882311F410E061
:200F600001C014E0C9012BDB182B1260802F61EC412F33DB01C080E0DF91CF911F910F917C
:200F80000895CF93DF93EC018091E80083FF60C0888190E020913402309135022817390781
:200FA00009F056C080913102813261F0823220F4803209F04DC019C0823269F1833209F0C5
:200FC00047C038C080913002813A09F041C08091E800877F8093E800CE010F9667E070E015
:200FE00071DB8091E8008B7713C080913002813279F58091E800877F8093E800CE010F9605
:2010000067E070E013DCCE01E9D88091E8008E778093E8001DC0809130028132C9F4809120
:20102000E800877F8093E800809132028D87CE016ED90DC080913002813251F48091E80057
:20104000877F8093E800CE0160913202C5DEECDADF91CF910895A1E21A2EAA1BBB1BFD0161
:201060000DC0AA1FBB1FEE1FFF1FA217B307E407F50720F0A21BB30BE40BF50B661F771FE6
:20108000881F991F1A9469F760957095809590959B01AC01BD01CF01089597FB092E052647
:2010A0000ED057FD04D0D7DF0AD0001C38F450954095309521953F4F4F4F5F4F0895F6F7B9
:2010C00090958095709561957F4F8F4F9F4F0895F894FFCF000340000004400000020800B9
:0C10E000000000000000000000001400F0
:00000001FF

View File

@@ -0,0 +1,137 @@
:20000000A7C00000C0C00000BEC00000BCC00000BAC00000B8C00000B6C00000B4C0000023
:20002000B2C00000B0C00000AEC00000C1C4000085C40000A8C00000A6C00000A4C0000070
:20004000A2C00000A0C000009EC000009CC000009AC0000098C0000096C0000021C100003A
:2000600092C0000090C000008EC000008CC000008AC0000088C0000086C0000084C0000028
:2000800082C0000080C000007EC000007CC000007AC0000078C000001201100102000008C4
:2000A00041233D0001000102DC0109023E00020100C0320904000001020201000524000143
:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC
:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA
:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D
:200120002E03410072006400750069006E006F0020004400750065002000500072006F002D
:2001400067002E00200050006F0072007400000011241FBECFEFD2E0DEBFCDBF11E0A0E029
:20016000B1E0E4EDF0E102C005900D92A831B107D9F712E0A8E1B1E001C01D92A833B107E6
:20018000E1F72BD1A5C73CCF9C01DC01AE57BF4FED91FC91119741911196FC93EE93805873
:2001A0009F4FE817F90711F42D933C939FB7F894F901EC57FF4F8081815080839FBF842F6B
:2001C0000895882311F03F9A01C03F9847980895882311F046980895469A0895DF92EF9253
:2001E000FF920F931F93FC018489813019F0823019F404C010E303C010E001C010E283896E
:20020000823009F418608589873031F0883031F0863029F4126003C0146001C016601092A3
:20022000C9001092C8001092CA000785F088E188D288202F3F2D4E2D5D2D10921E01203B7C
:2002400084E0380780E0480780E0580719F481E080931E01CA01B90122E030E040E050E006
:200260001CD720583B47414E5F4FCA01B901202F3F2D4E2D5D2DEFD6215030403093CD00D9
:200280002093CC001093CA0082E08093C80088E98093C9001F910F91FF90EF90DF9008957E
:2002A0001F920F920FB60F9211242F938F939F93EF93FF939091CE008EB38430F1F4E091ED
:2002C000A201F091A3019083E091A201F091A301CF0101969093A3018093A201825A914079
:2002E00021F482E291E0928381839FB7F8948091A6018F5F8093A6019FBFFF91EF919F911B
:200300008F912F910F900FBE0F901F901895FC0140911A0140931B0180911C0180931D015F
:200320008585282F30E02170307020931A01858590E096958795817080931C0180911E013B
:20034000882339F088E790E090931901809318010895442341F4222331F082E390E09093EA
:20036000190180931801089580E091E00AC680E091E0BDC584B7877F84BF88E10FB6F89468
:2003800080936000109260000FBE81E01ADF16BC83E085BD86B58831E8F315BC16BC80E078
:2003A00010DF469A3E9A87E690E09093CD008093CC0086E08093CA001092C80088E18093C1
:2003C000C900539A5A9A8AB180638AB98BB180638BB9A9D284E085BD08950F931F93CF933B
:2003E000DF93C8DF2FB7F89487EA91E0909328028093270290932A02809329022FBF2FB7A6
:20040000F89482E291E09093A3018093A2019093A5018093A4012FBF7894C7EAD1E003E03E
:200420008FB7F89490912B028FBF903809F180E091E0D3D497FD1CC0E0912702F09128025F
:200440008083E0912702F0912802CF01019690932802809327028752924011F4D283C1831B
:200460009FB7F89480912B028F5F80932B029FBF8FB7F8941091A6018FBFA89903C011361D
:2004800008F456C0A89A8091A601882361F05D9800931F0108C082E291E076DE682F80E0C4
:2004A00091E001D511501123B1F780911F01882351F080911F01815080931F0180911F0135
:2004C000882309F45D9A80912001882351F08091200181508093200180912001882309F44E
:2004E0005C9A809118019091190118161906E4F4CC97CD9710F481E001C080E069DE8091D7
:200500001801909119010197C29710F481E001C080E057DE809118019091190101979093BB
:2005200019018093180104C080E052DE80E049DE8FB7F89490912B028FBF992369F087EAA6
:2005400091E022DE982F8091C80085FFFCCF9093CE005C980093200180E091E095D42AD46A
:200560005FCFDA01923049F0933061F09130F9F4E8E9F0E022E130E01EC0EAEAF0E02EE36E
:2005800030E019C0813049F0813018F0823079F408C0E8EEF0E0849107C0ECEEF0E08491A7
:2005A00003C0E0E2F1E08491282F30E004C0E0E0F0E020E030E0ED93FC93C901089528E087
:2005C00030E040E003C04F5F220F331F28173907D0F3842F8295807F08958093E900809142
:2005E000EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881F08956A
:200600001092F40090E09093E9001092F0001092E8001092ED008091EB008E7F8093EB0016
:200620009F5F953081F708958091300288238CF403C08EB38823B1F08091E80082FFF9CFE2
:200640008091E8008B778093E80008958EB3882349F08091E80080FFF9CF8091E8008E77A4
:200660008093E800089594E68091EC0080FF05C08091E80080FF05C023C08091E80082FD8F
:200680001FC08EB3882311F482E008958EB3853011F483E008958091EB0085FF02C081E0ED
:2006A00008958091E10082FFDFCF8091E1008B7F8093E100992311F484E008959150D4CF46
:2006C00080E008959C0140913602509137024617570718F4F90120E038C06115710511F0B7
:2006E000AB01F8CF8091E8008E778093E80040E050E0F0CF8091E80083FF02C081E0089544
:200700008091E80082FD2DC08EB3882381F18EB3853079F18091E80080FF17C09091F20054
:2007200006C081918093F100415050409F5F4115510511F09830A8F320E0983009F421E0E8
:200740008091E8008E778093E8004115510591F6222381F606C08EB3882349F08EB38530D0
:2007600041F08091E80082FFF6CF80E0089582E0089583E008959C0140913602509137024D
:200780004617570710F490E03BC06115710511F0AB01F9CF8091E8008E778093E80040E0B5
:2007A00050E0F1CF8091E80083FF02C081E008958091E80082FD30C08EB3882399F18EB3EF
:2007C000853091F18091E80080FF1AC08091F20009C0F9012F5F3F4FE491E093F100415044
:2007E00050408F5F4115510511F0883090F390E0883009F491E08091E8008E778093E80004
:200800004115510579F6992369F606C08EB3882349F08EB3853041F08091E80082FFF6CF51
:2008200080E0089582E0089583E008959C016115710529F48091E8008B778093E800F90126
:2008400020C08091E80083FF02C081E008958EB3882339F18EB3853031F18091E80082FFD5
:20086000F0CF06C08091F10081936150704021F08091F2008823B1F78091E8008B77809307
:20088000E80061157105E9F606C08EB3882349F08EB3853041F08091E80080FFF6CF80E0F6
:2008A000089582E0089583E0089542D044D01EBA10922E0210922D0210922C0284E089BD81
:2008C00089B5826089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809186
:2008E00063008E7F809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1004F
:200900008E7F8093E1008091E20081608093E2008091E100877F8093E1008091E200886046
:200920008093E2000895C1DF81E080932F0208951092E20008951092E10008951F920F92B0
:200940000FB60F9211241F932F933F934F935F936F937F938F939F93AF93BF93EF93FF93D2
:20096000E9EEF0E0108117701082E0EFF0E08081877F80837894C3D0F894A9EEB0E01C927D
:20098000E0EFF0E08081886080831C93FF91EF91BF91AF919F918F917F916F915F914F914D
:2009A0003F912F911F910F900FBE0F901F9018951F920F920FB60F9211242F933F934F932D
:2009C0005F936F937F938F939F93AF93BF93EF93FF938091E10080FF1BC08091E20080FF57
:2009E00017C08091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E2006F
:200A00008091D80080628093D80019BC1EBAD1D18091E10084FF29C08091E20084FF25C018
:200A200084E089BD89B5826089BD09B400FEFDCF8091D8008F7D8093D8008091E1008F7E40
:200A40008093E1008091E2008F7E8093E2008091E20081608093E20080912E02882311F4F3
:200A600081E001C084E08EBBA4D18091E10083FF27C08091E20083FF23C08091E100877F87
:200A80008093E10082E08EBB10922E028091E1008E7F8093E1008091E2008E7F8093E200FD
:200AA0008091E20080618093E200AADD80E060E042E093DD8091F00088608093F00079D17E
:200AC0008091E10082FF0AC08091E20082FF06C08091E1008B7F8093E1006BD1FF91EF9163
:200AE000BF91AF919F918F917F916F915F914F913F912F910F900FBE0F901F9018951F938D
:200B0000DF93CF93CDB7DEB7AC970FB6F894DEBF0FBECDBFE0E3F2E08091F100819322E0B1
:200B2000E833F207C9F78091300230913102353009F487C0363040F43130C9F1313070F08B
:200B4000333009F01DC133C0383009F4EFC0393009F4FEC0363009F013C192C0803821F0E2
:200B6000823809F00DC108C090912C0280912D02882399F0926011C0809134028770809355
:200B8000E9008091EB0090E025E0969587952A95E1F7982F91701092E9008091E800877FCB
:200BA0008093E8009093F1001092F100CAC0882319F0823009F0E4C090E08F7190700097FF
:200BC00021F0029709F0DDC00CC080913202813009F0D7C010922D02333069F580932D02AF
:200BE0002AC080913202882331F520913402277009F4C7C02093E9008091EB0080FFC1C05B
:200C0000333021F48091EB00806213C08091EB0080618093EB0081E090E002C0880F991FEE
:200C20002A95E2F78093EA001092EA008091EB0088608093EB001092E9008091E800877F27
:200C400083C0882309F09CC0109132028091E800877F8093E800E8DC04C08EB3882309F411
:200C600090C08091E80080FFF8CF812F8F7711F492E001C093E09EBB80688093E30081C00C
:200C80008058823008F07CC0809132029091330223E08C3D920799F55FB7F894DE011596DC
:200CA0004EE020E030E061E2E42FF0E060935700849120FF03C082958F704F5F982F9F70F5
:200CC000892F805D8A3308F0895F8C9311961C9211972F5F3F4F12962431310529F75FBF39
:200CE0008AE28B8383E08C838091E800877F8093E800CE0103966AE270E0E4DC11C0609188
:200D00003402AE014F5F5F4F2CDCBC010097C9F18091E800877F8093E80089819A812BDD55
:200D20008091E8008B778093E8002BC0803841F58091E800877F8093E80080912E02809396
:200D4000F1008091E8008E778093E8006DDC19C08823B1F490913202923098F48091E8009B
:200D6000877F8093E80090932E025EDC80912E02882311F483E001C084E08EBBF8DA01C090
:200D8000F3DA8091E80083FF0AC08091EB0080628093EB008091E800877F8093E800AC9629
:200DA0000FB6F894DEBF0FBECDBFCF91DF911F91089508951F938EB3882361F01091E900B9
:200DC0001092E9008091E80083FF01C098DE17701093E9001F9108950895FC018EB38430E7
:200DE00021F587859089A189B2890097A105B105E1F085818093E9008091E80082FF15C03E
:200E00008091F200882319F42FEF3FEF04C08091F100282F30E08091F200882341F48091AA
:200E2000E8008B778093E80002C02FEF3FEFC9010895FC018EB3843011F587859089A18911
:200E4000B2890097A105B105D1F081818093E9008091F2008823A9F09091E8008091E8005C
:200E60008E778093E80095FD0CC0FDDB982F882349F48091E8008E778093E80003C092E05F
:200E800001C090E0892F0895FC018EB3843051F487859089A189B2890097A105B10511F017
:200EA000CF01C7CF08951F93FC01162F8EB38430D9F487859089A189B2890097A105B105FC
:200EC00099F081818093E9008091E80085FD08C08091E8008E778093E800C5DB882329F4E7
:200EE0001093F10080E001C082E01F9108950F931F93CF93DF93EC010D96FC0189E0DF0190
:200F00001D928A95E9F72A813B8109818C81882311F410E001C014E0C90151DB182B126025
:200F2000802F61E8412F59DB882329F12E813F810D818885882311F410E001C014E0C90127
:200F40003EDB182B1260802F60E8412F46DB882391F02A853B8509858C85882311F410E061
:200F600001C014E0C9012BDB182B1260802F61EC412F33DB01C080E0DF91CF911F910F917C
:200F80000895CF93DF93EC018091E80083FF60C0888190E020913402309135022817390781
:200FA00009F056C080913102813261F0823220F4803209F04DC019C0823269F1833209F0C5
:200FC00047C038C080913002813A09F041C08091E800877F8093E800CE010F9667E070E015
:200FE00071DB8091E8008B7713C080913002813279F58091E800877F8093E800CE010F9605
:2010000067E070E013DCCE01E9D88091E8008E778093E8001DC0809130028132C9F4809120
:20102000E800877F8093E800809132028D87CE016ED90DC080913002813251F48091E80057
:20104000877F8093E800CE0160913202C5DEECDADF91CF910895A1E21A2EAA1BBB1BFD0161
:201060000DC0AA1FBB1FEE1FFF1FA217B307E407F50720F0A21BB30BE40BF50B661F771FE6
:20108000881F991F1A9469F760957095809590959B01AC01BD01CF01089597FB092E052647
:2010A0000ED057FD04D0D7DF0AD0001C38F450954095309521953F4F4F4F5F4F0895F6F7B9
:2010C00090958095709561957F4F8F4F9F4F0895F894FFCF000340000004400000020800B9
:0C10E000000000000000000000001400F0
:00000001FF

View File

@@ -0,0 +1,137 @@
:20000000A7C00000C0C00000BEC00000BCC00000BAC00000B8C00000B6C00000B4C0000023
:20002000B2C00000B0C00000AEC00000CBC400008FC40000A8C00000A6C00000A4C000005C
:20004000A2C00000A0C000009EC000009CC000009AC0000098C0000096C0000021C100003A
:2000600092C0000090C000008EC000008CC000008AC0000088C0000086C0000084C0000028
:2000800082C0000080C000007EC000007CC000007AC0000078C000001201100102000008C4
:2000A00041233D0001000102DC0109023E00020100C0320904000001020201000524000143
:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC
:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA
:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D
:200120002E03410072006400750069006E006F0020004400750065002000500072006F002D
:2001400067002E00200050006F0072007400000011241FBECFEFD2E0DEBFCDBF11E0A0E029
:20016000B1E0E8EEF0E102C005900D92A831B107D9F712E0A8E1B1E001C01D92A833B107E1
:20018000E1F722D1AFC73CCF9C01DC01AE57BF4FED91FC91119741911196FC93EE93805872
:2001A0009F4FE817F90711F42D933C939FB7F894F901EC57FF4F8081815080839FBF842F6B
:2001C0000895882311F03F9A01C03F9847980895882311F046980895469A0895DF92EF9253
:2001E000FF920F931F93FC018489813019F0823019F404C010E303C010E001C010E283896E
:20020000823009F418608589873031F0883031F0863029F4126003C0146001C016601092A3
:20022000C9001092C8001092CA000785F088E188D288202F3F2D4E2D5D2D10921E01203B7C
:2002400084E0380780E0480780E0580719F481E080931E01CA01B90122E030E040E050E006
:2002600026D720583B47414E5F4FCA01B901202F3F2D4E2D5D2DF9D6215030403093CD00C5
:200280002093CC001093CA0082E08093C80088E98093C9001F910F91FF90EF90DF9008957E
:2002A0001F920F920FB60F9211242F938F939F93EF93FF939091CE008EB38430F1F4E091ED
:2002C000A201F091A3019083E091A201F091A301CF0101969093A3018093A201825A914079
:2002E00021F482E291E0928381839FB7F8948091A6018F5F8093A6019FBFFF91EF919F911B
:200300008F912F910F900FBE0F901F901895FC0140911A0140931B0180911C0180931D015F
:200320008585282F30E02170307020931A01858590E096958795817080931C0180911E013B
:20034000882339F08FE590E090931901809318010895442341F4222331F08EE190E09093DB
:20036000190180931801089580E091E014C680E091E0C7C51F9384B7877F84BF18E10FB69E
:20038000F89410936000109260000FBE80E019DF469A3E9A87E690E09093CD008093CC0043
:2003A00086E08093CA001092C8001093C900539A5A9A8AB180638AB98BB180638BB9BDD2F0
:2003C00084E085BD1F9108950F931F93CF93DF93D1DF2FB7F89487EA91E09093280280939E
:2003E000270290932A02809329022FBF2FB7F89482E291E09093A3018093A2019093A501CC
:200400008093A4012FBF7894C7EAD1E003E08FB7F89490912B028FBF903809F180E091E0E4
:20042000E6D497FD1CC0E0912702F09128028083E0912702F0912802CF0101969093280251
:20044000809327028752924011F4D283C1839FB7F89480912B028F5F80932B029FBF8FB725
:20046000F8941091A6018FBFA89903C0113608F469C0A89A8091A601882361F05D9800936C
:200480001F0108C082E291E07FDE682F80E091E014D511501123B1F780911F01882351F097
:2004A00080911F01815080931F0180911F01882309F45D9A80912001882351F080912001E7
:2004C00081508093200180912001882309F45C9A8091180190911901181619067CF58F3560
:2004E000910521F481E074DE80E06BDE8091180190911901839721F480E06ADE80E061DE1A
:200500008091180190911901499721F480E060DE81E057DE8091180190911901019721F43B
:2005200080E056DE80E04DDE80911801909119010197909319018093180104C080E048DEEC
:2005400080E03FDE8FB7F89490912B028FBF992369F087EA91E018DE982F8091C80085FF9F
:20056000FCCF9093CE005C980093200180E091E095D42AD44CCFDA01923049F0933061F0DA
:200580009130F9F4E8E9F0E022E130E01EC0EAEAF0E02EE330E019C0813049F0813018F0DA
:2005A000823079F408C0E8EEF0E0849107C0ECEEF0E0849103C0E0E2F1E08491282F30E041
:2005C00004C0E0E0F0E020E030E0ED93FC93C901089528E030E040E003C04F5F220F331F15
:2005E00028173907D0F3842F8295807F08958093E9008091EB0081608093EB001092ED00ED
:200600006093EC004093ED008091EE00881F8827881F08951092F40090E09093E9001092EE
:20062000F0001092E8001092ED008091EB008E7F8093EB009F5F953081F70895809130028F
:2006400088238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008954A
:200660008EB3882349F08091E80080FFF9CF8091E8008E778093E800089594E68091EC0008
:2006800080FF05C08091E80080FF05C023C08091E80082FD1FC08EB3882311F482E00895AF
:2006A0008EB3853011F483E008958091EB0085FF02C081E008958091E10082FFDFCF8091CD
:2006C000E1008B7F8093E100992311F484E008959150D4CF80E008959C0140913602509171
:2006E00037024617570718F4F90120E038C06115710511F0AB01F8CF8091E8008E77809397
:20070000E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC08EB3882356
:2007200081F18EB3853079F18091E80080FF17C09091F20006C081918093F1004150504088
:200740009F5F4115510511F09830A8F320E0983009F421E08091E8008E778093E800411576
:20076000510591F6222381F606C08EB3882349F08EB3853041F08091E80082FFF6CF80E02F
:20078000089582E0089583E008959C0140913602509137024617570710F490E03BC061155D
:2007A000710511F0AB01F9CF8091E8008E778093E80040E050E0F1CF8091E80083FF02C008
:2007C00081E008958091E80082FD30C08EB3882399F18EB3853091F18091E80080FF1AC073
:2007E0008091F20009C0F9012F5F3F4FE491E093F100415050408F5F4115510511F08830CA
:2008000090F390E0883009F491E08091E8008E778093E8004115510579F6992369F606C0CA
:200820008EB3882349F08EB3853041F08091E80082FFF6CF80E0089582E0089583E0089531
:200840009C016115710529F48091E8008B778093E800F90120C08091E80083FF02C081E084
:2008600008958EB3882339F18EB3853031F18091E80082FFF0CF06C08091F10081936150E7
:20088000704021F08091F2008823B1F78091E8008B778093E80061157105E9F606C08EB379
:2008A000882349F08EB3853041F08091E80080FFF6CF80E0089582E0089583E0089542D0E2
:2008C00044D01EBA10922E0210922D0210922C0284E089BD89B5826089BD09B400FEFDCF22
:2008E0008091D800982F9F779093D80080688093D800809163008E7F809363008091D80084
:200900008F7D8093D8008091E0008E7F8093E0008091E1008E7F8093E1008091E200816028
:200920008093E2008091E100877F8093E1008091E20088608093E2000895C1DF81E0809355
:200940002F0208951092E20008951092E10008951F920F920FB60F9211241F932F933F9355
:200960004F935F936F937F938F939F93AF93BF93EF93FF93E9EEF0E0108117701082E0EF73
:20098000F0E08081877F80837894C3D0F894A9EEB0E01C92E0EFF0E08081886080831C9343
:2009A000FF91EF91BF91AF919F918F917F916F915F914F913F912F911F910F900FBE0F901C
:2009C0001F9018951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF93BC
:2009E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E10009
:200A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC8D
:200A20001EBAD1D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B4B6
:200A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E6
:200A6000E2008091E20081608093E20080912E02882311F481E001C084E08EBBA4D1809185
:200A8000E10083FF27C08091E20083FF23C08091E100877F8093E10082E08EBB10922E024B
:200AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200AADDFE
:200AC00080E060E042E093DD8091F00088608093F00079D18091E10082FF0AC08091E2007E
:200AE00082FF06C08091E1008B7F8093E1006BD1FF91EF91BF91AF919F918F917F916F9183
:200B00005F914F913F912F910F900FBE0F901F9018951F93DF93CF93CDB7DEB7AC970FB667
:200B2000F894DEBF0FBECDBFE0E3F2E08091F100819322E0E833F207C9F7809130023091AE
:200B40003102353009F487C0363040F43130C9F1313070F0333009F01DC133C0383009F4B1
:200B6000EFC0393009F4FEC0363009F013C192C0803821F0823809F00DC108C090912C02BC
:200B800080912D02882399F0926011C08091340287708093E9008091EB0090E025E0969548
:200BA00087952A95E1F7982F91701092E9008091E800877F8093E8009093F1001092F1008E
:200BC000CAC0882319F0823009F0E4C090E08F719070009721F0029709F0DDC00CC0809164
:200BE0003202813009F0D7C010922D02333069F580932D022AC080913202882331F52091FB
:200C00003402277009F4C7C02093E9008091EB0080FFC1C0333021F48091EB00806213C0C2
:200C20008091EB0080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA00D6
:200C40008091EB0088608093EB001092E9008091E800877F83C0882309F09CC01091320210
:200C60008091E800877F8093E800E8DC04C08EB3882309F490C08091E80080FFF8CF812FCA
:200C80008F7711F492E001C093E09EBB80688093E30081C08058823008F07CC08091320228
:200CA0009091330223E08C3D920799F55FB7F894DE0115964EE020E030E061E2E42FF0E05B
:200CC00060935700849120FF03C082958F704F5F982F9F70892F805D8A3308F0895F8C93E8
:200CE00011961C9211972F5F3F4F12962431310529F75FBF8AE28B8383E08C838091E80085
:200D0000877F8093E800CE0103966AE270E0E4DC11C060913402AE014F5F5F4F2CDCBC0146
:200D20000097C9F18091E800877F8093E80089819A812BDD8091E8008B778093E8002BC05A
:200D4000803841F58091E800877F8093E80080912E028093F1008091E8008E778093E8006D
:200D60006DDC19C08823B1F490913202923098F48091E800877F8093E80090932E025EDCD7
:200D800080912E02882311F483E001C084E08EBBEEDA01C0E9DA8091E80083FF0AC08091EF
:200DA000EB0080628093EB008091E800877F8093E800AC960FB6F894DEBF0FBECDBFCF9185
:200DC000DF911F91089508951F938EB3882361F01091E9001092E9008091E80083FF01C079
:200DE00098DE17701093E9001F9108950895FC018EB3843021F587859089A189B289009757
:200E0000A105B105E1F085818093E9008091E80082FF15C08091F200882319F42FEF3FEF4D
:200E200004C08091F100282F30E08091F200882341F48091E8008B778093E80002C02FEFCC
:200E40003FEFC9010895FC018EB3843011F587859089A189B2890097A105B105D1F08181C5
:200E60008093E9008091F2008823A9F09091E8008091E8008E778093E80095FD0CC0FDDBF7
:200E8000982F882349F48091E8008E778093E80003C092E001C090E0892F0895FC018EB3B1
:200EA000843051F487859089A189B2890097A105B10511F0CF01C7CF08951F93FC01162FC4
:200EC0008EB38430D9F487859089A189B2890097A105B10599F081818093E9008091E80053
:200EE00085FD08C08091E8008E778093E800C5DB882329F41093F10080E001C082E01F9180
:200F000008950F931F93CF93DF93EC010D96FC0189E0DF011D928A95E9F72A813B81098197
:200F20008C81882311F410E001C014E0C90151DB182B1260802F61E8412F59DB882329F143
:200F40002E813F810D818885882311F410E001C014E0C9013EDB182B1260802F60E8412F33
:200F600046DB882391F02A853B8509858C85882311F410E001C014E0C9012BDB182B12603C
:200F8000802F61EC412F33DB01C080E0DF91CF911F910F910895CF93DF93EC018091E8003F
:200FA00083FF60C0888190E020913402309135022817390709F056C080913102813261F061
:200FC000823220F4803209F04DC019C0823269F1833209F047C038C080913002813A09F006
:200FE00041C08091E800877F8093E800CE010F9667E070E071DB8091E8008B7713C08091C0
:201000003002813279F58091E800877F8093E800CE010F9667E070E013DCCE01DFD88091F2
:20102000E8008E778093E8001DC0809130028132C9F48091E800877F8093E80080913202F9
:201040008D87CE0164D90DC080913002813251F48091E800877F8093E800CE01609132027A
:20106000C5DEECDADF91CF910895A1E21A2EAA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA217E2
:20108000B307E407F50720F0A21BB30BE40BF50B661F771F881F991F1A9469F760957095B3
:2010A000809590959B01AC01BD01CF01089597FB092E05260ED057FD04D0D7DF0AD0001CDC
:2010C00038F450954095309521953F4F4F4F5F4F0895F6F790958095709561957F4F8F4F6A
:2010E0009F4F0895F894FFCF00034000000440000002080000000000000000000000140066
:00000001FF

View File

@@ -0,0 +1 @@
../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -c arduino -P /dev/cu.usbmodem14201 -b 19200 -p m16u2 -vvv -U flash:r:16u2-out3.hex:i

View File

@@ -1 +1 @@
../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -c arduino -P /dev/cu.usbmodem14101 -b 19200 -p m16u2 -vvv -U flash:w:16u2.hex:i ../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -c arduino -P /dev/cu.usbmodem14201 -b 19200 -p m16u2 -vvv -U flash:w:16u2.hex:i

View File

@@ -0,0 +1 @@
../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -c arduino -P /dev/cu.usbmodem14201 -b 19200 -p m16u2 -vvv -U flash:w:16u2-original.hex:i

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

1
compiled/due-5500/uploadOTA.sh Executable file
View File

@@ -0,0 +1 @@
../tools/mac/arduinoOTA -address 192.168.88.21 -port 65280 -username arduino -password password -sketch firmware.bin -b -upload /sketch

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
../tools/mac/arduinoOTA -address 192.168.88.59 -port 65280 -username arduino -password password -sketch firmware.bin -b -upload /sketch ../tools/mac/arduinoOTA -address 192.168.11.172 -port 65280 -username arduino -password password -sketch firmware.bin -b -upload /sketch

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -81,7 +81,7 @@ EthernetClient ethClient;
#if defined(OTA) #if defined(OTA)
#include <ArduinoOTA.h> #include <ArduinoOTA.h>
bool OTA_initialized=false; //bool OTA_initialized=false;
#endif #endif
#if defined(__SAM3X8E__) #if defined(__SAM3X8E__)
@@ -151,6 +151,7 @@ aJsonObject *dmxArr = NULL;
#endif #endif
#ifdef SYSLOG_ENABLE #ifdef SYSLOG_ENABLE
aJsonObject *udpSyslogArr = NULL; aJsonObject *udpSyslogArr = NULL;
bool syslogInitialized = false;
#endif #endif
uint32_t nextPollingCheck = 0; uint32_t nextPollingCheck = 0;
@@ -158,12 +159,14 @@ uint32_t nextInputCheck = 0;
uint32_t nextLanCheckTime = 0; uint32_t nextLanCheckTime = 0;
uint32_t nextThermostatCheck = 0; uint32_t nextThermostatCheck = 0;
uint32_t nextSensorCheck =0; uint32_t nextSensorCheck =0;
uint32_t WiFiAwaitingTime =0;
aJsonObject *pollingItem = NULL; aJsonObject *pollingItem = NULL;
bool owReady = false; bool owReady = false;
bool configOk = false; bool configOk = false; // At least once connected to MQTT
bool configLoaded = false; bool configLoaded = false;
bool initializedListeners = false;
int8_t ethernetIdleCount =0; int8_t ethernetIdleCount =0;
int8_t configLocked = 0; int8_t configLocked = 0;
@@ -252,7 +255,7 @@ void mqttCallback(char *topic, byte *payload, unsigned int length) {
return; return;
} }
LED.flash(ledBLUE); LED.flash(ledBLUE);
for (int i = 0; i < length; i++) for (unsigned int i = 0; i < length; i++)
debugSerial<<((char) payload[i]); debugSerial<<((char) payload[i]);
debugSerial<<endl; debugSerial<<endl;
@@ -336,6 +339,67 @@ void printMACAddress() {
} }
} }
char* getStringFromConfig(aJsonObject * a, int i)
{
aJsonObject * element = NULL;
if (!a) return NULL;
if (a->type == aJson_Array)
element = aJson.getArrayItem(a, i);
// TODO - human readable JSON objects as alias
if (element && element->type == aJson_String) return element->valuestring;
return NULL;
}
char* getStringFromConfig(aJsonObject * a, char * name)
{
aJsonObject * element = NULL;
if (!a) return NULL;
if (a->type == aJson_Object)
element = aJson.getObjectItem(a, name);
if (element && element->type == aJson_String) return element->valuestring;
return NULL;
}
void setupOTA(void)
{
#ifdef OTA
//if (OTA_initialized) return;
// ArduinoOTA.end();
// start the OTEthernet library with internal (flash) based storage
ArduinoOTA.begin(Ethernet.localIP(), "Lighthub", "password", InternalStorage);
infoSerial<<F("OTA initialized\n");
//OTA_initialized=true;
#endif
}
void setupSyslog()
{
#ifdef SYSLOG_ENABLE
int syslogPort = 514;
short n = 0;
udpSyslogClient.begin(SYSLOG_LOCAL_SOCKET);
if (udpSyslogArr && (n = aJson.getArraySize(udpSyslogArr))) {
char *syslogServer = getStringFromConfig(udpSyslogArr, 0);
if (n>1) syslogPort = aJson.getArrayItem(udpSyslogArr, 1)->valueint;
inet_ntoa_r(Ethernet.localIP(),syslogDeviceHostname,sizeof(syslogDeviceHostname));
infoSerial<<F("Syslog params:")<<syslogServer<<":"<<syslogPort<<":"<<syslogDeviceHostname<<endl;
udpSyslog.server(syslogServer, syslogPort);
udpSyslog.deviceHostname(syslogDeviceHostname);
if (mqttArr) deviceName = getStringFromConfig(mqttArr, 0);
if (deviceName) udpSyslog.appName(deviceName);
udpSyslog.defaultPriority(LOG_KERN);
syslogInitialized=true;
infoSerial<<F("UDP Syslog initialized!\n");
}
#endif
}
lan_status lanLoop() { lan_status lanLoop() {
@@ -344,18 +408,58 @@ lan_status lanLoop() {
#endif #endif
switch (lanStatus) { switch (lanStatus) {
case INITIAL_STATE: case INITIAL_STATE:
LED.set(ledRED|((configLoaded)?ledBLINK:0)); LED.set(ledRED|((configLoaded)?ledBLINK:0));
if (millis() > nextLanCheckTime)
onInitialStateInitLAN(); #if defined(WIFI_ENABLE)
onInitialStateInitLAN(); // Moves state to AWAITING_ADDRESS or HAVE_IP_ADDRESS
#else
if (Ethernet.linkStatus() != LinkOFF) onInitialStateInitLAN(); // Moves state to AWAITING_ADDRESS or HAVE_IP_ADDRESS
#endif
break; break;
case AWAITING_ADDRESS:
#if defined(WIFI_ENABLE)
if (WiFi.status() == WL_CONNECTED)
{
infoSerial<<F("WiFi connected. IP address: ")<<WiFi.localIP()<<endl;
wifiInitialized = true;
lanStatus = HAVE_IP_ADDRESS;
}
else
if (millis()>WiFiAwaitingTime)
{
errorSerial<<F("\nProblem with WiFi!");
return lanStatus = DO_REINIT;
}
#else
lanStatus = HAVE_IP_ADDRESS;
#endif
break;
case HAVE_IP_ADDRESS: case HAVE_IP_ADDRESS:
if (!initializedListeners)
{
setupOTA();
#ifdef _artnet
if (artnet) artnet->begin();
#endif
initializedListeners = true;
}
lanStatus = LIBS_INITIALIZED;
break;
case LIBS_INITIALIZED:
LED.set(ledRED|ledGREEN|((configLoaded)?ledBLINK:0)); LED.set(ledRED|ledGREEN|((configLoaded)?ledBLINK:0));
if (configLocked) return HAVE_IP_ADDRESS; if (configLocked) return LIBS_INITIALIZED;
if (!configOk) if (!configOk)
lanStatus = loadConfigFromHttp(0, NULL); lanStatus = loadConfigFromHttp(0, NULL);
else lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER; else lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
break; break;
case IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER: case IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER:
@@ -376,18 +480,32 @@ lan_status lanLoop() {
lanStatus = OPERATION;//3; lanStatus = OPERATION;//3;
infoSerial<<F("Accepting commands...\n"); infoSerial<<F("Accepting commands...\n");
break;
} }
break;
case OPERATION: case OPERATION:
LED.set(ledGREEN|((configLoaded)?ledBLINK:0)); LED.set(ledGREEN|((configLoaded)?ledBLINK:0));
if (!mqttClient.connected()) lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;//2; if (!mqttClient.connected()) lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;//2;
break; break;
case AWAITING_ADDRESS: case DO_REINIT: // Pause and re-init LAN
LED.set(ledRED|((configLoaded)?ledBLINK:0)); //if (mqttClient.connected()) mqttClient.disconnect(); // Hmm hungs then cable disconnected
nextLanCheckTime = millis() + 5000;
lanStatus = REINIT;
LED.set(ledRED|((configLoaded)?ledBLINK:0));
break;
case REINIT: // Pause and re-init LAN
if (millis() > nextLanCheckTime) if (millis() > nextLanCheckTime)
lanStatus = INITIAL_STATE;//0; {
lanStatus = INITIAL_STATE;
}
break;
case DO_RECONNECT: // Pause and re-connect MQTT
if (mqttClient.connected()) mqttClient.disconnect();
nextLanCheckTime = millis() + 5000;
lanStatus = RECONNECT;
break; break;
case RECONNECT: case RECONNECT:
@@ -396,11 +514,11 @@ lan_status lanLoop() {
lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;//2; lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;//2;
break; break;
case READ_RE_CONFIG: case READ_RE_CONFIG: // Restore config from FLASH, re-init LAN
if (loadConfigFromEEPROM()) lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;//2; if (loadConfigFromEEPROM()) lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;//2;
else { else {
nextLanCheckTime = millis() + 5000; nextLanCheckTime = millis() + 5000;
lanStatus = AWAITING_ADDRESS;//-10; lanStatus = DO_REINIT;//-10;
} }
break; break;
@@ -409,18 +527,10 @@ lan_status lanLoop() {
{ {
#if defined(WIFI_ENABLE)
if (WiFi.status() != WL_CONNECTED)
{
wifiInitialized=false;
lanStatus = INITIAL_STATE;
}
#endif
#if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__) || defined (NRF5) #if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__) || defined (NRF5)
wdt_dis(); wdt_dis();
if (lanStatus > 0) if (lanStatus >= HAVE_IP_ADDRESS)
{ {
int etherStatus = Ethernet.maintain(); int etherStatus = Ethernet.maintain();
@@ -432,15 +542,11 @@ if (WiFi.status() != WL_CONNECTED)
switch (etherStatus) { switch (etherStatus) {
case NO_LINK: case NO_LINK:
errorSerial<<F("No link")<<endl; errorSerial<<F("No link")<<endl;
if (mqttClient.connected()) mqttClient.disconnect(); lanStatus = DO_REINIT;
nextLanCheckTime = millis() + 30000;
lanStatus = AWAITING_ADDRESS;//-10;
break; break;
case DHCP_CHECK_RENEW_FAIL: case DHCP_CHECK_RENEW_FAIL:
errorSerial<<F("Error: renewed fail"); errorSerial<<F("Error: renewed fail");
if (mqttClient.connected()) mqttClient.disconnect(); lanStatus = DO_REINIT;
nextLanCheckTime = millis() + 1000;
lanStatus = AWAITING_ADDRESS;//-10;
break; break;
case DHCP_CHECK_RENEW_OK: case DHCP_CHECK_RENEW_OK:
@@ -452,7 +558,7 @@ if (WiFi.status() != WL_CONNECTED)
errorSerial<<F("Error: rebind fail"); errorSerial<<F("Error: rebind fail");
if (mqttClient.connected()) mqttClient.disconnect(); if (mqttClient.connected()) mqttClient.disconnect();
nextLanCheckTime = millis() + 1000; nextLanCheckTime = millis() + 1000;
lanStatus = AWAITING_ADDRESS;//-10; lanStatus = DO_REINIT;
break; break;
case DHCP_CHECK_REBIND_OK: case DHCP_CHECK_REBIND_OK:
@@ -572,105 +678,71 @@ configLocked--;
#endif #endif
} }
char* getStringFromConfig(aJsonObject * a, int i)
{
aJsonObject * element = NULL;
if (!a) return NULL;
if (a->type == aJson_Array)
element = aJson.getArrayItem(a, i);
// TODO - human readable JSON objects as alias
if (element && element->type == aJson_String) return element->valuestring;
return NULL;
}
char* getStringFromConfig(aJsonObject * a, char * name)
{
aJsonObject * element = NULL;
if (!a) return NULL;
if (a->type == aJson_Object)
element = aJson.getObjectItem(a, name);
if (element && element->type == aJson_String) return element->valuestring;
return NULL;
}
void ip_ready_config_loaded_connecting_to_broker() { void ip_ready_config_loaded_connecting_to_broker() {
short n = 0;
int port = 1883; int port = 1883;
char empty = 0; char empty = 0;
short n = 0;
char *user = &empty; char *user = &empty;
char passwordBuf[16] = ""; char passwordBuf[16] = "";
char *password = passwordBuf; char *password = passwordBuf;
int syslogPort = 514;
if (mqttArr && (aJson.getArraySize(mqttArr)))
{
deviceName = getStringFromConfig(mqttArr, 0);
infoSerial<<F("Device Name:")<<deviceName<<endl;
}
#ifdef SYSLOG_ENABLE
udpSyslogClient.begin(SYSLOG_LOCAL_SOCKET); if (mqttClient.connected())
{
lanStatus = RETAINING_COLLECTING;
return;
}
if (udpSyslogArr && (n = aJson.getArraySize(udpSyslogArr))) { if (!mqttArr || (n = aJson.getArraySize(mqttArr) < 2)) //At least device name and broker IP must be configured
char *syslogServer = getStringFromConfig(udpSyslogArr, 0); {
if (n>1) syslogPort = aJson.getArrayItem(udpSyslogArr, 1)->valueint; lanStatus = READ_RE_CONFIG;
return;
}
inet_ntoa_r(Ethernet.localIP(),syslogDeviceHostname,sizeof(syslogDeviceHostname));
/*
char *syslogDeviceHostname = aJson.getArrayItem(udpSyslogArr, 2)->valuestring;
char *syslogAppname = aJson.getArrayItem(udpSyslogArr, 3)->valuestring;
*/
infoSerial<<F("Syslog params:")<<syslogServer<<":"<<syslogPort<<":"<<syslogDeviceHostname<<":"<<deviceName<<endl;
udpSyslog.server(syslogServer, syslogPort);
udpSyslog.deviceHostname(syslogDeviceHostname);
if (deviceName) udpSyslog.appName(deviceName);
udpSyslog.defaultPriority(LOG_KERN);
//udpSyslog.log(LOG_INFO, F("UDP Syslog initialized!"));
infoSerial<<F("UDP Syslog initialized!\n");
}
#endif
if (!mqttClient.connected() && mqttArr && ((n = aJson.getArraySize(mqttArr)) > 1)) { deviceName = getStringFromConfig(mqttArr, 0);
// char *client_id = aJson.getArrayItemartnet(mqttArr, 0)->valuestring; infoSerial<<F("Device Name:")<<deviceName<<endl;
char *servername = getStringFromConfig(mqttArr, 1);
if (n >= 3) port = aJson.getArrayItem(mqttArr, 2)->valueint;
if (n >= 4) user = getStringFromConfig(mqttArr, 3); char *servername = getStringFromConfig(mqttArr, 1);
if (!loadFlash(OFFSET_MQTT_PWD, passwordBuf, sizeof(passwordBuf)) && (n >= 5)) { if (n >= 3) port = aJson.getArrayItem(mqttArr, 2)->valueint;
if (n >= 4) user = getStringFromConfig(mqttArr, 3);
if (!loadFlash(OFFSET_MQTT_PWD, passwordBuf, sizeof(passwordBuf)) && (n >= 5))
{
password = getStringFromConfig(mqttArr, 4); password = getStringFromConfig(mqttArr, 4);
infoSerial<<F("Using MQTT password from config"); infoSerial<<F("Using MQTT password from config");
} }
mqttClient.setServer(servername, port); mqttClient.setServer(servername, port);
mqttClient.setCallback(mqttCallback); mqttClient.setCallback(mqttCallback);
char willMessage[16]; char willMessage[16];
char willTopic[32]; char willTopic[32];
strncpy_P(willMessage,disconnected_P,sizeof(willMessage)); strncpy_P(willMessage,disconnected_P,sizeof(willMessage));
// strncpy_P(willTopic, outprefix, sizeof(willTopic)); // strncpy_P(willTopic, outprefix, sizeof(willTopic));
setTopic(willTopic,sizeof(willTopic),T_DEV); setTopic(willTopic,sizeof(willTopic),T_DEV);
strncat_P(willTopic, state_P, sizeof(willTopic)); strncat_P(willTopic, state_P, sizeof(willTopic));
infoSerial<<F("\nAttempting MQTT connection to ")<<servername<<F(":")<<port<<F(" user:")<<user<<F(" ..."); infoSerial<<F("\nAttempting MQTT connection to ")<<servername<<F(":")<<port<<F(" user:")<<user<<F(" ...");
if (!strlen(user)) if (!strlen(user))
{ {
user = NULL; user = NULL;
password= NULL; password= NULL;
} }
// wdt_dis(); //potential unsafe for ethernetIdle(), but needed to avoid cyclic reboot if mosquitto out of order // wdt_dis(); //potential unsafe for ethernetIdle(), but needed to avoid cyclic reboot if mosquitto out of order
if (mqttClient.connect(deviceName, user, password,willTopic,MQTTQOS1,true,willMessage)) { if (mqttClient.connect(deviceName, user, password,willTopic,MQTTQOS1,true,willMessage))
{
mqttErrorRate = 0; mqttErrorRate = 0;
infoSerial<<F("connected as ")<<deviceName <<endl; infoSerial<<F("connected as ")<<deviceName <<endl;
// wdt_en();
configOk = true; configOk = true;
// ... Temporary subscribe to status topic // ... Temporary subscribe to status topic
char buf[MQTT_TOPIC_LENGTH+1]; char buf[MQTT_TOPIC_LENGTH+1];
// strncpy_P(buf, outprefix, sizeof(buf));
setTopic(buf,sizeof(buf),T_OUT); setTopic(buf,sizeof(buf),T_OUT);
strncat(buf, "+/+/#", sizeof(buf)); // Only on separated cmd/val topics strncat(buf, "+/+/#", sizeof(buf)); // Only on separated cmd/val topics
mqttClient.subscribe(buf); mqttClient.subscribe(buf);
@@ -693,7 +765,8 @@ void ip_ready_config_loaded_connecting_to_broker() {
lanStatus = RETAINING_COLLECTING;//4; lanStatus = RETAINING_COLLECTING;//4;
nextLanCheckTime = millis() + 5000; nextLanCheckTime = millis() + 5000;
infoSerial<<F("Awaiting for retained topics"); infoSerial<<F("Awaiting for retained topics");
} else { } else
{
errorSerial<<F("failed, rc=")<<mqttClient.state()<<F(" try again in 5 seconds")<<endl; errorSerial<<F("failed, rc=")<<mqttClient.state()<<F(" try again in 5 seconds")<<endl;
nextLanCheckTime = millis() + 5000; nextLanCheckTime = millis() + 5000;
#ifdef RESTART_LAN_ON_MQTT_ERRORS #ifdef RESTART_LAN_ON_MQTT_ERRORS
@@ -704,25 +777,14 @@ void ip_ready_config_loaded_connecting_to_broker() {
#ifdef RESET_PIN #ifdef RESET_PIN
resetHard(); resetHard();
#endif #endif
lanStatus=INITIAL_STATE; lanStatus=DO_REINIT;// GO INITIAL_STATE;
return; return;
} }
#endif #endif
lanStatus = RECONNECT;//12; lanStatus = DO_RECONNECT;//12;
} }
}
}
void setupOTA(void)
{
#ifdef OTA
if (OTA_initialized) return;
// ArduinoOTA.end();
// start the OTEthernet library with internal (flash) based storage
ArduinoOTA.begin(Ethernet.localIP(), "Lighthub", "password", InternalStorage);
OTA_initialized=true;
#endif
} }
@@ -737,31 +799,36 @@ void onInitialStateInitLAN() {
wifi_set_macaddr(STATION_IF,mac); //ESP32 to check wifi_set_macaddr(STATION_IF,mac); //ESP32 to check
WiFi.begin(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD)); WiFi.begin(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD));
int wifi_connection_wait = 10000;
while (WiFi.status() != WL_CONNECTED && wifi_connection_wait > 0) { // int wifi_connection_wait = 10000;
delay(500);
wifi_connection_wait -= 500;
debugSerial<<"."; // while (WiFi.status() != WL_CONNECTED && wifi_connection_wait > 0) {
yield(); // delay(500);
} // wifi_connection_wait -= 500;
wifiInitialized = true; //??? // debugSerial<<".";
// yield();
// }
// wifiInitialized = true; //???
} }
#endif #endif
lanStatus = AWAITING_ADDRESS;
WiFiAwaitingTime = millis() + 60000L;
return;
/*
if (WiFi.status() == WL_CONNECTED) { if (WiFi.status() == WL_CONNECTED) {
infoSerial<<F("WiFi connected. IP address: ")<<WiFi.localIP()<<endl; infoSerial<<F("WiFi connected. IP address: ")<<WiFi.localIP()<<endl;
wifiInitialized = true; wifiInitialized = true;
lanStatus = HAVE_IP_ADDRESS;//1; lanStatus = HAVE_IP_ADDRESS;//1;
setupOTA(); //setupOTA();
} else } else
{ {
errorSerial<<F("\nProblem with WiFi!"); errorSerial<<F("\nProblem with WiFi!");
nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL; lanStatus = DO_REINIT;
//nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL;
} }
*/
#else // Ethernet connection #else // Ethernet connection
#ifdef W5500_CS_PIN #ifdef W5500_CS_PIN
@@ -794,10 +861,6 @@ setupOTA();
} else Ethernet.begin(mac, ip); } else Ethernet.begin(mac, ip);
infoSerial<<endl; infoSerial<<endl;
lanStatus = HAVE_IP_ADDRESS; lanStatus = HAVE_IP_ADDRESS;
setupOTA();
#ifdef _artnet
if (artnet) artnet->begin();
#endif
} }
else { else {
infoSerial<<"\nNo IP data found in flash\n"; infoSerial<<"\nNo IP data found in flash\n";
@@ -814,7 +877,7 @@ setupOTA();
if (res == 0) { if (res == 0) {
errorSerial<<F("Failed to configure Ethernet using DHCP. You can set ip manually!")<<F("'ip [ip[,dns[,gw[,subnet]]]]' - set static IP\n"); errorSerial<<F("Failed to configure Ethernet using DHCP. You can set ip manually!")<<F("'ip [ip[,dns[,gw[,subnet]]]]' - set static IP\n");
lanStatus = AWAITING_ADDRESS;//-10; lanStatus = DO_REINIT;//-10;
nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL; nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL;
#ifdef RESET_PIN #ifdef RESET_PIN
resetHard(); resetHard();
@@ -822,13 +885,7 @@ setupOTA();
} else { } else {
infoSerial<<F("Got IP address:"); infoSerial<<F("Got IP address:");
printIPAddress(Ethernet.localIP()); printIPAddress(Ethernet.localIP());
lanStatus = HAVE_IP_ADDRESS;//1; lanStatus = HAVE_IP_ADDRESS;
setupOTA();
#ifdef _artnet
if (artnet) artnet->begin();
#endif
} }
} }
#endif #endif
@@ -905,9 +962,6 @@ void Changed(int i, DeviceAddress addr, float currentTemp) {
void cmdFunctionHelp(int arg_cnt, char **args) void cmdFunctionHelp(int arg_cnt, char **args)
{ {
printFirmwareVersionAndBuildOptions(); printFirmwareVersionAndBuildOptions();
#ifdef SYSLOG_ENABLE
// udpSyslog.logf(LOG_INFO, "free RAM: %d",freeRam());
#endif
printCurentLanConfig(); printCurentLanConfig();
// printFreeRam(); // printFreeRam();
infoSerial<<F("\nUse these commands: 'help' - this text\n" infoSerial<<F("\nUse these commands: 'help' - this text\n"
@@ -944,6 +998,17 @@ void cmdFunctionReboot(int arg_cnt, char **args) {
void applyConfig() { void applyConfig() {
if (!root) return; if (!root) return;
configLocked++; configLocked++;
items = aJson.getObjectItem(root, "items");
topics = aJson.getObjectItem(root, "topics");
inputs = aJson.getObjectItem(root, "in");
mqttArr = aJson.getObjectItem(root, "mqtt");
#ifdef SYSLOG_ENABLE
udpSyslogArr = aJson.getObjectItem(root, "syslog");
setupSyslog();
#endif
#ifdef _dmxin #ifdef _dmxin
int itemsCount; int itemsCount;
dmxArr = aJson.getObjectItem(root, "dmxin"); dmxArr = aJson.getObjectItem(root, "dmxin");
@@ -985,8 +1050,7 @@ configLocked++;
} }
} }
#endif #endif
items = aJson.getObjectItem(root, "items");
topics = aJson.getObjectItem(root, "topics");
// Digital output related Items initialization // Digital output related Items initialization
pollingItem=NULL; pollingItem=NULL;
@@ -1027,13 +1091,9 @@ configLocked++;
pollingItem = items->child; pollingItem = items->child;
} }
debugSerial<<endl; debugSerial<<endl;
inputs = aJson.getObjectItem(root, "in");
mqttArr = aJson.getObjectItem(root, "mqtt");
inputSetup(); inputSetup();
#ifdef SYSLOG_ENABLE
udpSyslogArr = aJson.getObjectItem(root, "syslog");
#endif
printConfigSummary(); printConfigSummary();
configLoaded=true; configLoaded=true;
configLocked--; configLocked--;
@@ -1225,7 +1285,7 @@ void cmdFunctionClearEEPROM(int arg_cnt, char **args){
for (int i = OFFSET_MAC; i < OFFSET_MAC+EEPROM_FIX_PART_LEN; i++) for (int i = OFFSET_MAC; i < OFFSET_MAC+EEPROM_FIX_PART_LEN; i++)
EEPROM.write(i, 0); EEPROM.write(i, 0);
for (int i = 0; i < EEPROM_SIGNATURE_LENGTH; i++) for (int i = 0; i < EEPROM_SIGNATURE_LENGTH; i++)
EEPROM.write(i+OFFSET_SIGNATURE,EEPROM_signature[i]); EEPROM.write(i+OFFSET_SIGNATURE,EEPROM_signature[i]);
infoSerial<<F("EEPROM cleared\n"); infoSerial<<F("EEPROM cleared\n");
@@ -1299,7 +1359,6 @@ int ipLoadFromFlash(short n, IPAddress &ip) {
lan_status loadConfigFromHttp(int arg_cnt, char **args) lan_status loadConfigFromHttp(int arg_cnt, char **args)
{ {
int responseStatusCode = 0; int responseStatusCode = 0;
char ch;
char URI[64]; char URI[64];
char configServer[32]=""; char configServer[32]="";
if (arg_cnt > 1) { if (arg_cnt > 1) {
@@ -1476,7 +1535,6 @@ void postTransmission() {
} }
void setup_main() { void setup_main() {
#if defined(__SAM3X8E__) #if defined(__SAM3X8E__)
memset(&UniqueID,0,sizeof(UniqueID)); memset(&UniqueID,0,sizeof(UniqueID));
#endif #endif
@@ -1859,8 +1917,9 @@ ethernetIdleCount--;
}; };
void modbusIdle(void) { void modbusIdle(void) {
LED.poll();
wdt_res(); wdt_res();
if (lanLoop() > 1) { if (lanLoop() > HAVE_IP_ADDRESS) {
yield(); yield();
mqttClient.loop(); mqttClient.loop();
#ifdef _artnet #ifdef _artnet

View File

@@ -59,7 +59,7 @@
#ifdef ARDUINO_ARCH_STM32 #ifdef ARDUINO_ARCH_STM32
#include "HttpClient.h" #include "HttpClient.h"
#include "UIPEthernet.h" //#include "UIPEthernet.h"
#include <NRFFlashStorage.h> #include <NRFFlashStorage.h>
//#include <EEPROM.h> //#include <EEPROM.h>
#endif #endif
@@ -161,7 +161,11 @@ extern Streamlog errorSerial;
#ifdef Wiz5500 #ifdef Wiz5500
#include <Ethernet2.h> #include <Ethernet2.h>
#else #else
#include <Ethernet.h> #ifdef ARDUINO_ARCH_STM32
#include "UIPEthernet.h"
#else
#include <Ethernet.h>
#endif
#endif #endif
#endif #endif
@@ -192,14 +196,19 @@ extern Artnet *artnet;
enum lan_status { enum lan_status {
INITIAL_STATE = 0, INITIAL_STATE = 0,
HAVE_IP_ADDRESS = 1, AWAITING_ADDRESS = 1,
IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER = 2, HAVE_IP_ADDRESS = 2,
RETAINING_COLLECTING = 3, LIBS_INITIALIZED = 3,
OPERATION = 4, IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER = 4,
AWAITING_ADDRESS = -10, RETAINING_COLLECTING = 5,
RECONNECT = 12, OPERATION = 6,
READ_RE_CONFIG = -11,
DO_NOTHING = -14 DO_REINIT = -10,
REINIT = - 11,
DO_RECONNECT = 12,
RECONNECT = 13,
READ_RE_CONFIG = -14,
DO_NOTHING = -15
}; };
typedef union { typedef union {

View File

@@ -2,6 +2,7 @@
#include <Arduino.h> #include <Arduino.h>
#ifdef SYSLOG_ENABLE #ifdef SYSLOG_ENABLE
extern bool syslogInitialized;
Streamlog::Streamlog (HardwareSerial * _serialPort, int _severity , Syslog * _syslog ) Streamlog::Streamlog (HardwareSerial * _serialPort, int _severity , Syslog * _syslog )
{ {
serialPort=_serialPort; serialPort=_serialPort;
@@ -54,6 +55,8 @@ void Streamlog::flush(void)
size_t Streamlog::write(uint8_t ch) size_t Streamlog::write(uint8_t ch)
{ {
#ifdef SYSLOG_ENABLE #ifdef SYSLOG_ENABLE
if (syslogInitialized)
{
if (ch=='\n') if (ch=='\n')
{ {
logBuffer[logBufferPos]=0; logBuffer[logBufferPos]=0;
@@ -64,6 +67,7 @@ size_t Streamlog::write(uint8_t ch)
{ {
if (logBufferPos<LOGBUFFER_SIZE-1 && (ch!='\r')) logBuffer[logBufferPos++]=ch; if (logBufferPos<LOGBUFFER_SIZE-1 && (ch!='\r')) logBuffer[logBufferPos++]=ch;
} }
}
#endif #endif
if (serialPort) return serialPort->write(ch); if (serialPort) return serialPort->write(ch);

View File

@@ -280,8 +280,8 @@ build_flags = !python get_build_flags.py due
; Need to place arduinoOTA utility from Arduino IDE distribution to folder in your PATH ; Need to place arduinoOTA utility from Arduino IDE distribution to folder in your PATH
;fix address and password ;fix address and password
;upload_flags = ;upload_flags =
upload_command = arduinoOTA -address 192.168.88.21 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE ;upload_command = arduinoOTA -address 192.168.88.21 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE
upload_protocol = custom ;upload_protocol = custom
lib_ignore = lib_ignore =
;DS2482_OneWire //UNCOMMENT for software 1-wire driver ;DS2482_OneWire //UNCOMMENT for software 1-wire driver
DHT sensor library for ESPx DHT sensor library for ESPx
@@ -331,7 +331,7 @@ lib_deps =
platform = atmelavr platform = atmelavr
board = megaatmega2560 board = megaatmega2560
;upload_port = net:192.168.88.31:23 ;upload_port = net:192.168.88.31:23
;upload_port = net:192.168.88.2:23000 upload_port = net:192.168.88.2:23000
framework = arduino framework = arduino
build_flags = !python get_build_flags.py mega2560slim-5100 build_flags = !python get_build_flags.py mega2560slim-5100
lib_ignore = lib_ignore =
@@ -453,7 +453,8 @@ lib_ignore =
M5Stack M5Stack
lib_deps = lib_deps =
https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/Arduino-Temperature-Control-Library.git
https://github.com/anklimov/DS2482_OneWire ;COMMENT/UNCOMMENT next line for software 1-wire driver on/off
;https://github.com/anklimov/DS2482_OneWire
https://github.com/anklimov/ESP-Dmx https://github.com/anklimov/ESP-Dmx
ESP8266HTTPClient ESP8266HTTPClient
https://github.com/anklimov/aJson https://github.com/anklimov/aJson
@@ -578,7 +579,7 @@ platform = atmelsam
framework = arduino framework = arduino
board = due board = due
build_flags = !python get_build_flags.py lighthub21 build_flags = !python get_build_flags.py lighthub21
;upload_command = arduinoOTA -address 192.168.88.59 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE ;upload_command = arduinoOTA -address 192.168.11.172 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE
;upload_command = arduinoOTA -address 192.168.88.34 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE ;upload_command = arduinoOTA -address 192.168.88.34 -port 65280 -username arduino -password password -b -upload /sketch -sketch $SOURCE
;upload_protocol = custom ;upload_protocol = custom
lib_ignore = lib_ignore =
@@ -590,7 +591,7 @@ lib_ignore =
WifiManager WifiManager
DmxSimple DmxSimple
httpClient httpClient
Ethernet Ethernet2
Ethernet3 Ethernet3
Ethernet5100 Ethernet5100
NRFFlashStorage NRFFlashStorage
@@ -609,7 +610,8 @@ lib_deps =
https://github.com/anklimov/aJson https://github.com/anklimov/aJson
https://github.com/anklimov/CmdArduino https://github.com/anklimov/CmdArduino
https://github.com/anklimov/ModbusMaster https://github.com/anklimov/ModbusMaster
https://github.com/anklimov/Ethernet2 ;https://github.com/anklimov/Ethernet2
https://github.com/anklimov/Ethernet
https://github.com/knolleary/pubsubclient.git https://github.com/knolleary/pubsubclient.git
https://github.com/anklimov/Artnet.git https://github.com/anklimov/Artnet.git
FastLED@3.3.2 FastLED@3.3.2
@@ -720,3 +722,4 @@ lib_deps =
https://github.com/anklimov/NRFFlashStorage https://github.com/anklimov/NRFFlashStorage
Adafruit NeoPixel Adafruit NeoPixel
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
SPI