ToSa27-tosa

Conflicts:
	libraries/MySensors/examples/EthernetGateway/EthernetGateway.ino
This commit is contained in:
Henrik Ekblad
2014-10-23 00:30:01 +02:00
17 changed files with 463 additions and 323 deletions
+2 -2
View File
@@ -56,9 +56,9 @@ static uint8_t sendAndWait(uint8_t reqType, uint8_t resType) {
msg.type = reqType;
for (uint8_t i = 0; i < 10; i++) {
sendWrite(msg);
for (uint16_t j = 0; j < 20; j++) {
for (uint8_t j = 0; j < 20; j++) {
wdt_reset();
for (uint16_t j = 0; j < 100; j++) {
for (uint8_t j = 0; j < 100; j++) {
wdt_reset();
uint8_t pipe;
boolean avail = available(&pipe);
+200 -204
View File
@@ -1,4 +1,4 @@
:1070000011E0A0E0B1E0E0E4FDE702C005900D92E0
:1070000011E0A0E0B1E0E8EFFCE702C005900D92CE
:10701000A030B107D9F711E0A0E0B1E001C01D92A6
:10702000A83DB107E1F711248091610090E08F70D5
:107030009070909301018093000182E090E020E83D
@@ -7,208 +7,204 @@
:107060000FBE20936000A8951092CF011092D0011E
:107070001092D1011092D2011092D3011092D4013A
:107080001092D5011092D60184B18E6284B92498F1
:1070900085B1857D85B92A9A8AE090E0B3D184E0F4
:1070A0006FE520D281E06BE31DD285E06CE41AD25B
:1070B00086E0E5D1682F607D676286E013D280E0CC
:1070C000DED1682F6C6080E00DD287E060E70AD2E5
:1070D0002A9881E090E096D180E5A6D183E7A4D1FB
:1070E0002A9A81E090E08ED18DE1C9D1682F666047
:1070F0008DE1F8D18CE1C3D1682F6F638CE1F2D1BF
:1071000082EEADD181EEABD104D280E0B8D1682F50
:107110006E7F80E0E7D182E00FEF1CEF21EE38EACE
:1071200048EA50E060E070E002D2A89582E091E089
:1071300060E070E043E050E02DEE39E38AD5A89599
:107140008091020180930E0180930D014FD22FEFA9
:10715000209313018091110192E0909310012093EC
:107160000401887083608093110120930F0187E0F0
:1071700068E04AD3882309F42AD310920F01809142
:1071800002018F3F09F038C081E00FEF1CEF21EEC4
:1071900038EA48EA50E060E070E0C9D183E064E09A
:1071A00033D3882309F407D38091320182958695E1
:1071B0008770813019F48091350105C0882329F446
:1071C00085E391E028D580930201809102018F3FF1
:1071D00009F4F1D280910201F999FECF1FBA12BCD5
:1071E00011BC80BD0FB6F894FA9AF99A0FBE80933D
:1071F0000E0180930D01FAD185E091E06BE171E021
:1072000048E050E02DEE39E324D5909111019871BA
:10721000809110018770806280931001946C90932C
:1072200011018091050190910601909315018093C1
:1072300014018091070190910801909317018093A8
:10724000160180E061E0E0D2882309F4C0D22091E9
:10725000370130913801809107019091080128177A
:107260003907C9F42091390130913A01809109011F
:1072700090910A012817390771F420913B01309150
:107280003C0180910B0190910C012817390719F4EA
:107290005DD281119CD240913501509136015093BD
:1072A0000601409305012091370130913801309358
:1072B0000801209307018091390190913A01909340
:1072C0000A018093090180913B0190913C019093C8
:1072D0000C0180930B01F4E1EF2EF1E0FF2E809181
:1072E00010018770806380931001509315014093C3
:1072F00014013093170120931601C0E0D0E000E99B
:107300001FEFBB24B394E5E0CE2E71E1D72E4DC024
:10731000F701D583C48382E063E076D2882309F441
:107320004AD2902F90599F77E92FF0E0E15BFE4F12
:10733000ABE3B1E080E10D9001928150E1F790372D
:1073400009F030C03FB7F894F999FECF83E0F80117
:1073500080935700E89507B600FCFDCFA801AFE485
:10736000B1E02C9111968C91119790E0982F88277D
:10737000820F911D1296FA010C01B0925700E89508
:1073800011244E5F5F4FF1E0AF3CBF0751F7F801AA
:10739000C0925700E89507B600FCFDCFD092570089
:1073A000E8953FBF2196005F1F4F809109019091A2
:1073B0000A01C817D90708F4ABCFA895C7D188230D
:1073C00049F08BE191E065E071E048E050E024EFA6
:1073D00039E35BD4F0D180E090E0F999FECF92BD23
:1073E00081BDF89A80B50895F999FECF1FBA92BD74
:1073F00081BD60BD0FB6F894FA9AF99A0FBE089550
:107400000000089540E050E00BC020E030E00000B4
:107410002F5F3F4F61E0243F3607C9F74F5F5F4F53
:107420004817590790F308950F931F93182F00E002
:10743000E7DF17FD02C02B9801C02B9AE1DF2D9AE0
:1074400083B1110F82958170182BDADF2D98D8DF68
:107450000F5F083069F7812F1F910F9108951F93D7
:10746000182F2A9881E090E0CDDF812FDDDF182FE3
:107470002A9A81E090E0C6DF812F1F9108951F9323
:10748000182F2A9881E090E0BDDF812F8F71CCDF2B
:107490008FEFCADF182F2A9A81E090E0B3DF812FA7
:1074A0001F9108950F931F93CF93DF93182FEB0134
:1074B000042F2A9881E090E0A5DF1F71812F806260
:1074C000B3DF182F03C08991AFDF01500023D9F734
:1074D0002A9A81E090E096DF812FDF91CF911F9172
:1074E0000F9108950F931F93182F062F2A9881E06C
:1074F00090E088DF1F71812F806296DF182F802F28
:1075000093DF2A9A81E090E07DDF812F1F910F9118
:10751000089580E0B4DF81FD09C080E0B0DF682F0E
:10752000626080E0DFDF85E090E06CDF08957F92AD
:107530008F929F92AF92BF92CF92DF92EF92FF9283
:107540000F931F93DF93CF93CDB7DEB728970FB676
:10755000F894DEBF0FBECDBF782E480159016A01F5
:107560007B01882381F40093CF019092D001209376
:10757000D101B092D2014093D301D092D401609353
:10758000D501F092D60189829A82AB82BC82CD82EB
:10759000DE82EF82F88681E0871538F0872D865FDE
:1075A000BE016F5F7F4F45E07DDF82E068DF21E055
:1075B00030E002C0220F331F7A94E2F7682F622B6B
:1075C00082E090DF28960FB6F894DEBF0FBECDBFE5
:1075D000CF91DF911F910F91FF90EF90DF90CF90AF
:1075E000BF90AF909F908F907F9008957F928F92E1
:1075F0009F92AF92BF92CF92DF92EF92FF920F9342
:107600001F93DF93CF93CDB7DEB728970FB6F894CB
:10761000DEBF0FBECDBF8F3F09F483C0082F10E03F
:1076200020E030E040E050E060E070E089831A83C1
:107630002B833C834D835E836F83788788243CEF64
:10764000932E21EEA22E98EAB92E88EAC82EDD24C8
:10765000EE24FF24080D81E09981091708F080E0ED
:10766000192D91E0AA819A1608F090E0E82FE10F19
:1076700081E0E11708F080E0982B1E2F2A2D772457
:107680007394BB81AB1608F07724920F81E09217B8
:1076900008F080E0782A292F3B2D91E0EC81BE167E
:1076A00008F090E0E72DE30F81E0E31708F080E0B9
:1076B000982B3E2F4C2D77247394FD81CF1608F024
:1076C0007724940F81E0941708F080E0782A492FFE
:1076D0005D2D91E08E81D81608F090E0E72DE50F42
:1076E00081E0E51708F080E0982B5E2F6E2D77245F
:1076F0007394AF81EA1608F07724960F81E096170D
:1077000008F080E0782A692F7F0C772D59016A01F3
:10771000E92E80E00CDF81E09501A6016E2D772D2A
:1077200006DF28960FB6F894DEBF0FBECDBFCF910F
:10773000DF911F910F91FF90EF90DF90CF90BF905E
:10774000AF909F908F907F90089518954091090178
:1077500050910A0164E0440F551F6A95E1F7E0E09B
:10776000F0E02FEF3FEF19C084912827822F8295F8
:107770008227082E869586958025082E8695802559
:107780008770022E232F869507948795302D282702
:1077900006948795302528273196E417F50720F3BE
:1077A00040E080910B0190910C012817390709F4F2
:1077B00041E0842F089528E088E190E00FB6F89426
:1077C000A895809360000FBE20936000FFCFBEDFBE
:1077D0008823C1F088E10FB6F8948093600010927E
:1077E00060000FBE809100019091010120E80FB66A
:1077F000F89420936100809361000FBEE0E0F0E018
:1078000009950895D8DF08952F923F924F925F9285
:107810006F927F928F929F92AF92BF92CF92DF92A0
:10782000EF92FF920F931F93DF93CF93CDB7DEB705
:10783000E3970FB6F894DEBF0FBECDBF6BA7809362
:1078400012016624B9E02B2E312C2C0E3D1E2E0188
:107850000894411C511CD101EDE0F1E081E201905E
:107860000D928150E1F7109103017C842B852AA7AA
:1078700050DE299881E090E0C5DD81EEF0DD82EEFA
:10788000EEDD80E0FCDD682F6E7F80E02BDE30E0F7
:1078900040E050E060E070E080E090E01CA73DA791
:1078A0004EA75FA768AB79AB8AAB9BAB8824ACEFE4
:1078B0009A2EF1EEAF2EE8EABE2E78EAC72EDD242E
:1078C000EE24FF24012F080D81E0011708F080E06D
:1078D000192D91E0EDA59E1608F090E0E82FE10F3C
:1078E00081E0E11708F080E0982B1E2F2A2DE1E0BF
:1078F000FEA5AF1608F0E0E0920F81E0921708F0C5
:1079000080E0E82B292F3B2D91E08FA5B81608F0D9
:1079100090E0E30F81E0E31708F080E0982B3E2F22
:107920004C2DE1E0F8A9CF1608F0E0E0940F81E0DB
:10793000941708F080E0E82B492F5D2D91E089A98C
:10794000D81608F090E0E50F81E0E51708F080E038
:10795000982B5E2F6E2D81E0EAA9EE1608F080E0EC
:10796000E92FE60F91E0E61708F090E0892B8F0DE4
:1079700009831A832B833C834D835E83EF8388873F
:107980008AE0B20145E08EDD80E1B20145E08ADDAA
:10799000FAA5FF3F11F010EA01C010EB769476943F
:1079A000769427E0720E2A9881E090E02BDD812FFB
:1079B0003BDD81017101E70CF11C04C0F8018191EC
:1079C0008F0132DD0E151F05C9F72A9A81E090E07C
:1079D00019DD299A81E090E015DD299881E090E099
:1079E00011DD8FEF3CDD8073E1F387E060E77ADD46
:1079F00084FF02C081EE33DD8CDD80E040DD682F46
:107A0000616080E06FDD87E060E76CDD0091CF01B1
:107A10001091D0012091D1013091D2014091D30138
:107A20005091D4016091D5017091D601802F812BA6
:107A3000822B832B842B852B862B872B61F009834C
:107A40001A832B833C834D835E836F8378878AE020
:107A5000B20145E027DD82EE02DD81EE00DD299AEC
:107A600081E090E0CFDCAA24BB24A895CC24DD24BF
:107A7000A89587E104DD80FD9CC08FEFF0DCE82E47
:107A8000E694F7E0EF22EF1609F493C02A9881E01C
:107A900090E0B8DC80E6C8DC8FEFC6DCF82E2A9ACE
:107AA00081E090E0AFDC20E22F1518F482EED7DC05
:107AB000FF242A9881E090E0A5DC81E6B5DC0EE2A7
:107AC00011E006C08FEFB0DCF80181938F01FA94CA
:107AD000FF20C1F72A9A81E090E094DC87E060E71C
:107AE00001DD2A9881E090E08DDC8E2D886A9CDC97
:107AF0008E2D9ADC2A9A81E090E084DC809131011D
:107B00008770823009F058C0909130018091020155
:107B1000981709F04EC080913201682F70E0CB01B8
:107B200087709070039709F034C0809133018830DA
:107B300009F02FC040913501242F332727FD3095C0
:107B40008091040190E001972817390714F5242F3C
:107B50002F5F2093040140912F0140930301F99975
:107B6000FECF1FBA81E090E092BD81BD40BD0FB64F
:107B7000F894FA9AF99A0FBEF999FECF1FBA42E02B
:107B800050E052BD41BD20BD0FB6F894FA9AF99A63
:107B90000FBE8091110190E0862797278770907023
:107BA000892B39F4809133015BA5851711F481E0AD
:107BB00019C081E090E026DC0894C11CD11C64E669
:107BC000C616D10409F054CF0894A11CB11C74E16D
:107BD000A716B10409F049CF63948AE0681609F04A
:107BE0003ACE80E0E3960FB6F894DEBF0FBECDBF6D
:107BF000CF91DF911F910F91FF90EF90DF90CF9089
:107C0000BF90AF909F908F907F906F905F904F90BC
:107C10003F902F900895FC0188279927E89421919F
:107C20002032E9F3293010F02E30C8F32B3241F026
:107C30002D3239F4689404C00E94613E820F911D78
:107C4000219120532A30C0F31EF4909581959F4FC7
:107C50000895A0E0B0E0EFE2FEE30C94733E7C01F7
:107C6000EB018A01690109C0CE012196F60109954F
:107C7000F70181937F010150104001151105A1F713
:107C8000CDB7DEB7E8E00C948F3EA0E0B0E0EBE4C7
:107C9000FEE30C94733EEC017B018A01690109C08B
:107CA000CE012196F70161917F01F60109950150FE
:107CB000104001151105A1F7CDB7DEB7E8E00C942F
:107CC0008F3E7AE0979F902D879F802D910D1124F4
:107CD00008952F923F924F925F926F927F928F9270
:107CE0009F92AF92BF92CF92DF92EF92FF920F934B
:107CF0001F93CF93DF93CDB7DEB7CA1BDB0B0FB655
:107D0000F894DEBF0FBECDBF09942A883988488811
:107D10005F846E847D848C849B84AA84B984C884A7
:107D2000DF80EE80FD800C811B81AA81B981CE0F9E
:107D3000D11D0FB6F894DEBF0FBECDBFED01089583
:1070900085B1857D85B92A9A8AE0B1D184E06FE512
:1070A00015D281E06BE312D285E06CE40FD286E06A
:1070B000DED1682F607D676286E008D280E0D7D19C
:1070C000682F6C6080E002D287E060E7FFD12A98E9
:1070D00081E095D180E5A2D183E7A0D12A9A81E011
:1070E0008ED18DE1C4D1682F66608DE1EFD18CE146
:1070F000BED1682F6F638CE1E9D182EEAAD181EE17
:10710000A8D1F9D180E0B3D1682F6E7F80E0DED1C5
:1071100082E00FEF1CEF21EE38EA48EA50E060E031
:1071200070E0F6D1A89582E091E060E070E043E085
:1071300050E02AEE39E369D5A89580910201809349
:107140000E0180930D0143D22FEF20931301809104
:10715000110192E0909310012093040188708360E4
:107160008093110120930F0187E068E03ED38823CC
:1071700009F41ED310920F01809102018F3F09F094
:1071800038C081E00FEF1CEF21EE38EA48EA50E00A
:1071900060E070E0BDD183E064E027D3882309F488
:1071A000FBD280913201829586958770813019F4E7
:1071B0008091350105C0882329F485E391E007D546
:1071C00080930201809102018F3F09F4E5D2809102
:1071D0000201F999FECF1FBA12BC11BC80BD0FB6D7
:1071E000F894FA9AF99A0FBE80930E0180930D01DC
:1071F000EED185E091E06BE171E048E050E02AEEED
:1072000039E303D590911101987180911001877035
:10721000806280931001946C90931101809105011C
:1072200090910601909315018093140180910701BC
:1072300090910801909317018093160180E061E01E
:10724000D4D2882309F4B4D2209137013091380187
:10725000809107019091080128173907C9F42091FE
:10726000390130913A018091090190910A01281762
:10727000390771F420913B0130913C0180910B0161
:1072800090910C012817390719F451D2811190D22D
:10729000409135015091360150930601409305010C
:1072A0002091370130913801309308012093070174
:1072B0008091390190913A0190930A0180930901DC
:1072C00080913B0190913C0190930C0180930B01C4
:1072D000F4E1EF2EF1E0FF2E8091100187708063C2
:1072E00080931001509315014093140130931701BE
:1072F00020931601C0E0D0E000E91FEFBB24B39457
:10730000E5E0CE2E71E1D72E4DC0F701D583C483C1
:1073100082E063E06AD2882309F43ED2902F90592C
:107320009F77E92FF0E0E15BFE4FABE3B1E080E156
:107330000D9001928150E1F7903709F030C03FB7CE
:10734000F894F999FECF83E0F80180935700E8950F
:1073500007B600FCFDCFA801AFE4B1E02C91119677
:107360008C91119790E0982F8827820F911D12968B
:10737000FA010C01B0925700E89511244E5F5F4F5F
:10738000F1E0AF3CBF0751F7F801C0925700E89514
:1073900007B600FCFDCFD0925700E8953FBF21967D
:1073A000005F1F4F8091090190910A01C817D9070A
:1073B00008F4ABCFA895BBD1882349F08BE191E0CD
:1073C00065E071E048E050E021EF39E33AD4E4D1E0
:1073D00080E090E0F999FECF92BD81BDF89A80B52A
:1073E0000895F999FECF1FBA92BD81BD60BD0FB659
:1073F000F894FA9AF99A0FBE08950000089590E063
:107400000AC020E030E000002F5F3F4F41E0243F02
:107410003407C9F79F5F9817A0F308950F931F9340
:10742000182F00E0EADF17FD02C02B9801C02B9A4D
:10743000E4DF2D9A83B1110F82958170182BDDDF67
:107440002D98DBDF0F5F083069F7812F1F910F91B7
:1074500008951F93182F2A9881E0D1DF812FDEDF56
:10746000182F2A9A81E0CBDF812F1F9108951F9357
:10747000182F2A9881E0C3DF812F8F71CFDF8FEF24
:10748000CDDF182F2A9A81E0BADF812F1F9108954E
:107490000F931F93CF93DF93182FEB01042F2A989C
:1074A00081E0ADDF1F71812F8062B8DF182F03C02C
:1074B0008991B4DF01500023D9F72A9A81E09FDF38
:1074C000812FDF91CF911F910F9108950F931F93FB
:1074D000182F062F2A9881E092DF1F71812F80627A
:1074E0009DDF182F802F9ADF2A9A81E088DF812F75
:1074F0001F910F91089580E0BADF81FD08C080E000
:10750000B6DF682F626080E0E1DF85E078DF089514
:107510007F928F929F92AF92BF92CF92DF92EF9223
:10752000FF920F931F93DF93CF93CDB7DEB72897CA
:107530000FB6F894DEBF0FBECDBF782E48015901BB
:107540006A017B01882381F40093CF019092D001DE
:107550002093D101B092D2014093D301D092D401B3
:107560006093D501F092D60189829A82AB82BC8267
:10757000CD82DE82EF82F88681E0871538F0872D94
:10758000865FBE016F5F7F4F45E082DF82E06FDF85
:1075900021E030E002C0220F331F7A94E2F7682F17
:1075A000622B82E093DF28960FB6F894DEBF0FBE01
:1075B000CDBFCF91DF911F910F91FF90EF90DF90A2
:1075C000CF90BF90AF909F908F907F9008957F92C3
:1075D0008F929F92AF92BF92CF92DF92EF92FF92E3
:1075E0000F931F93DF93CF93CDB7DEB728970FB6D6
:1075F000F894DEBF0FBECDBF8F3F09F483C0082FC4
:1076000010E020E030E040E050E060E070E089838E
:107610001A832B833C834D835E836F837887882412
:107620003CEF932E21EEA22E98EAB92E88EAC82EBE
:10763000DD24EE24FF24080D81E09981091708F06C
:1076400080E0192D91E0AA819A1608F090E0E82FC9
:10765000E10F81E0E11708F080E0982B1E2F2A2D22
:1076600077247394BB81AB1608F07724920F81E0E6
:10767000921708F080E0782A292F3B2D91E0EC81C9
:10768000BE1608F090E0E72DE30F81E0E31708F065
:1076900080E0982B3E2F4C2D77247394FD81CF16DC
:1076A00008F07724940F81E0941708F080E0782A9E
:1076B000492F5D2D91E08E81D81608F090E0E72DDE
:1076C000E50F81E0E51708F080E0982B5E2F6E2D26
:1076D00077247394AF81EA1608F07724960F81E03F
:1076E000961708F080E0782A692F7F0C772D5901D2
:1076F0006A01E92E80E00CDF81E09501A6016E2D84
:10770000772D06DF28960FB6F894DEBF0FBECDBFEB
:10771000CF91DF911F910F91FF90EF90DF90CF906D
:10772000BF90AF909F908F907F9008951895409153
:10773000090150910A0164E0440F551F6A95E1F771
:10774000E0E0F0E02FEF3FEF19C084912827822F6F
:1077500082958227082E869586958025082E869507
:1077600080258770022E232F869507948795302DCC
:10777000282706948795302528273196E417F507A2
:1077800020F340E080910B0190910C0128173907FC
:1077900009F441E0842F089528E088E190E00FB6D5
:1077A000F894A895809360000FBE20936000FFCFEF
:1077B000BEDF8823C1F088E10FB6F89480936000A3
:1077C000109260000FBE809100019091010120E8AD
:1077D0000FB6F89420936100809361000FBEE0E043
:1077E000F0E009950895D8DF08952F923F924F92C7
:1077F0005F926F927F928F929F92AF92BF92CF9241
:10780000DF92EF92FF920F931F93DF93CF93CDB749
:10781000DEB7E3970FB6F894DEBF0FBECDBF6BA700
:10782000809312016624B9E02B2E312C2C0E3D1EC4
:107830002E010894411C511CD101EDE0F1E081E2E0
:1078400001900D928150E1F7109103017C842B850A
:107850002AA751DE299881E0D2DD81EEFADD82EEA1
:10786000F8DD80E004DE682F6E7F80E02FDE30E000
:1078700040E050E060E070E080E090E01CA73DA7B1
:107880004EA75FA768AB79AB8AAB9BAB8824ACEF04
:107890009A2EF1EEAF2EE8EABE2E78EAC72EDD244E
:1078A000EE24FF24012F080D81E0011708F080E08D
:1078B000192D91E0EDA59E1608F090E0E82FE10F5C
:1078C00081E0E11708F080E0982B1E2F2A2DE1E0DF
:1078D000FEA5AF1608F0E0E0920F81E0921708F0E5
:1078E00080E0E82B292F3B2D91E08FA5B81608F0FA
:1078F00090E0E30F81E0E31708F080E0982B3E2F43
:107900004C2DE1E0F8A9CF1608F0E0E0940F81E0FB
:10791000941708F080E0E82B492F5D2D91E089A9AC
:10792000D81608F090E0E50F81E0E51708F080E058
:10793000982B5E2F6E2D81E0EAA9EE1608F080E00C
:10794000E92FE60F91E0E61708F090E0892B8F0D04
:1079500009831A832B833C834D835E83EF8388875F
:107960008AE0B20145E094DD80E1B20145E090DDBE
:10797000FAA5FF3F11F010EA01C010EB769476945F
:10798000769427E0720E2A9881E039DD812F46DD5A
:1079900081017101E70CF11C04C0F80181918F0194
:1079A0003DDD0E151F05C9F72A9A81E028DD299AC9
:1079B00081E025DD299881E022DD8FEF4ADD8073AB
:1079C000E1F387E060E782DD84FF02C081EE41DD04
:1079D00092DD80E04CDD682F616080E077DD87E03C
:1079E00060E774DD0091CF011091D0012091D101A9
:1079F0003091D2014091D3015091D4016091D501D1
:107A00007091D601802F812B822B832B842B852B89
:107A1000862B872B61F009831A832B833C834D834C
:107A20005E836F8378878AE0B20145E031DD82EEC4
:107A300010DD81EE0EDD299A81E0E1DCCC24A895F1
:107A4000DD24A89587E113DD80FD96C08FEF01DD71
:107A5000E82EE694F7E0EF22EF1609F48DC02A989D
:107A600081E0CDDC80E6DADC8FEFD8DCF82E2A9AD4
:107A700081E0C5DC20E22F1518F482EEEADCFF2459
:107A80002A9881E0BCDC81E6C9DC0EE211E006C088
:107A90008FEFC4DCF80181938F01FA94FF20C1F7C6
:107AA0002A9A81E0ACDC87E060E710DD2A9881E06B
:107AB000A6DC8E2D886AB2DC8E2DB0DC2A9A81E09D
:107AC0009EDC809131018770823009F057C090911F
:107AD000300180910201981709F04EC08091320167
:107AE000682F70E0CB0187709070039709F034C065
:107AF00080913301883009F02FC040913501242F47
:107B0000332727FD30958091040190E001972817D5
:107B1000390714F5242F2F5F2093040180912F0142
:107B200080930301F999FECF1FBA41E050E052BDA6
:107B300041BD80BD0FB6F894FA9AF99A0FBEF99933
:107B4000FECF1FBA82E090E092BD81BD20BD0FB68E
:107B5000F894FA9AF99A0FBE8091110190E0862765
:107B6000972787709070892B39F4809133019BA5FA
:107B7000891711F481E012C081E041DCD394E4E67E
:107B8000DE1609F05ECFC394F4E1CF1609F057CFAB
:107B900063942AE0621609F04FCE80E0E3960FB6B8
:107BA000F894DEBF0FBECDBFCF91DF911F910F9133
:107BB000FF90EF90DF90CF90BF90AF909F908F900D
:107BC0007F906F905F904F903F902F900895FC01B1
:107BD00088279927E89421912032E9F3293010F081
:107BE0002E30C8F32B3241F02D3239F4689404C0A2
:107BF0000E943D3E820F911D219120532A30C0F3F7
:107C00001EF4909581959F4F0895A0E0B0E0EBE0C1
:107C1000FEE30C944F3E7C01EB018A01690109C02F
:107C2000CE012196F6010995F70181937F0101505C
:107C3000104001151105A1F7CDB7DEB7E8E00C94AF
:107C40006B3EA0E0B0E0E7E2FEE30C944F3EEC01B7
:107C50007B018A01690109C0CE012196F70161917A
:107C60007F01F60109950150104001151105A1F79A
:107C7000CDB7DEB7E8E00C946B3E7AE0979F902D8D
:107C8000879F802D910D112408952F923F924F923E
:107C90005F926F927F928F929F92AF92BF92CF929C
:107CA000DF92EF92FF920F931F93CF93DF93CDB7A5
:107CB000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF1D
:107CC00009942A88398848885F846E847D848C84EE
:107CD0009B84AA84B984C884DF80EE80FD800C81F7
:107CE0001B81AA81B981CE0FD11D0FB6F894DEBFDA
:087CF0000FBECDBFED010895A8
:040000030000700089
:00000001FF
+3 -2
View File
@@ -32,8 +32,9 @@ static void delayu() {
asm("nop");
}
static void delaym(uint16_t t) {
uint16_t d, a;
static void delaym(uint8_t t) {
uint8_t d;
uint16_t a;
for (d = 0; d < t; d++)
for (a = 0; a < DELAY_M; a++)
asm("nop");
+3
View File
@@ -706,5 +706,8 @@ dbc.connect('mongodb://' + dbAddress + ':' + dbPort + '/' + dbName, function(err
} else {
throw new Error('unknown Gateway type');
}
setInterval(function() {
sendTime(BROADCAST_ADDRESS, NODE_SENSOR_ID, gw);
}, 5*60*1000);
});
+13 -8
View File
@@ -4,17 +4,22 @@
/***
* Configure Sensor Network
*/
#define RF24_CHANNEL 76 //RF channel for the sensor net, 0-127
#define RF24_DATARATE RF24_250KBPS //RF24_250KBPS for 250kbs, RF24_1MBPS for 1Mbps, or RF24_2MBPS for 2Mbps
#define RF24_PA_LEVEL RF24_PA_MAX //Sensor PA Level == RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBM, and RF24_PA_MAX=0dBm
#define RF24_PA_LEVEL_GW RF24_PA_LOW //Gateway PA Level, defaults to Sensor net PA Level. Tune here if using an amplified nRF2401+ in your gateway.
#define BASE_RADIO_ID ((uint64_t)0xA8A8E1FC00LL) // This is also act as base value for sensor nodeId addresses. Change this (or channel) if you have more than one sensor network.
// pick ONE of these - other board layouts can be easily added this way
#define MYSENSORS_SENSOR
//#define MYSENSORS_SERIAL_GATEWAY
//#define MYSENSORS_ETHERNET_MQTT_GATEWAY
// MySensors online examples defaults
#define DEFAULT_CE_PIN 9
#define DEFAULT_CS_PIN 10
// Choose radio type by enabling one of the following
#define MYSENSORS_RF_NRF24
#ifdef MYSENSORS_RF_NRF24
#include "MyDriverNRF24.h"
typedef class MyDriverNRF24 MyDriverClass;
#endif
/***
* Enable/Disable debug logging
*/
+4
View File
@@ -0,0 +1,4 @@
#include "MyDriver.h"
MyDriver::MyDriver() {
}
+52
View File
@@ -0,0 +1,52 @@
#ifndef MyDriver_h
#define MyDriver_h
#include <stdint.h>
#ifdef DEBUG
#define debug(x,...) debugPrint(x, ##__VA_ARGS__)
#else
#define debug(x,...)
#endif
#define AUTO 0xFF // 0-254. Id 255 is reserved for auto initialization of nodeId.
#define NODE_SENSOR_ID 0xFF // Node child id is always created for when a node
// This is the nodeId for sensor net gateway receiver sketch (where all sensors should send their data).
#define GATEWAY_ADDRESS ((uint8_t)0)
#define BROADCAST_ADDRESS ((uint8_t)0xFF)
class MyDriver
{
public:
// MyDriver constructor
// different parameters would be needed depending on radio module (e.g. pins connected etc.)
// keeping these parameters as #define's in MyConfig to streamline the driver interface
MyDriver();
// init()
// different parameters would be needed depending on radio module (e.g. channel, power, crc, etc.)
// keeping these parameters as #define's in MyConfig to streamline the driver interface
virtual void init() = 0;
// setAddress(address)
// set the node address and start listening to that address (and the broadcast address)
virtual void setAddress(uint8_t address) = 0;
// getAddress()
// returns the current address from the radio driver
virtual uint8_t getAddress() = 0;
// send(to, data, len)
// reliable transmission of the data with given length (in bytes) to the destination address
// returns true if successfully submitted
virtual bool send(uint8_t to, const void* data, uint8_t len) = 0;
// available(to)
// returns true if a new packet arrived in the rx buffer
// populates "to" parameter with the address the packet was sent to (either own address or broadcast)
virtual bool available(uint8_t *to) = 0;
// receive(data)
// returns length of received packet
// populates "data" parameter with received data
virtual uint8_t receive(void* data) = 0;
// powers down the radio
virtual void powerDown() = 0;
};
#endif
+68
View File
@@ -0,0 +1,68 @@
#include "MyDriver.h"
#include "MyDriverNRF24.h"
MyDriverNRF24::MyDriverNRF24() : MyDriver() {
rf24 = new RF24(RF24_CE_PIN, RF24_CS_PIN);
}
void MyDriverNRF24::init() {
// Start up the radio library
rf24->begin();
if (!rf24->isPVariant()) {
debug(PSTR("check wires\n"));
while(1);
}
rf24->setAutoAck(1);
rf24->setAutoAck(BROADCAST_PIPE,false); // Turn off auto ack for broadcast
rf24->enableAckPayload();
rf24->setChannel(RF24_CHANNEL);
rf24->setPALevel(RF24_PA_LEVEL);
rf24->setDataRate(RF24_DATARATE);
rf24->setRetries(5,15);
rf24->setCRCLength(RF24_CRC_16);
rf24->enableDynamicPayloads();
// All nodes listen to broadcast pipe (for FIND_PARENT_RESPONSE messages)
rf24->openReadingPipe(BROADCAST_PIPE, TO_ADDR(BROADCAST_ADDRESS));
}
void MyDriverNRF24::setAddress(uint8_t address) {
_address = address;
rf24->openReadingPipe(WRITE_PIPE, TO_ADDR(address));
rf24->openReadingPipe(CURRENT_NODE_PIPE, TO_ADDR(address));
rf24->startListening();
}
uint8_t MyDriverNRF24::getAddress() {
return _address;
}
bool MyDriverNRF24::send(uint8_t to, const void* data, uint8_t len) {
// Make sure radio has powered up
rf24->powerUp();
rf24->stopListening();
rf24->openWritingPipe(TO_ADDR(to));
bool ok = rf24->write(data, len, to == BROADCAST_ADDRESS);
rf24->startListening();
return ok;
}
bool MyDriverNRF24::available(uint8_t *to) {
uint8_t pipe = 255;
boolean avail = rf24->available(&pipe);
if (pipe == CURRENT_NODE_PIPE)
*to = _address;
else if (pipe == BROADCAST_PIPE)
*to = BROADCAST_ADDRESS;
return (rf24->available() && pipe < 6);
}
uint8_t MyDriverNRF24::receive(void* data) {
uint8_t len = rf24->getDynamicPayloadSize();
rf24->read(data, len);
}
void MyDriverNRF24::powerDown() {
rf24->powerDown();
}
+56
View File
@@ -0,0 +1,56 @@
#ifndef MyCommDriver_h
#define MyCommDriver_h
#include "MyConfig.h"
#include "MyDriver.h"
#include <stdint.h>
#include "utility/RF24.h"
#include "utility/RF24_config.h"
#ifdef MYSENSORS_SENSOR
#define RF24_CE_PIN 9
#define RF24_CS_PIN 10
#define RF24_PA_LEVEL RF24_PA_MAX
#endif
#ifdef MYSENSORS_SERIAL_GATEWAY
#define RF24_CE_PIN 9
#define RF24_CS_PIN 10
#define RF24_PA_LEVEL RF24_PA_LOW
#endif
#ifdef MYSENSORS_ETHERNET_MQTT_GATEWAY
#define RF24_CE_PIN 5
#define RF24_CS_PIN 6
#define RF24_PA_LEVEL RF24_PA_LOW
#endif
#define RF24_CHANNEL 76 //RF channel for the sensor net, 0-127
#define RF24_DATARATE RF24_250KBPS //RF24_250KBPS for 250kbs, RF24_1MBPS for 1Mbps, or RF24_2MBPS for 2Mbps
#define RF24_BASE_RADIO_ID ((uint64_t)0xA8A8E1FC00LL) // This is also act as base value for sensor nodeId addresses. Change this (or channel) if you have more than one sensor network.
#define TO_ADDR(x) (RF24_BASE_RADIO_ID + x)
#define WRITE_PIPE ((uint8_t)0)
#define CURRENT_NODE_PIPE ((uint8_t)1)
#define BROADCAST_PIPE ((uint8_t)2)
class MyDriverNRF24 : public MyDriver
{
public:
MyDriverNRF24();
void init();
void setAddress(uint8_t address);
uint8_t getAddress();
bool send(uint8_t to, const void* data, uint8_t len);
bool available(uint8_t *to);
uint8_t receive(void* data);
void powerDown();
private:
RF24 *rf24;
uint8_t _address;
};
#endif
+24 -54
View File
@@ -10,9 +10,6 @@
*/
#include "MySensor.h"
#include "utility/LowPower.h"
#include "utility/RF24.h"
#include "utility/RF24_config.h"
#define DISTANCE_INVALID (0xFF)
@@ -36,12 +33,12 @@ static inline bool isValidDistance( const uint8_t distance ) {
return distance != DISTANCE_INVALID;
}
MySensor::MySensor(uint8_t _cepin, uint8_t _cspin) : RF24(_cepin, _cspin) {
}
MySensor::MySensor() {
driver = (MyDriver*) new MyDriverClass();
}
void MySensor::begin(void (*_msgCallback)(const MyMessage &), uint8_t _nodeId, boolean _repeaterMode, uint8_t _parentNodeId, rf24_pa_dbm_e paLevel, uint8_t channel, rf24_datarate_e dataRate) {
void MySensor::begin(void (*_msgCallback)(const MyMessage &), uint8_t _nodeId, boolean _repeaterMode, uint8_t _parentNodeId) {
Serial.begin(BAUD_RATE);
repeaterMode = _repeaterMode;
msgCallback = _msgCallback;
@@ -52,7 +49,7 @@ void MySensor::begin(void (*_msgCallback)(const MyMessage &), uint8_t _nodeId, b
if (repeaterMode) {
setupRepeaterMode();
}
setupRadio(paLevel, channel, dataRate);
setupRadio();
// Read settings from EEPROM
eeprom_read_block((void*)&nc, (void*)EEPROM_NODE_ID_ADDRESS, sizeof(NodeConfig));
@@ -92,8 +89,7 @@ void MySensor::begin(void (*_msgCallback)(const MyMessage &), uint8_t _nodeId, b
}
// Open reading pipe for messages directed to this node (set write pipe to same)
RF24::openReadingPipe(WRITE_PIPE, TO_ADDR(nc.nodeId));
RF24::openReadingPipe(CURRENT_NODE_PIPE, TO_ADDR(nc.nodeId));
driver->setAddress(nc.nodeId);
// Send presentation for this radio node (attach
present(NODE_SENSOR_ID, repeaterMode? S_ARDUINO_REPEATER_NODE : S_ARDUINO_NODE);
@@ -107,26 +103,9 @@ void MySensor::begin(void (*_msgCallback)(const MyMessage &), uint8_t _nodeId, b
waitForReply();
}
void MySensor::setupRadio(rf24_pa_dbm_e paLevel, uint8_t channel, rf24_datarate_e dataRate) {
// Start up the radio library
RF24::begin();
if (!RF24::isPVariant()) {
debug(PSTR("check wires\n"));
while(1);
}
RF24::setAutoAck(1);
RF24::setAutoAck(BROADCAST_PIPE,false); // Turn off auto ack for broadcast
RF24::setChannel(channel);
RF24::setPALevel(paLevel);
RF24::setDataRate(dataRate);
RF24::setRetries(5,15);
RF24::setCRCLength(RF24_CRC_16);
RF24::enableDynamicPayloads();
RF24::enableDynamicAck(); // Required to disable ack-sending for broadcast messages
// All nodes listen to broadcast pipe (for FIND_PARENT_RESPONSE messages)
RF24::openReadingPipe(BROADCAST_PIPE, TO_ADDR(BROADCAST_ADDRESS));
void MySensor::setupRadio() {
failedTransmissions = 0;
driver->init();
}
void MySensor::setupRepeaterMode(){
@@ -145,7 +124,7 @@ ControllerConfig MySensor::getConfig() {
void MySensor::requestNodeId() {
debug(PSTR("req node id\n"));
RF24::openReadingPipe(CURRENT_NODE_PIPE, TO_ADDR(nc.nodeId));
driver->setAddress(nc.nodeId);
sendRoute(build(msg, nc.nodeId, GATEWAY_ADDRESS, NODE_SENSOR_ID, C_INTERNAL, I_ID_REQUEST, false).set(""));
waitForReply();
}
@@ -223,13 +202,7 @@ boolean MySensor::sendWrite(uint8_t next, MyMessage &message, const bool allowFi
uint8_t length = mGetLength(message);
message.last = nc.nodeId;
mSetVersion(message, PROTOCOL_VERSION);
// Make sure radio has powered up
RF24::powerUp();
RF24::stopListening();
RF24::openWritingPipe(TO_ADDR(next));
// Send message. Disable auto-ack for broadcasts.
ok = RF24::write(&message, min(MAX_MESSAGE_LENGTH, HEADER_SIZE + length), broadcast);
RF24::startListening();
bool ok = driver->send(next, &message, min(MAX_MESSAGE_LENGTH, HEADER_SIZE + length));
debug(PSTR("send: %d-%d-%d-%d s=%d,c=%d,t=%d,pt=%d,l=%d,st=%s:%s\n"),
message.sender,message.last, next, message.destination, message.sensor, mGetCommand(message), message.type,
@@ -290,14 +263,11 @@ void MySensor::requestTime(void (* _timeCallback)(unsigned long)) {
boolean MySensor::process() {
uint8_t pipe;
boolean available = RF24::available(&pipe);
if (!available || pipe>6)
uint8_t to = 0;
if (!driver->available(&to))
return false;
uint8_t len = RF24::getDynamicPayloadSize();
RF24::read(&msg, len);
uint8_t len = driver->receive((uint8_t *)&msg);
// Add string termination, good if we later would want to print it.
msg.data[mGetLength(msg)] = '\0';
@@ -322,6 +292,11 @@ boolean MySensor::process() {
delay(millis() & 0x3ff);
sendWrite(sender, build(msg, nc.nodeId, sender, NODE_SENSOR_ID, C_INTERNAL, I_FIND_PARENT_RESPONSE, false).set(nc.distance));
return false;
} else if (command == C_INTERNAL && type == I_TIME) {
if (timeCallback != NULL) {
// Deliver time to callback
timeCallback(msg.getULong());
}
} else if (destination == nc.nodeId) {
// Check if sender requests an ack back.
if (mGetRequestAck(msg)) {
@@ -375,7 +350,7 @@ boolean MySensor::process() {
debug(PSTR("full\n"));
while (1); // Wait here. Nothing else we can do...
} else {
RF24::openReadingPipe(CURRENT_NODE_PIPE, TO_ADDR(nc.nodeId));
driver->setAddress(nc.nodeId);
eeprom_write_byte((uint8_t*)EEPROM_NODE_ID_ADDRESS, nc.nodeId);
}
debug(PSTR("id=%d\n"), nc.nodeId);
@@ -397,11 +372,6 @@ boolean MySensor::process() {
}
sendRoute(build(msg, nc.nodeId, GATEWAY_ADDRESS, NODE_SENSOR_ID, C_INTERNAL, I_CHILDREN,false).set(""));
}
} else if (type == I_TIME) {
if (timeCallback != NULL) {
// Deliver time to callback
timeCallback(msg.getULong());
}
}
return false;
}
@@ -412,7 +382,7 @@ boolean MySensor::process() {
}
// Return true if message was addressed for this node...
return true;
} else if (repeaterMode && pipe == CURRENT_NODE_PIPE) {
} else if (repeaterMode && to == nc.nodeId) {
// We should try to relay this message to another node
uint8_t route = getChildRoute(msg.destination);
@@ -511,7 +481,7 @@ void MySensor::internalSleep(unsigned long ms) {
void MySensor::sleep(unsigned long ms) {
// Let serial prints finish (debug, log etc)
Serial.flush();
RF24::powerDown();
driver->powerDown();
pinIntTrigger = 0;
internalSleep(ms);
}
@@ -520,7 +490,7 @@ bool MySensor::sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
// Let serial prints finish (debug, log etc)
bool pinTriggeredWakeup = true;
Serial.flush();
RF24::powerDown();
driver->powerDown();
attachInterrupt(interrupt, wakeUp, mode);
if (ms>0) {
pinIntTrigger = 0;
@@ -539,7 +509,7 @@ bool MySensor::sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
int8_t MySensor::sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms) {
int8_t retVal = 1;
Serial.flush(); // Let serial prints finish (debug, log etc)
RF24::powerDown();
driver->powerDown();
attachInterrupt(interrupt1, wakeUp, mode1);
attachInterrupt(interrupt2, wakeUp2, mode2);
if (ms>0) {
+9 -27
View File
@@ -13,6 +13,7 @@
#define MySensor_h
#include "Version.h" // Auto generated by bot
#include "MyDriver.h"
#include "MyConfig.h"
#include "MyMessage.h"
#include <stddef.h>
@@ -25,8 +26,6 @@
#include <Arduino.h>
#include <SPI.h>
#include "utility/LowPower.h"
#include "utility/RF24.h"
#include "utility/RF24_config.h"
#endif
#ifdef DEBUG
@@ -37,9 +36,6 @@
#define BAUD_RATE 115200
#define AUTO 0xFF // 0-254. Id 255 is reserved for auto initialization of nodeId.
#define NODE_SENSOR_ID 0xFF // Node child id is always created for when a node
// EEPROM start address for mysensors library data
#define EEPROM_START 0
// EEPROM location of node id
@@ -56,15 +52,6 @@
#define EEPROM_FIRMWARE_CRC_ADDRESS (EEPROM_FIRMWARE_BLOCKS_ADDRESS+2)
#define EEPROM_LOCAL_CONFIG_ADDRESS (EEPROM_FIRMWARE_CRC_ADDRESS+2) // First free address for sketch static configuration
// This is the nodeId for sensor net gateway receiver sketch (where all sensors should send their data).
#define GATEWAY_ADDRESS ((uint8_t)0)
#define BROADCAST_ADDRESS ((uint8_t)0xFF)
#define TO_ADDR(x) (BASE_RADIO_ID + x)
#define WRITE_PIPE ((uint8_t)0)
#define CURRENT_NODE_PIPE ((uint8_t)1)
#define BROADCAST_PIPE ((uint8_t)2)
// Search for a new parent node after this many transmission failures
#define SEARCH_FAILURES 5
@@ -80,7 +67,7 @@ struct ControllerConfig {
};
#ifdef __cplusplus
class MySensor : public RF24
class MySensor
{
public:
/**
@@ -88,10 +75,8 @@ class MySensor : public RF24
*
* Creates a new instance of Sensor class.
*
* @param _cepin The pin attached to RF24 Chip Enable on the RF module (default 9)
* @param _cspin The pin attached to RF24 Chip Select (default 10)
*/
MySensor(uint8_t _cepin=DEFAULT_CE_PIN, uint8_t _cspin=DEFAULT_CS_PIN);
MySensor();
/**
* Begin operation of the MySensors library
@@ -101,12 +86,9 @@ class MySensor : public RF24
* @param nodeId The unique id (1-254) for this sensor. Default is AUTO(255) which means sensor tries to fetch an id from controller.
* @param repeaterMode Activate repeater mode. This node will forward messages to other nodes in the radio network. Make sure to call process() regularly. Default in false
* @param parentNodeId Use this to force node to always communicate with a certain parent node. Default is AUTO which means node automatically tries to find a parent.
* @param paLevel Radio PA Level for this sensor. Default RF24_PA_MAX
* @param channel Radio channel. Default is channel 76
* @param dataRate Radio transmission speed. Default RF24_1MBPS
*/
void begin(void (* msgCallback)(const MyMessage &)=NULL, uint8_t nodeId=AUTO, boolean repeaterMode=false, uint8_t parentNodeId=AUTO, rf24_pa_dbm_e paLevel=RF24_PA_LEVEL, uint8_t channel=RF24_CHANNEL, rf24_datarate_e dataRate=RF24_DATARATE);
void begin(void (* msgCallback)(const MyMessage &)=NULL, uint8_t nodeId=AUTO, boolean repeaterMode=false, uint8_t parentNodeId=AUTO);
/**
* Return the nodes nodeId.
@@ -141,6 +123,8 @@ class MySensor : public RF24
*/
bool send(MyMessage &msg, bool ack=false);
boolean sendRoute(MyMessage &message);
/**
* Send this nodes battery level to gateway.
* @param level Level between 0-100(%)
@@ -234,10 +218,6 @@ class MySensor : public RF24
*/
int8_t sleep(uint8_t interrupt1, uint8_t mode1, uint8_t interrupt2, uint8_t mode2, unsigned long ms=0);
boolean sendRoute(MyMessage &message);
#ifdef DEBUG
void debugPrint(const char *fmt, ... );
int freeRam();
@@ -252,8 +232,10 @@ class MySensor : public RF24
MyMessage msg; // Buffer for incoming messages.
MyMessage ack; // Buffer for ack messages.
MyDriver *driver;
void setupRepeaterMode();
void setupRadio(rf24_pa_dbm_e paLevel, uint8_t channel, rf24_datarate_e dataRate);
void setupRadio();
boolean sendWrite(uint8_t dest, MyMessage &message, const bool allowFindParent = true );
private:
@@ -4,6 +4,10 @@
#include <DallasTemperature.h>
#include <OneWire.h>
#ifndef MYSENSORS_SENSOR
#error Please switch to MYSENSORS_SENSOR in MyConfig.h
#endif
#define ONE_WIRE_BUS 3 // Pin where dallase sensor is connected
#define MAX_ATTACHED_DS18B20 16
unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
@@ -57,18 +57,21 @@
#include <PinChangeInt.h>
#include "GatewayUtil.h"
#ifndef MYSENSORS_ETHERNET_MQTT_GATEWAY
#error Please switch to MYSENSORS_ETHERNET_MQTT_GATEWAY in MyConfig.h
#endif
// Use this if you have attached a Ethernet ENC28J60 shields
//#include <UIPEthernet.h>
#include <UIPEthernet.h>
// Use this fo WizNET module and Arduino Ethernet Shield
#include <Ethernet.h>
//#include <Ethernet.h>
#define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled
#define INCLUSION_MODE_PIN 3 // Digital pin used for inclusion mode button
#define W5100_SPI_EN 4 // Ethernet SPI enable
#define W5100_SPI_EN 4 // Ethernet SPI enable (where available)
#define RADIO_CE_PIN 5 // radio chip enable
#define RADIO_SPI_SS_PIN 6 // radio SPI serial select
@@ -77,7 +80,7 @@
#define RADIO_TX_LED_PIN 9 // the PCB, on board LED
MySensor gw(RADIO_CE_PIN, RADIO_SPI_SS_PIN);
MySensor gw;
#define IP_PORT 5003 // The port you want to open
@@ -128,13 +131,9 @@ void setup()
{
w5100_spi_en(false);
// Initialize gateway at maximum PA level, channel 70 and callback for write operations
gw.begin(incomingMessage, 0, true, 0, RF24_PA_LEVEL_GW, RF24_CHANNEL, RF24_DATARATE);
// Setup pipes for radio library
gw.openReadingPipe(WRITE_PIPE, BASE_RADIO_ID);
gw.openReadingPipe(CURRENT_NODE_PIPE, BASE_RADIO_ID);
gw.startListening();
gw.begin(incomingMessage, 0, true, 0);
w5100_spi_en(true);
Ethernet.begin(mac, myIp);
setupGateway(RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN, INCLUSION_MODE_PIN, INCLUSION_MODE_TIME, output);
@@ -1,6 +1,8 @@
#ifndef __GATEWAYUTIL_H__
#define __GATEWAYUTIL_H__
#include <MyDriver.h>
#ifdef ARDUINO
@@ -62,6 +62,9 @@ http://forum.mysensors.org/topic/303/mqtt-broker-gateway
#include <Ethernet.h>
#include "MyMQTT.h"
#ifndef MYSENSORS_ETHERNET_MQTT_GATEWAY
#error Please switch to MYSENSORS_ETHERNET_MQTT_GATEWAY in MyConfig.h
#endif
#define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled
#define INCLUSION_MODE_PIN 3 // Digital pin used for inclusion mode button
@@ -89,7 +92,7 @@ uint8_t TCP_MAC[] = { 0x02, 0xDE, 0xAD, 0x00, 0x00, 0x42 }; // Mac-address - You
//////////////////////////////////////////////////////////////////
MySensor gw(RADIO_CE_PIN, RADIO_SPI_SS_PIN);
MySensor gw;
EthernetServer server = EthernetServer(TCP_PORT);
MyMessage msg;
char convBuf[MAX_PAYLOAD*2+1];
@@ -143,12 +146,7 @@ void incomingMessage(const MyMessage &message) {
void setup()
{
// Initialize gateway at maximum PA level, channel 70 and callback for write operations
gw.begin(incomingMessage, 0, true, 0, RF24_PA_LEVEL_GW, RF24_CHANNEL, RF24_DATARATE);
// Setup pipes for radio library
gw.openReadingPipe(WRITE_PIPE, BASE_RADIO_ID);
gw.openReadingPipe(CURRENT_NODE_PIPE, BASE_RADIO_ID);
gw.startListening();
gw.begin(incomingMessage, 0, true, 0);
Ethernet.begin(TCP_MAC, TCP_IP);
@@ -1,7 +1,8 @@
#ifndef __GATEWAYUTIL_H__
#define __GATEWAYUTIL_H__
#include <stdarg.h>
#include <MyDriver.h>
#ifdef ARDUINO
@@ -48,6 +49,7 @@ void setupGateway(uint8_t _rx, uint8_t _tx, uint8_t _er, uint8_t _inc, uint8_t _
countTx = 0;
countErr = 0;
// Setup led pins
pinMode(pinRx, OUTPUT);
pinMode(pinTx, OUTPUT);
@@ -240,7 +242,6 @@ void ledTimersInterrupt() {
digitalWrite(pinEr, HIGH);
}
if(countErr != 255) { countErr--; }
}
void rxBlink(uint8_t cnt) {
@@ -20,7 +20,7 @@
* - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
* - ERR (red) - fast blink on error during transmission error or recieve crc error
*/
#define NO_PORTB_PINCHANGES
#include <SPI.h>
@@ -30,6 +30,9 @@
#include <PinChangeInt.h>
#include "GatewayUtil.h"
#ifndef MYSENSORS_SERIAL_GATEWAY
#error Please switch to MYSENSORS_SERIAL_GATEWAY in MyConfig.h
#endif
#define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled
#define INCLUSION_MODE_PIN 3 // Digital pin used for inclusion mode button
@@ -38,7 +41,7 @@
#define RADIO_TX_LED_PIN 5 // the PCB, on board LED
MySensor gw(DEFAULT_CE_PIN, DEFAULT_CS_PIN);
MySensor gw;
char inputString[MAX_RECEIVE_LENGTH] = ""; // A string to hold incoming commands from serial/ethernet interface
int inputPos = 0;
@@ -57,11 +60,7 @@ void output(const char *fmt, ... ) {
void setup()
{
gw.begin(incomingMessage, 0, true, 0, RF24_PA_LEVEL_GW, RF24_CHANNEL, RF24_DATARATE);
// Stetup pipes for radio library
gw.openReadingPipe(WRITE_PIPE, BASE_RADIO_ID);
gw.openReadingPipe(CURRENT_NODE_PIPE, BASE_RADIO_ID);
gw.startListening();
gw.begin(incomingMessage, 0, true, 0);
setupGateway(RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN, INCLUSION_MODE_PIN, INCLUSION_MODE_TIME, output);