From 144c74d7cc8d82fca0e6863cc418e281ae06a72f Mon Sep 17 00:00:00 2001 From: ThomasFransolet Date: Sun, 14 Apr 2019 23:11:37 +0200 Subject: [PATCH] Arduino Code first commit : existing files --- .../Smoke_Temp_IR/Smoke_Temp_IR.ino | 279 + .../Smoke__temp_station.ino | 235 + .../Smoke__temp_station_bmp280.ino.ino | 236 + Arduino Code/3D_Printer/Wiring plan.png | Bin 0 -> 11799 bytes .../AutomatedLight-Memoire.ino | 63 + .../Detect_movement_light.ino | 65 + .../TV_GoogleHome/TV_GoogleHome.ino | 150 + Arduino Code/LM35/LM35.ino | 128 + .../MyMirror/LedWeather/LedWeather.ino | 152 + .../LedWeatherMQTT/LedWeatherMQTT.ino | 166 + .../MyMirror/MoveSensor/MoveSensor.ino | 105 + Arduino Code/MyMirror/Scale/Scale.ino | 19 + .../MyMirror/TempCloudMQTT/TempCloudMQTT.ino | 119 + Arduino Code/MyMirror/TestSharp/TestSharp.ino | 81 + Arduino Code/RF/Receiver/Receiver.ino | 25 + Arduino Code/RF/Transmitter/Transmitter.ino | 28 + Arduino Code/RGB_HotSpot.c | 93 + Arduino Code/RepeteurWifi/RepeteurWifi.ino | 138 + .../Test/Blink-ESP8266/Blink-ESP8266.ino | 10 + Arduino Code/Test/Blink-Wemos/Blink-Wemos.ino | 29 + Arduino Code/Test/Blink/Blink.ino | 28 + .../Button-RingSimulator.ino | 135 + .../Button-RingSimulator_-_MQTT.ino | 122 + Arduino Code/Test/HotSpot/HotSpot.ino | 93 + .../HotSpot_and_connection.ino | 119 + .../Humidity-Temp-Sensor-WebServer.ino | 143 + ...ity-Temp-Sensor-WebServer.ino.adafruit.bin | Bin 0 -> 259856 bytes .../Humidity-Temperature-Sensor.ino | 116 + .../LedWifi-Open-Close-ESP8266.ino | 94 + .../Led_wifi_-_ESP8266/Led_wifi_-_ESP8266.ino | 227 + .../Magnetic-Sensor-Wifi.ino | 100 + .../Test/Magnetic-Sensor/Magnetic-Sensor.ino | 22 + .../Test/MotionSensor/MotionSensor.ino | 24 + Arduino Code/Test/OLED-Wifi/OLED-Wifi.ino | 160 + Arduino Code/Test/OLED/OLED.ino | 63 + .../Test/Oled-Wifi-HTTP/Oled-Wifi-HTTP.ino | 156 + Arduino Code/Test/Relay-Wifi/Relay-Wifi.ino | 103 + Arduino Code/Test/Relay/Relay.ino | 17 + Arduino Code/Test/RelayL-Wifi/RelayL-Wifi.ino | 101 + .../Test/RelayL_-_MQTT/RelayL_-_MQTT.ino | 117 + .../TestConnectionJSON/TestConnectionJSON.ino | 83 + Arduino Code/Test/TestJson/TestJson.ino | 102 + .../WebServer-PostTest/WebServer-PostTest.ino | 70 + .../Test/WifiConnection/WifiConnection.ino | 72 + .../Wemos/AvoidSensor/AvoidSensor.ino | 59 + Arduino Code/Wemos/DS18B20/DS18B20.ino | 68 + .../Wemos/SharpSensor/SharpSensor.ino | 13 + Arduino Code/Wemos/TestRFID/TestRFID.ino | 32 + .../Wemos/Wemos-Avoid/Wemos-Avoid.ino | 22 + .../Wemos-IRReceiver.ino.ino | 20 + .../Wemos-IRTransmitterTv_Led.ino | 149 + .../Wemos-IRsendDemo/Wemos-IRsendDemo.ino | 16 + .../Wemos/Wemos-IRsendLed/Wemos-IRsendLed.ino | 149 + .../Wemos/Wemos-Servo/Wemos-Servo.ino | 24 + .../Wemos-SmokeDetector.ino | 19 + .../Wemos/Wemos-SonGrand/Wemos-SonGrand.ino | 32 + .../Wemos/Wemos-SonPetit/Wemos-SonPetit.ino | 25 + Arduino Code/Wemos/Wemos-Temp/Wemos-Temp.ino | 52 + .../Wemos/Wemos-Tracking/Wemos-Tracking.ino | 19 + .../Wemos-Yeelight-connect.ino | 102 + .../Yeelight_Inter-Operation_Spec.pdf | Bin 0 -> 322645 bytes .../examples/Timer2_RTC/Timer2_RTC.ino | 35 + .../library.properties | 9 + .../AVR_Standard_C_Time_Library/readme.md | 141 + .../src/asc_store.c | 39 + .../AVR_Standard_C_Time_Library/src/asctime.c | 44 + .../src/asctime_r.c | 77 + .../AVR_Standard_C_Time_Library/src/ctime.c | 47 + .../AVR_Standard_C_Time_Library/src/ctime_r.c | 43 + .../src/daylight_seconds.c | 72 + .../src/difftime.c | 41 + .../src/dst_pointer.c | 34 + .../src/ephemera_common.h | 44 + .../src/equation_of_time.c | 87 + .../src/fatfs_time.c | 99 + .../src/geo_location.c | 34 + .../src/gm_sidereal.c | 61 + .../AVR_Standard_C_Time_Library/src/gmtime.c | 45 + .../src/gmtime_r.c | 145 + .../AVR_Standard_C_Time_Library/src/isLeap.c | 57 + .../src/iso_week_date.c | 51 + .../src/iso_week_date_r.c | 114 + .../AVR_Standard_C_Time_Library/src/isotime.c | 44 + .../src/isotime_r.c | 70 + .../src/lm_sidereal.c | 47 + .../src/localtime.c | 44 + .../src/localtime_r.c | 60 + .../src/mk_gmtime.c | 113 + .../AVR_Standard_C_Time_Library/src/mktime.c | 61 + .../src/month_length.c | 48 + .../src/moon_phase.c | 66 + .../src/print_lz.c | 45 + .../AVR_Standard_C_Time_Library/src/set_dst.c | 45 + .../src/set_position.c | 46 + .../src/set_system_time.c | 56 + .../src/set_zone.c | 43 + .../src/solar_declination.c | 78 + .../src/solar_noon.c | 57 + .../src/strftime.c | 303 + .../src/sun_rise.c | 49 + .../AVR_Standard_C_Time_Library/src/sun_set.c | 50 + .../src/system_tick.S | 60 + .../src/system_time.c | 36 + .../AVR_Standard_C_Time_Library/src/time.c | 59 + .../AVR_Standard_C_Time_Library/src/time.h | 524 + .../AVR_Standard_C_Time_Library/src/timer2.c | 50 + .../src/tm_store.c | 37 + .../src/utc_offset.c | 37 + .../src/week_of_month.c | 62 + .../src/week_of_year.c | 58 + .../Adafruit_GFX.cpp | 1071 + .../Adafruit_GFX.h | 155 + .../Fonts/FreeMono12pt7b.h | 227 + .../Fonts/FreeMono18pt7b.h | 363 + .../Fonts/FreeMono24pt7b.h | 577 + .../Fonts/FreeMono9pt7b.h | 176 + .../Fonts/FreeMonoBold12pt7b.h | 250 + .../Fonts/FreeMonoBold18pt7b.h | 423 + .../Fonts/FreeMonoBold24pt7b.h | 672 + .../Fonts/FreeMonoBold9pt7b.h | 189 + .../Fonts/FreeMonoBoldOblique12pt7b.h | 269 + .../Fonts/FreeMonoBoldOblique18pt7b.h | 460 + .../Fonts/FreeMonoBoldOblique24pt7b.h | 742 + .../Fonts/FreeMonoBoldOblique9pt7b.h | 203 + .../Fonts/FreeMonoOblique12pt7b.h | 248 + .../Fonts/FreeMonoOblique18pt7b.h | 398 + .../Fonts/FreeMonoOblique24pt7b.h | 643 + .../Fonts/FreeMonoOblique9pt7b.h | 187 + .../Fonts/FreeSans12pt7b.h | 270 + .../Fonts/FreeSans18pt7b.h | 452 + .../Fonts/FreeSans24pt7b.h | 727 + .../Fonts/FreeSans9pt7b.h | 201 + .../Fonts/FreeSansBold12pt7b.h | 288 + .../Fonts/FreeSansBold18pt7b.h | 481 + .../Fonts/FreeSansBold24pt7b.h | 784 + .../Fonts/FreeSansBold9pt7b.h | 208 + .../Fonts/FreeSansBoldOblique12pt7b.h | 317 + .../Fonts/FreeSansBoldOblique18pt7b.h | 545 + .../Fonts/FreeSansBoldOblique24pt7b.h | 893 + .../Fonts/FreeSansBoldOblique9pt7b.h | 227 + .../Fonts/FreeSansOblique12pt7b.h | 302 + .../Fonts/FreeSansOblique18pt7b.h | 518 + .../Fonts/FreeSansOblique24pt7b.h | 840 + .../Fonts/FreeSansOblique9pt7b.h | 220 + .../Fonts/FreeSerif12pt7b.h | 259 + .../Fonts/FreeSerif18pt7b.h | 429 + .../Fonts/FreeSerif24pt7b.h | 690 + .../Fonts/FreeSerif9pt7b.h | 195 + .../Fonts/FreeSerifBold12pt7b.h | 271 + .../Fonts/FreeSerifBold18pt7b.h | 462 + .../Fonts/FreeSerifBold24pt7b.h | 759 + .../Fonts/FreeSerifBold9pt7b.h | 202 + .../Fonts/FreeSerifBoldItalic12pt7b.h | 292 + .../Fonts/FreeSerifBoldItalic18pt7b.h | 500 + .../Fonts/FreeSerifBoldItalic24pt7b.h | 793 + .../Fonts/FreeSerifBoldItalic9pt7b.h | 215 + .../Fonts/FreeSerifItalic12pt7b.h | 271 + .../Fonts/FreeSerifItalic18pt7b.h | 450 + .../Fonts/FreeSerifItalic24pt7b.h | 737 + .../Fonts/FreeSerifItalic9pt7b.h | 202 + .../Fonts/TomThumb.h | 474 + .../Adafruit-GFX-Library-master/README.md | 21 + .../fontconvert/Makefile | 12 + .../fontconvert/fontconvert.c | 278 + .../fontconvert/makefonts.sh | 38 + .../Adafruit-GFX-Library-master/gfxfont.h | 24 + .../Adafruit-GFX-Library-master/glcdfont.c | 276 + .../library.properties | 9 + .../Adafruit-GFX-Library-master/license.txt | 24 + .../Adafruit_BME280.cpp | 530 + .../Adafruit_BME280_Library/Adafruit_BME280.h | 300 + .../Adafruit_BME280_Library/README.md | 59 + .../advancedsettings/advancedsettings.ino | 157 + .../examples/bme280test/bme280test.ino | 82 + .../library.properties | 9 + .../Adafruit_BMP280.cpp | 326 + .../Adafruit_BMP280_Library/Adafruit_BMP280.h | 157 + .../Adafruit_BMP280_Library/README.md | 43 + .../examples/bmp280test/bmp280test.ino | 57 + .../library.properties | 9 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../Adafruit_FeatherOLED-master/.gitignore | 28 + .../Adafruit_FeatherOLED.cpp | 176 + .../Adafruit_FeatherOLED.h | 76 + .../Adafruit_FeatherOLED_WiFi.cpp | 118 + .../Adafruit_FeatherOLED_WiFi.h | 81 + .../Adafruit_FeatherOLED-master/LICENSE | 22 + .../Adafruit_FeatherOLED-master/README.md | 2 + .../examples/tester/tester.ino | 393 + .../Adafruit_Fingerprint.cpp | 308 + .../Adafruit_Fingerprint.h | 110 + .../README.txt | 19 + .../ZFM-20_Fingerprint_Module.pdf | Bin 0 -> 2526320 bytes .../documentation/fingerprint_en.pdf | Bin 0 -> 23847 bytes .../documentation/readme.txt | 7 + .../examples/Leo_passthru/Leo_passthru.ino | 21 + .../examples/blank/blank.ino | 11 + .../examples/delete/delete.ino | 91 + .../examples/enroll/enroll.ino | 196 + .../examples/fingerprint/fingerprint.ino | 132 + .../show_fingerprint_templates.ino | 107 + .../library.properties | 9 + .../license.txt | 26 + .../Adafruit_PN532/Adafruit_PN532.cpp | 1800 ++ .../libraries/Adafruit_PN532/Adafruit_PN532.h | 222 + .../libraries/Adafruit_PN532/README.txt | 18 + .../apduToBlackBerry/BlackBerry7/.classpath | 7 + .../apduToBlackBerry/BlackBerry7/.project | 29 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../BlackBerry7/BlackBerry_App_Descriptor.xml | 40 + .../apduToBlackBerry/BlackBerry7/build.xml | 35 + .../BlackBerry7/res/img/icon.png | Bin 0 -> 771 bytes .../BlackBerry7/src/mypackage/ColorMixer.java | 152 + .../BlackBerry7/src/mypackage/MyApp.java | 47 + .../BlackBerry7/src/mypackage/MyScreen.java | 163 + .../apduToBlackBerry/apduToBlackBerry.pde | 149 + .../examples/iso14443a_uid/iso14443a_uid.pde | 112 + .../mifareclassic_formatndef.pde | 203 + .../mifareclassic_memdump.pde | 191 + .../mifareclassic_ndeftoclassic.pde | 208 + .../mifareclassic_updatendef.pde | 180 + .../examples/ntag2xx_erase/ntag2xx_erase.pde | 159 + .../examples/ntag2xx_read/ntag2xx_read.pde | 155 + .../ntag2xx_updatendef/ntag2xx_updatendef.pde | 213 + .../examples/readMifare/readMifare.pde | 182 + .../readMifareClassic/readMifareClassic.pde | 120 + .../Adafruit_PN532/library.properties | 9 + .../libraries/Adafruit_PN532/license.txt | 26 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../Adafruit_SSD1306.cpp | 729 + .../Adafruit_SSD1306.h | 182 + .../Adafruit_SSD1306-master/README.md | 32 + .../Adafruit_SSD1306-master/README.txt | 24 + .../ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino | 375 + .../ssd1306_128x32_spi/ssd1306_128x32_spi.ino | 368 + .../ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino | 375 + .../ssd1306_128x64_spi/ssd1306_128x64_spi.ino | 368 + .../library.properties | 9 + .../Adafruit_SSD1306-master/license.txt | 26 + .../Adafruit_Unified_Sensor/Adafruit_Sensor.h | 154 + .../Adafruit_Unified_Sensor/README.md | 218 + .../library.properties | 9 + .../libraries/ArduinoJson/.clang-format | 5 + .../libraries/ArduinoJson/.gitattributes | 1 + .../ArduinoJson/.github/ISSUE_TEMPLATE.md | 11 + Arduino Code/libraries/ArduinoJson/.gitignore | 8 + .../libraries/ArduinoJson/.mbedignore | 5 + .../libraries/ArduinoJson/.travis.yml | 118 + .../libraries/ArduinoJson/ArduinoJson.h | 8 + .../libraries/ArduinoJson/CHANGELOG.md | 328 + .../libraries/ArduinoJson/CMakeLists.txt | 21 + Arduino Code/libraries/ArduinoJson/LICENSE.md | 10 + Arduino Code/libraries/ArduinoJson/README.md | 128 + .../libraries/ArduinoJson/appveyor.yml | 18 + .../IndentedPrintExample.ino | 35 + .../JsonGeneratorExample.ino | 70 + .../JsonHttpClient/JsonHttpClient.ino | 195 + .../JsonParserExample/JsonParserExample.ino | 67 + .../examples/JsonServer/JsonServer.ino | 74 + .../examples/JsonUdpBeacon/JsonUdpBeacon.ino | 55 + .../ArduinoJson/include/ArduinoJson.h | 9 + .../ArduinoJson/include/ArduinoJson.hpp | 22 + .../include/ArduinoJson/Configuration.hpp | 99 + .../include/ArduinoJson/DynamicJsonBuffer.hpp | 18 + .../ArduinoJson/Internals/BlockJsonBuffer.hpp | 115 + .../ArduinoJson/Internals/Comments.hpp | 56 + .../ArduinoJson/Internals/DummyPrint.hpp | 21 + .../Internals/DynamicStringBuilder.hpp | 33 + .../ArduinoJson/Internals/Encoding.hpp | 42 + .../ArduinoJson/Internals/IndentedPrint.hpp | 65 + .../Internals/JsonBufferAllocated.hpp | 25 + .../ArduinoJson/Internals/JsonFloat.hpp | 21 + .../ArduinoJson/Internals/JsonInteger.hpp | 26 + .../ArduinoJson/Internals/JsonParser.hpp | 66 + .../ArduinoJson/Internals/JsonParser.ipp | 191 + .../ArduinoJson/Internals/JsonPrintable.hpp | 100 + .../ArduinoJson/Internals/JsonSerializer.hpp | 33 + .../ArduinoJson/Internals/JsonSerializer.ipp | 101 + .../ArduinoJson/Internals/JsonVariantAs.hpp | 45 + .../Internals/JsonVariantContent.hpp | 30 + .../ArduinoJson/Internals/JsonVariantType.hpp | 39 + .../ArduinoJson/Internals/JsonWriter.hpp | 184 + .../include/ArduinoJson/Internals/List.hpp | 94 + .../Internals/ListConstIterator.hpp | 41 + .../ArduinoJson/Internals/ListIterator.hpp | 44 + .../ArduinoJson/Internals/ListNode.hpp | 27 + .../include/ArduinoJson/Internals/Parse.hpp | 66 + .../ArduinoJson/Internals/Prettyfier.hpp | 130 + .../ArduinoJson/Internals/ReferenceType.hpp | 35 + .../Internals/StaticStringBuilder.hpp | 37 + .../Internals/StreamPrintAdapter.hpp | 39 + .../include/ArduinoJson/JsonArray.hpp | 251 + .../include/ArduinoJson/JsonArray.ipp | 80 + .../ArduinoJson/JsonArraySubscript.hpp | 94 + .../include/ArduinoJson/JsonBuffer.hpp | 164 + .../include/ArduinoJson/JsonBuffer.ipp | 46 + .../include/ArduinoJson/JsonObject.hpp | 182 + .../include/ArduinoJson/JsonObject.ipp | 68 + .../include/ArduinoJson/JsonObjectKey.hpp | 27 + .../ArduinoJson/JsonObjectSubscript.hpp | 123 + .../include/ArduinoJson/JsonPair.hpp | 20 + .../include/ArduinoJson/JsonVariant.hpp | 376 + .../include/ArduinoJson/JsonVariant.ipp | 142 + .../include/ArduinoJson/JsonVariantBase.hpp | 150 + .../ArduinoJson/Polyfills/attributes.hpp | 16 + .../include/ArduinoJson/Polyfills/math.hpp | 111 + .../ArduinoJson/Polyfills/normalize.hpp | 47 + .../ArduinoJson/include/ArduinoJson/Print.hpp | 44 + .../include/ArduinoJson/RawJson.hpp | 21 + .../include/ArduinoJson/StaticJsonBuffer.hpp | 58 + .../include/ArduinoJson/String.hpp | 24 + .../ArduinoJson/TypeTraits/EnableIf.hpp | 22 + .../TypeTraits/IsFloatingPoint.hpp | 21 + .../ArduinoJson/TypeTraits/IsIntegral.hpp | 26 + .../ArduinoJson/TypeTraits/IsReference.hpp | 24 + .../include/ArduinoJson/TypeTraits/IsSame.hpp | 24 + .../TypeTraits/IsSignedIntegral.hpp | 33 + .../TypeTraits/IsUnsignedIntegral.hpp | 33 + .../ArduinoJson/TypeTraits/RemoveConst.hpp | 23 + .../TypeTraits/RemoveReference.hpp | 23 + .../libraries/ArduinoJson/keywords.txt | 14 + .../libraries/ArduinoJson/library.json | 22 + .../libraries/ArduinoJson/library.properties | 9 + .../scripts/buffer-size-calculator.html | 143 + .../scripts/build-arduino-package.sh | 20 + .../libraries/ArduinoJson/scripts/cpplint.sh | 5 + .../ArduinoJson/scripts/create-build-envs.sh | 29 + .../ArduinoJson/scripts/create-size-graph.sh | 42 + .../ArduinoJson/scripts/format-code.sh | 7 + .../ArduinoJson/scripts/run-tests.sh | 44 + .../ArduinoJson/scripts/travis/arduino.sh | 16 + .../ArduinoJson/scripts/travis/cmake-osx.sh | 9 + .../ArduinoJson/scripts/travis/cmake.sh | 9 + .../ArduinoJson/scripts/travis/coverage.sh | 10 + .../ArduinoJson/scripts/travis/platformio.sh | 10 + .../ArduinoJson/test/ArduinoString_Tests.cpp | 245 + .../libraries/ArduinoJson/test/CMakeLists.txt | 73 + .../test/DynamicJsonBuffer_Array_Tests.cpp | 33 + .../test/DynamicJsonBuffer_Basic_Tests.cpp | 40 + .../test/DynamicJsonBuffer_NoMemory_Tests.cpp | 43 + .../test/DynamicJsonBuffer_Object_Tests.cpp | 25 + .../ArduinoJson/test/GbathreeBug.cpp | 191 + .../ArduinoJson/test/IntegrationTests.cpp | 105 + .../libraries/ArduinoJson/test/Issue10.cpp | 68 + .../libraries/ArduinoJson/test/Issue214.cpp | 16 + .../libraries/ArduinoJson/test/Issue34.cpp | 40 + .../libraries/ArduinoJson/test/Issue90.cpp | 29 + .../ArduinoJson/test/JsonArray_Add_Tests.cpp | 90 + .../test/JsonArray_Basic_Tests.cpp | 41 + .../test/JsonArray_CopyFrom_Tests.cpp | 64 + .../test/JsonArray_CopyTo_Tests.cpp | 56 + .../test/JsonArray_Invalid_Tests.cpp | 33 + .../test/JsonArray_Iterator_Tests.cpp | 39 + .../test/JsonArray_PrettyPrintTo_Tests.cpp | 82 + .../test/JsonArray_PrintTo_Tests.cpp | 150 + .../test/JsonArray_Remove_Tests.cpp | 47 + .../ArduinoJson/test/JsonArray_Set_Tests.cpp | 90 + .../test/JsonArray_Subscript_Tests.cpp | 109 + .../test/JsonObject_Basic_Tests.cpp | 25 + .../test/JsonObject_ContainsKey_Tests.cpp | 39 + .../test/JsonObject_Invalid_Tests.cpp | 33 + .../test/JsonObject_Iterator_Tests.cpp | 57 + .../test/JsonObject_PrettyPrintTo_Tests.cpp | 80 + .../test/JsonObject_PrintTo_Tests.cpp | 121 + .../test/JsonObject_Remove_Tests.cpp | 31 + .../ArduinoJson/test/JsonObject_Set_Tests.cpp | 127 + .../test/JsonObject_Subscript_Tests.cpp | 124 + .../test/JsonParser_Array_Tests.cpp | 357 + .../test/JsonParser_Nested_Tests.cpp | 64 + .../test/JsonParser_NestingLimit_Tests.cpp | 85 + .../test/JsonParser_Object_Tests.cpp | 181 + .../test/JsonParser_Variant_Tests.cpp | 98 + .../ArduinoJson/test/JsonVariant_As_Tests.cpp | 234 + .../test/JsonVariant_Comparison_Tests.cpp | 94 + .../test/JsonVariant_Copy_Tests.cpp | 68 + .../ArduinoJson/test/JsonVariant_Is_Tests.cpp | 262 + .../test/JsonVariant_PrintTo_Tests.cpp | 131 + .../test/JsonVariant_Storage_Tests.cpp | 83 + .../test/JsonVariant_Subscript_Tests.cpp | 58 + .../test/JsonVariant_Success_Tests.cpp | 43 + .../test/JsonVariant_Undefined_Tests.cpp | 58 + .../test/JsonWriter_WriteFloat_Tests.cpp | 113 + .../test/JsonWriter_WriteString_Tests.cpp | 82 + .../test/StaticJsonBuffer_Basic_Tests.cpp | 65 + .../StaticJsonBuffer_CreateArray_Tests.cpp | 46 + .../StaticJsonBuffer_CreateObject_Tests.cpp | 57 + .../StaticJsonBuffer_ParseArray_Tests.cpp | 88 + .../StaticJsonBuffer_ParseObject_Tests.cpp | 89 + .../libraries/ArduinoJson/test/StdStream.cpp | 60 + .../ArduinoJson/test/StringBuilderTests.cpp | 65 + .../libraries/ArduinoJson/test/gtest.cmake | 24 + .../third-party/cpplint/cpplint.py | 3381 +++ .../third-party/gtest-1.7.0/CHANGES | 157 + .../third-party/gtest-1.7.0/CMakeLists.txt | 252 + .../third-party/gtest-1.7.0/CONTRIBUTORS | 37 + .../third-party/gtest-1.7.0/LICENSE | 28 + .../third-party/gtest-1.7.0/Makefile.am | 306 + .../third-party/gtest-1.7.0/Makefile.in | 1360 ++ .../third-party/gtest-1.7.0/README | 435 + .../third-party/gtest-1.7.0/aclocal.m4 | 1198 + .../gtest-1.7.0/build-aux/config.guess | 1530 ++ .../gtest-1.7.0/build-aux/config.h.in | 69 + .../gtest-1.7.0/build-aux/config.sub | 1773 ++ .../third-party/gtest-1.7.0/build-aux/depcomp | 688 + .../gtest-1.7.0/build-aux/install-sh | 527 + .../gtest-1.7.0/build-aux/ltmain.sh | 9661 ++++++++ .../third-party/gtest-1.7.0/build-aux/missing | 331 + .../gtest-1.7.0/cmake/internal_utils.cmake | 227 + .../gtest-1.7.0/codegear/gtest.cbproj | 138 + .../gtest-1.7.0/codegear/gtest.groupproj | 54 + .../gtest-1.7.0/codegear/gtest_all.cc | 38 + .../gtest-1.7.0/codegear/gtest_link.cc | 40 + .../gtest-1.7.0/codegear/gtest_main.cbproj | 82 + .../codegear/gtest_unittest.cbproj | 88 + .../third-party/gtest-1.7.0/configure | 18222 ++++++++++++++ .../third-party/gtest-1.7.0/configure.ac | 68 + .../gtest-1.7.0/fused-src/gtest/gtest-all.cc | 9592 ++++++++ .../gtest-1.7.0/fused-src/gtest/gtest.h | 20061 ++++++++++++++++ .../gtest-1.7.0/fused-src/gtest/gtest_main.cc | 38 + .../include/gtest/gtest-death-test.h | 294 + .../gtest-1.7.0/include/gtest/gtest-message.h | 250 + .../include/gtest/gtest-param-test.h | 1426 ++ .../include/gtest/gtest-param-test.h.pump | 487 + .../include/gtest/gtest-printers.h | 855 + .../gtest-1.7.0/include/gtest/gtest-spi.h | 232 + .../include/gtest/gtest-test-part.h | 179 + .../include/gtest/gtest-typed-test.h | 259 + .../gtest-1.7.0/include/gtest/gtest.h | 2296 ++ .../include/gtest/gtest_pred_impl.h | 358 + .../gtest-1.7.0/include/gtest/gtest_prod.h | 58 + .../internal/gtest-death-test-internal.h | 319 + .../include/gtest/internal/gtest-filepath.h | 206 + .../include/gtest/internal/gtest-internal.h | 1163 + .../include/gtest/internal/gtest-linked_ptr.h | 233 + .../internal/gtest-param-util-generated.h | 5143 ++++ .../gtest-param-util-generated.h.pump | 301 + .../include/gtest/internal/gtest-param-util.h | 619 + .../include/gtest/internal/gtest-port.h | 1952 ++ .../include/gtest/internal/gtest-string.h | 167 + .../include/gtest/internal/gtest-tuple.h | 1012 + .../include/gtest/internal/gtest-tuple.h.pump | 339 + .../include/gtest/internal/gtest-type-util.h | 3331 +++ .../gtest/internal/gtest-type-util.h.pump | 297 + .../third-party/gtest-1.7.0/m4/acx_pthread.m4 | 363 + .../third-party/gtest-1.7.0/m4/gtest.m4 | 74 + .../third-party/gtest-1.7.0/m4/libtool.m4 | 8001 ++++++ .../third-party/gtest-1.7.0/m4/ltoptions.m4 | 384 + .../third-party/gtest-1.7.0/m4/ltsugar.m4 | 123 + .../third-party/gtest-1.7.0/m4/ltversion.m4 | 23 + .../third-party/gtest-1.7.0/m4/lt~obsolete.m4 | 98 + .../third-party/gtest-1.7.0/make/Makefile | 82 + .../third-party/gtest-1.7.0/msvc/gtest-md.sln | 45 + .../gtest-1.7.0/msvc/gtest-md.vcproj | 126 + .../third-party/gtest-1.7.0/msvc/gtest.sln | 45 + .../third-party/gtest-1.7.0/msvc/gtest.vcproj | 126 + .../gtest-1.7.0/msvc/gtest_main-md.vcproj | 129 + .../gtest-1.7.0/msvc/gtest_main.vcproj | 129 + .../msvc/gtest_prod_test-md.vcproj | 164 + .../gtest-1.7.0/msvc/gtest_prod_test.vcproj | 164 + .../gtest-1.7.0/msvc/gtest_unittest-md.vcproj | 147 + .../gtest-1.7.0/msvc/gtest_unittest.vcproj | 147 + .../gtest-1.7.0/samples/prime_tables.h | 123 + .../gtest-1.7.0/samples/sample1.cc | 68 + .../third-party/gtest-1.7.0/samples/sample1.h | 43 + .../gtest-1.7.0/samples/sample10_unittest.cc | 144 + .../gtest-1.7.0/samples/sample1_unittest.cc | 153 + .../gtest-1.7.0/samples/sample2.cc | 56 + .../third-party/gtest-1.7.0/samples/sample2.h | 85 + .../gtest-1.7.0/samples/sample2_unittest.cc | 109 + .../gtest-1.7.0/samples/sample3-inl.h | 172 + .../gtest-1.7.0/samples/sample3_unittest.cc | 151 + .../gtest-1.7.0/samples/sample4.cc | 46 + .../third-party/gtest-1.7.0/samples/sample4.h | 53 + .../gtest-1.7.0/samples/sample4_unittest.cc | 45 + .../gtest-1.7.0/samples/sample5_unittest.cc | 199 + .../gtest-1.7.0/samples/sample6_unittest.cc | 224 + .../gtest-1.7.0/samples/sample7_unittest.cc | 130 + .../gtest-1.7.0/samples/sample8_unittest.cc | 173 + .../gtest-1.7.0/samples/sample9_unittest.cc | 160 + .../gtest-1.7.0/scripts/fuse_gtest_files.py | 250 + .../scripts/gen_gtest_pred_impl.py | 730 + .../gtest-1.7.0/scripts/gtest-config.in | 274 + .../third-party/gtest-1.7.0/scripts/pump.py | 855 + .../gtest-1.7.0/scripts/test/Makefile | 59 + .../third-party/gtest-1.7.0/src/gtest-all.cc | 48 + .../gtest-1.7.0/src/gtest-death-test.cc | 1344 ++ .../gtest-1.7.0/src/gtest-filepath.cc | 382 + .../gtest-1.7.0/src/gtest-internal-inl.h | 1218 + .../third-party/gtest-1.7.0/src/gtest-port.cc | 805 + .../gtest-1.7.0/src/gtest-printers.cc | 363 + .../gtest-1.7.0/src/gtest-test-part.cc | 110 + .../gtest-1.7.0/src/gtest-typed-test.cc | 110 + .../third-party/gtest-1.7.0/src/gtest.cc | 5015 ++++ .../third-party/gtest-1.7.0/src/gtest_main.cc | 38 + .../test/gtest-death-test_ex_test.cc | 93 + .../gtest-1.7.0/test/gtest-death-test_test.cc | 1367 ++ .../gtest-1.7.0/test/gtest-filepath_test.cc | 680 + .../gtest-1.7.0/test/gtest-linked_ptr_test.cc | 154 + .../gtest-1.7.0/test/gtest-listener_test.cc | 310 + .../gtest-1.7.0/test/gtest-message_test.cc | 159 + .../gtest-1.7.0/test/gtest-options_test.cc | 215 + .../test/gtest-param-test2_test.cc | 65 + .../gtest-1.7.0/test/gtest-param-test_test.cc | 904 + .../gtest-1.7.0/test/gtest-param-test_test.h | 57 + .../gtest-1.7.0/test/gtest-port_test.cc | 1253 + .../gtest-1.7.0/test/gtest-printers_test.cc | 1566 ++ .../gtest-1.7.0/test/gtest-test-part_test.cc | 208 + .../gtest-1.7.0/test/gtest-tuple_test.cc | 320 + .../test/gtest-typed-test2_test.cc | 45 + .../gtest-1.7.0/test/gtest-typed-test_test.cc | 360 + .../gtest-1.7.0/test/gtest-typed-test_test.h | 66 + .../test/gtest-unittest-api_test.cc | 341 + .../gtest-1.7.0/test/gtest_all_test.cc | 47 + .../test/gtest_break_on_failure_unittest.py | 212 + .../test/gtest_break_on_failure_unittest_.cc | 88 + .../test/gtest_catch_exceptions_test.py | 237 + .../test/gtest_catch_exceptions_test_.cc | 311 + .../gtest-1.7.0/test/gtest_color_test.py | 130 + .../gtest-1.7.0/test/gtest_color_test_.cc | 71 + .../gtest-1.7.0/test/gtest_env_var_test.py | 103 + .../gtest-1.7.0/test/gtest_env_var_test_.cc | 126 + .../test/gtest_environment_test.cc | 192 + .../gtest-1.7.0/test/gtest_filter_unittest.py | 633 + .../test/gtest_filter_unittest_.cc | 140 + .../gtest-1.7.0/test/gtest_help_test.py | 172 + .../gtest-1.7.0/test/gtest_help_test_.cc | 46 + .../test/gtest_list_tests_unittest.py | 207 + .../test/gtest_list_tests_unittest_.cc | 157 + .../gtest-1.7.0/test/gtest_main_unittest.cc | 45 + .../test/gtest_no_test_unittest.cc | 56 + .../gtest-1.7.0/test/gtest_output_test.py | 335 + .../gtest-1.7.0/test/gtest_output_test_.cc | 1034 + .../test/gtest_output_test_golden_lin.txt | 720 + .../test/gtest_pred_impl_unittest.cc | 2427 ++ .../test/gtest_premature_exit_test.cc | 141 + .../gtest-1.7.0/test/gtest_prod_test.cc | 57 + .../gtest-1.7.0/test/gtest_repeat_test.cc | 253 + .../gtest-1.7.0/test/gtest_shuffle_test.py | 325 + .../gtest-1.7.0/test/gtest_shuffle_test_.cc | 103 + .../test/gtest_sole_header_test.cc | 57 + .../gtest-1.7.0/test/gtest_stress_test.cc | 256 + .../gtest-1.7.0/test/gtest_test_utils.py | 320 + .../test/gtest_throw_on_failure_ex_test.cc | 92 + .../test/gtest_throw_on_failure_test.py | 171 + .../test/gtest_throw_on_failure_test_.cc | 72 + .../test/gtest_uninitialized_test.py | 70 + .../test/gtest_uninitialized_test_.cc | 43 + .../gtest-1.7.0/test/gtest_unittest.cc | 7415 ++++++ .../test/gtest_xml_outfile1_test_.cc | 49 + .../test/gtest_xml_outfile2_test_.cc | 49 + .../test/gtest_xml_outfiles_test.py | 132 + .../test/gtest_xml_output_unittest.py | 307 + .../test/gtest_xml_output_unittest_.cc | 181 + .../gtest-1.7.0/test/gtest_xml_test_utils.py | 194 + .../gtest-1.7.0/test/production.cc | 36 + .../third-party/gtest-1.7.0/test/production.h | 55 + .../xcode/Config/DebugProject.xcconfig | 30 + .../xcode/Config/FrameworkTarget.xcconfig | 17 + .../gtest-1.7.0/xcode/Config/General.xcconfig | 41 + .../xcode/Config/ReleaseProject.xcconfig | 32 + .../xcode/Config/StaticLibraryTarget.xcconfig | 18 + .../xcode/Config/TestTarget.xcconfig | 8 + .../gtest-1.7.0/xcode/Resources/Info.plist | 30 + .../xcode/Samples/FrameworkSample/Info.plist | 28 + .../WidgetFramework.xcodeproj/project.pbxproj | 457 + .../xcode/Samples/FrameworkSample/runtests.sh | 62 + .../xcode/Samples/FrameworkSample/widget.cc | 63 + .../xcode/Samples/FrameworkSample/widget.h | 59 + .../Samples/FrameworkSample/widget_test.cc | 68 + .../gtest-1.7.0/xcode/Scripts/runtests.sh | 65 + .../xcode/Scripts/versiongenerate.py | 100 + .../xcode/gtest.xcodeproj/project.pbxproj | 1135 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../DHT-sensor-library-master/DHT.cpp | 259 + .../libraries/DHT-sensor-library-master/DHT.h | 75 + .../DHT-sensor-library-master/README.md | 5 + .../examples/DHTtester/DHTtester.ino | 69 + .../DHT-sensor-library-master/keywords.txt | 22 + .../library.properties | 9 + Arduino Code/libraries/DHT.h | 75 + .../DallasTemperature/DallasTemperature.cpp | 807 + .../DallasTemperature/DallasTemperature.h | 269 + .../libraries/DallasTemperature/README.md | 64 + .../libraries/DallasTemperature/change.txt | 85 + .../examples/Alarm/Alarm.pde | 162 + .../examples/AlarmHandler/AlarmHandler.pde | 144 + .../Multibus_simple/Multibus_simple.ino | 48 + .../examples/Multiple/Multiple.pde | 144 + .../examples/Simple/Simple.pde | 41 + .../examples/Single/Single.pde | 116 + .../examples/Tester/Tester.pde | 124 + .../TwoPin_DS18B20/TwoPin_DS18B20.ino | 45 + .../WaitForConversion/WaitForConversion.pde | 66 + .../WaitForConversion2/WaitForConversion2.pde | 80 + .../examples/oneWireSearch/oneWireSearch.ino | 67 + .../examples/setUserData/SetUserData.ino | 47 + .../libraries/DallasTemperature/keywords.txt | 54 + .../libraries/DallasTemperature/library.json | 40 + .../DallasTemperature/library.properties | 9 + .../License.txt | 21 + .../Grove_-_Barometer_Sensor_BMP280/README.md | 27 + .../Seeed_BMP280.cpp | 152 + .../Seeed_BMP280.h | 67 + .../example/bmp280_example/bmp280_example.ino | 66 + .../keywords.txt | 22 + .../library.properties | 10 + .../libraries/HX711-master/.gitignore | 13 + .../libraries/HX711-master/.travis.yml | 19 + Arduino Code/libraries/HX711-master/HX711.cpp | 134 + Arduino Code/libraries/HX711-master/HX711.h | 77 + Arduino Code/libraries/HX711-master/LICENSE | 339 + Arduino Code/libraries/HX711-master/README.md | 35 + .../examples/HX711Serial/HX711Serial.ino | 56 + .../HX711SerialBegin/HX711SerialBegin.ino | 59 + .../libraries/HX711-master/library.json | 17 + .../libraries/IRremote/Contributors.md | 21 + Arduino Code/libraries/IRremote/IRremote.cpp | 193 + Arduino Code/libraries/IRremote/IRremote.h | 332 + Arduino Code/libraries/IRremote/IRremoteInt.h | 602 + Arduino Code/libraries/IRremote/LICENSE.txt | 458 + Arduino Code/libraries/IRremote/README.md | 40 + .../arduino-irremote.sublime-workspace | 240 + Arduino Code/libraries/IRremote/changelog.md | 50 + .../AiwaRCT501SendDemo/AiwaRCT501SendDemo.ino | 26 + .../IRremote/examples/IRrecord/IRrecord.ino | 183 + .../examples/IRrecvDemo/IRrecvDemo.ino | 29 + .../examples/IRrecvDump/IRrecvDump.ino | 95 + .../examples/IRrecvDumpV2/IRrecvDumpV2.ino | 177 + .../IRremote/examples/IRrelay/IRrelay.ino | 85 + .../examples/IRremoteInfo/IRremoteInfo.ino | 210 + .../examples/IRsendDemo/IRsendDemo.ino | 24 + .../examples/IRsendRawDemo/IRsendRawDemo.ino | 37 + .../IRremote/examples/IRtest/IRtest.ino | 190 + .../IRremote/examples/IRtest2/IRtest2.ino | 290 + .../JVCPanasonicSendDemo.ino | 29 + .../examples/LGACSendDemo/LGACSendDemo.ino | 263 + .../examples/LGACSendDemo/LGACSendDemo.md | 93 + Arduino Code/libraries/IRremote/irPronto.cpp | 513 + Arduino Code/libraries/IRremote/irRecv.cpp | 213 + Arduino Code/libraries/IRremote/irSend.cpp | 87 + Arduino Code/libraries/IRremote/ir_Aiwa.cpp | 105 + Arduino Code/libraries/IRremote/ir_Denon.cpp | 94 + Arduino Code/libraries/IRremote/ir_Dish.cpp | 53 + Arduino Code/libraries/IRremote/ir_JVC.cpp | 101 + Arduino Code/libraries/IRremote/ir_LG.cpp | 80 + .../libraries/IRremote/ir_Mitsubishi.cpp | 85 + Arduino Code/libraries/IRremote/ir_NEC.cpp | 98 + .../libraries/IRremote/ir_Panasonic.cpp | 78 + .../libraries/IRremote/ir_RC5_RC6.cpp | 207 + .../libraries/IRremote/ir_Samsung.cpp | 92 + Arduino Code/libraries/IRremote/ir_Sanyo.cpp | 76 + Arduino Code/libraries/IRremote/ir_Sharp.cpp | 71 + Arduino Code/libraries/IRremote/ir_Sony.cpp | 95 + .../libraries/IRremote/ir_Template.cpp | 179 + .../libraries/IRremote/ir_Whynter.cpp | 91 + Arduino Code/libraries/IRremote/keywords.txt | 52 + Arduino Code/libraries/IRremote/library.json | 12 + .../libraries/IRremote/library.properties | 9 + .../IRremoteESP8266-master/Contributors.md | 20 + .../IRremoteESP8266-master/IRDaikinESP.cpp | 153 + .../IRremoteESP8266-master/IRDaikinESP.h | 101 + .../IRremoteESP8266.cpp | 1398 ++ .../IRremoteESP8266-master/IRremoteESP8266.h | 203 + .../IRremoteESP8266-master/IRremoteInt.h | 207 + .../IRremoteESP8266-master/LICENSE.txt | 458 + .../IRremoteESP8266-master/README.md | 27 + .../examples/IRGCSendDemo/IRGCSendDemo.ino | 26 + .../examples/IRGCTCPServer/IRGCTCPServer.ino | 85 + .../examples/IRServer/IRServer.ino | 88 + .../examples/IRrecvDemo/IRrecvDemo.ino | 28 + .../examples/IRrecvDump/IRrecvDump.ino | 89 + .../examples/IRrecvDumpV2/IRrecvDumpV2.ino | 169 + .../examples/IRsendDemo/IRsendDemo.ino | 25 + .../JVCPanasonicSendDemo.ino | 29 + .../TurnOnDaikinAC/TurnOnDaikinAC.ino | 27 + .../IRremoteESP8266-master/keywords.txt | 59 + .../IRremoteESP8266-master/library.json | 12 + .../IRremoteESP8266-master/library.properties | 9 + Arduino Code/libraries/MFRC522/MFRC522.cpp | 1863 ++ Arduino Code/libraries/MFRC522/MFRC522.h | 418 + Arduino Code/libraries/MFRC522/Makefile | 17 + Arduino Code/libraries/MFRC522/README.rst | 271 + Arduino Code/libraries/MFRC522/UNLICENSE | 24 + Arduino Code/libraries/MFRC522/changes.txt | 81 + .../Arduino-Uno-r3-with-RFID-RC522.fzz | Bin 0 -> 23140 bytes .../Arduino-Uno-r3-with-RFID-RC522.png | Bin 0 -> 289125 bytes .../doc/fritzing/RFID-RC522 - Pin Layout.png | Bin 0 -> 165594 bytes .../MFRC522/doc/fritzing/RFID-RC522-v2.fzpz | Bin 0 -> 17796 bytes .../MFRC522/doc/fritzing/RFID-RC522-v2.png | Bin 0 -> 30070 bytes .../libraries/MFRC522/doc/rfidmifare.doc | Bin 0 -> 406016 bytes .../libraries/MFRC522/doc/rfidmifare.pdf | Bin 0 -> 255101 bytes .../MFRC522/examples/ChangeUID/ChangeUID.ino | 111 + .../MFRC522/examples/DumpInfo/DumpInfo.ino | 66 + .../examples/FixBrickedUID/FixBrickedUID.ino | 53 + .../MifareClassicValueBlock.ino | 319 + .../MinimalInterrupt/MinimalInterrupt.ino | 137 + .../examples/Ntag216_AUTH/Ntag216_AUTH.ino | 58 + .../examples/RFID-Cloner/RFID-Cloner.ino | 312 + .../examples/ReadAndWrite/ReadAndWrite.ino | 200 + .../MFRC522/examples/ReadNUID/ReadNUID.ino | 127 + .../ReadUidMultiReader/ReadUidMultiReader.ino | 98 + .../firmware_check/firmware_check.ino | 62 + .../rfid_default_keys/rfid_default_keys.ino | 152 + .../rfid_write_personal_data.ino | 154 + .../examples/servo_motor/servo_motor.ino | 498 + Arduino Code/libraries/MFRC522/keywords.txt | 201 + Arduino Code/libraries/MFRC522/library.json | 14 + .../libraries/MFRC522/library.properties | 9 + Arduino Code/libraries/OneWire/OneWire.cpp | 567 + Arduino Code/libraries/OneWire/OneWire.h | 367 + .../DS18x20_Temperature.pde | 112 + .../examples/DS2408_Switch/DS2408_Switch.pde | 77 + .../examples/DS250x_PROM/DS250x_PROM.pde | 90 + Arduino Code/libraries/OneWire/keywords.txt | 38 + Arduino Code/libraries/OneWire/library.json | 58 + .../libraries/OneWire/library.properties | 10 + .../libraries/PubSubClient/CHANGES.txt | 68 + .../libraries/PubSubClient/LICENSE.txt | 20 + Arduino Code/libraries/PubSubClient/README.md | 47 + .../examples/mqtt_auth/mqtt_auth.ino | 43 + .../examples/mqtt_basic/mqtt_basic.ino | 77 + .../examples/mqtt_esp8266/mqtt_esp8266.ino | 126 + .../mqtt_publish_in_callback.ino | 60 + .../mqtt_reconnect_nonblocking.ino | 67 + .../examples/mqtt_stream/mqtt_stream.ino | 57 + .../libraries/PubSubClient/keywords.txt | 30 + .../libraries/PubSubClient/library.json | 17 + .../libraries/PubSubClient/library.properties | 9 + .../PubSubClient/src/PubSubClient.cpp | 590 + .../libraries/PubSubClient/src/PubSubClient.h | 144 + .../libraries/PubSubClient/tests/.gitignore | 4 + .../libraries/PubSubClient/tests/Makefile | 25 + .../libraries/PubSubClient/tests/README.md | 93 + .../PubSubClient/tests/src/connect_spec.cpp | 256 + .../PubSubClient/tests/src/keepalive_spec.cpp | 185 + .../PubSubClient/tests/src/lib/Arduino.h | 23 + .../PubSubClient/tests/src/lib/BDDTest.cpp | 50 + .../PubSubClient/tests/src/lib/BDDTest.h | 23 + .../PubSubClient/tests/src/lib/Buffer.cpp | 30 + .../PubSubClient/tests/src/lib/Buffer.h | 23 + .../PubSubClient/tests/src/lib/Client.h | 21 + .../PubSubClient/tests/src/lib/IPAddress.cpp | 44 + .../PubSubClient/tests/src/lib/IPAddress.h | 72 + .../PubSubClient/tests/src/lib/ShimClient.cpp | 153 + .../PubSubClient/tests/src/lib/ShimClient.h | 51 + .../PubSubClient/tests/src/lib/Stream.cpp | 39 + .../PubSubClient/tests/src/lib/Stream.h | 22 + .../PubSubClient/tests/src/lib/trace.h | 10 + .../PubSubClient/tests/src/publish_spec.cpp | 190 + .../PubSubClient/tests/src/receive_spec.cpp | 249 + .../PubSubClient/tests/src/subscribe_spec.cpp | 177 + .../PubSubClient/tests/testcases/__init__.py | 0 .../tests/testcases/mqtt_basic.py | 43 + .../testcases/mqtt_publish_in_callback.py | 64 + .../PubSubClient/tests/testcases/settings.py | 2 + .../libraries/PubSubClient/tests/testsuite.py | 179 + Arduino Code/libraries/RFID/README.md | 12 + Arduino Code/libraries/RFID/RFID.cpp | 485 + Arduino Code/libraries/RFID/RFID.h | 151 + Arduino Code/libraries/RFID/TODO.md | 6 + .../RFID/examples/cardDisplay/cardDisplay.ino | 126 + .../RFID/examples/cardRead/cardRead.ino | 96 + .../pruebaLibreriaRFID/pruebaLibreriaRFID.ino | 42 + Arduino Code/libraries/RFID/keywords.txt | 32 + Arduino Code/libraries/RadioHead/LICENSE | 17 + Arduino Code/libraries/RadioHead/MANIFEST | 103 + Arduino Code/libraries/RadioHead/Makefile | 33 + Arduino Code/libraries/RadioHead/RHCRC.cpp | 104 + Arduino Code/libraries/RadioHead/RHCRC.h | 19 + .../libraries/RadioHead/RHDatagram.cpp | 123 + Arduino Code/libraries/RadioHead/RHDatagram.h | 161 + .../libraries/RadioHead/RHGenericDriver.cpp | 182 + .../libraries/RadioHead/RHGenericDriver.h | 265 + .../libraries/RadioHead/RHGenericSPI.cpp | 31 + .../libraries/RadioHead/RHGenericSPI.h | 137 + .../libraries/RadioHead/RHHardwareSPI.cpp | 237 + .../libraries/RadioHead/RHHardwareSPI.h | 67 + Arduino Code/libraries/RadioHead/RHMesh.cpp | 236 + Arduino Code/libraries/RadioHead/RHMesh.h | 253 + .../libraries/RadioHead/RHNRFSPIDriver.cpp | 93 + .../libraries/RadioHead/RHNRFSPIDriver.h | 89 + .../RadioHead/RHReliableDatagram.cpp | 178 + .../libraries/RadioHead/RHReliableDatagram.h | 194 + Arduino Code/libraries/RadioHead/RHRouter.cpp | 302 + Arduino Code/libraries/RadioHead/RHRouter.h | 328 + .../libraries/RadioHead/RHSPIDriver.cpp | 81 + .../libraries/RadioHead/RHSPIDriver.h | 88 + .../libraries/RadioHead/RHSoftwareSPI.cpp | 167 + .../libraries/RadioHead/RHSoftwareSPI.h | 89 + .../libraries/RadioHead/RHTcpProtocol.h | 66 + Arduino Code/libraries/RadioHead/RH_ASK.cpp | 714 + Arduino Code/libraries/RadioHead/RH_ASK.h | 398 + Arduino Code/libraries/RadioHead/RH_NRF24.cpp | 336 + Arduino Code/libraries/RadioHead/RH_NRF24.h | 596 + .../libraries/RadioHead/RH_NRF905.cpp | 260 + Arduino Code/libraries/RadioHead/RH_NRF905.h | 396 + Arduino Code/libraries/RadioHead/RH_RF22.cpp | 731 + Arduino Code/libraries/RadioHead/RH_RF22.h | 1264 + Arduino Code/libraries/RadioHead/RH_RF24.cpp | 1162 + Arduino Code/libraries/RadioHead/RH_RF24.h | 1086 + Arduino Code/libraries/RadioHead/RH_RF69.cpp | 544 + Arduino Code/libraries/RadioHead/RH_RF69.h | 847 + Arduino Code/libraries/RadioHead/RH_RF95.cpp | 376 + Arduino Code/libraries/RadioHead/RH_RF95.h | 600 + .../libraries/RadioHead/RH_Serial.cpp | 199 + Arduino Code/libraries/RadioHead/RH_Serial.h | 204 + Arduino Code/libraries/RadioHead/RH_TCP.cpp | 267 + Arduino Code/libraries/RadioHead/RH_TCP.h | 176 + .../libraries/RadioHead/RHutil/atomic.h | 71 + .../libraries/RadioHead/RHutil/simulator.h | 81 + Arduino Code/libraries/RadioHead/RadioHead.h | 697 + .../STM32ArduinoCompat/HardwareSPI.cpp | 176 + .../STM32ArduinoCompat/HardwareSPI.h | 38 + .../STM32ArduinoCompat/HardwareSerial.cpp | 346 + .../STM32ArduinoCompat/HardwareSerial.h | 74 + .../RadioHead/STM32ArduinoCompat/README | 6 + .../RadioHead/STM32ArduinoCompat/wirish.cpp | 409 + .../RadioHead/STM32ArduinoCompat/wirish.h | 157 + .../ask/ask_receiver/ask_receiver.pde | 31 + .../ask_reliable_datagram_client.pde | 58 + .../ask_reliable_datagram_server.pde | 52 + .../ask/ask_transmitter/ask_transmitter.pde | 26 + .../nrf24/nrf24_client/nrf24_client.pde | 67 + .../nrf24_reliable_datagram_client.pde | 63 + .../nrf24_reliable_datagram_server.pde | 57 + .../nrf24/nrf24_server/nrf24_server.pde | 60 + .../nrf905/nrf905_client/nrf905_client.pde | 59 + .../nrf905_reliable_datagram_client.pde | 60 + .../nrf905_reliable_datagram_server.pde | 54 + .../nrf905/nrf905_server/nrf905_server.pde | 52 + .../examples/rf22/rf22_client/rf22_client.pde | 57 + .../rf22_mesh_client/rf22_mesh_client.pde | 68 + .../rf22_mesh_server1/rf22_mesh_server1.pde | 56 + .../rf22_mesh_server2/rf22_mesh_server2.pde | 56 + .../rf22_mesh_server3/rf22_mesh_server3.pde | 56 + .../rf22_reliable_datagram_client.pde | 61 + .../rf22_reliable_datagram_server.pde | 55 + .../rf22_router_client/rf22_router_client.pde | 72 + .../rf22_router_server1.pde | 59 + .../rf22_router_server2.pde | 59 + .../rf22_router_server3.pde | 59 + .../rf22_router_test/rf22_router_test.pde | 102 + .../examples/rf22/rf22_server/rf22_server.pde | 53 + .../examples/rf24/rf24_client/rf24_client.pde | 58 + .../rf24_reliable_datagram_client.pde | 59 + .../rf24_reliable_datagram_server.pde | 53 + .../examples/rf24/rf24_server/rf24_server.pde | 54 + .../examples/rf69/rf69_client/rf69_client.pde | 73 + .../rf69_reliable_datagram_client.pde | 67 + .../rf69_reliable_datagram_server.pde | 61 + .../examples/rf69/rf69_server/rf69_server.pde | 78 + .../examples/rf95/rf95_client/rf95_client.pde | 59 + .../rf95_reliable_datagram_client.pde | 59 + .../rf95_reliable_datagram_server.pde | 53 + .../examples/rf95/rf95_server/rf95_server.pde | 57 + .../serial_reliable_datagram_client.pde | 68 + .../serial_reliable_datagram_server.pde | 62 + .../simulator_reliable_datagram_client.pde | 67 + .../simulator_reliable_datagram_server.pde | 59 + Arduino Code/libraries/RadioHead/project.cfg | 2280 ++ .../libraries/RadioHead/radio_config_Si4460.h | 606 + .../libraries/RadioHead/tools/chain.conf | 10 + .../RadioHead/tools/etherSimulator.pl | 224 + .../libraries/RadioHead/tools/simBuild | 13 + .../libraries/RadioHead/tools/simMain.cpp | 66 + Arduino Code/libraries/RfidDb/LICENSE | 24 + Arduino Code/libraries/RfidDb/README.md | 161 + .../RfidDb/examples/RfidDbTest/RfidDbTest.ino | 136 + Arduino Code/libraries/RfidDb/keywords.txt | 8 + .../libraries/RfidDb/library.properties | 10 + Arduino Code/libraries/RfidDb/src/RfidDb.cpp | 199 + Arduino Code/libraries/RfidDb/src/RfidDb.h | 106 + .../libraries/WhareHauoraWiFiManager/LICENSE | 22 + .../WhareHauoraWiFiManager/README.md | 389 + .../WhareHauoraWiFiManager/WiFiManager.cpp | 783 + .../WhareHauoraWiFiManager/WiFiManager.h | 197 + .../examples/AutoConnect/AutoConnect.ino | 38 + .../AutoConnectWithFSParameters.ino | 156 + ...AutoConnectWithFSParametersAndCustomIP.ino | 188 + .../AutoConnectWithFeedback.ino | 47 + .../AutoConnectWithFeedbackLED.ino | 68 + .../AutoConnectWithReset.ino | 49 + .../AutoConnectWithStaticIP.ino | 80 + .../AutoConnectWithTimeout.ino | 45 + .../OnDemandConfigPortal.ino | 60 + .../extras/WiFiManager.template.html | 80 + .../WhareHauoraWiFiManager/extras/parse.js | 60 + .../WhareHauoraWiFiManager/extras/template.h | 12 + .../WhareHauoraWiFiManager/keywords.txt | 39 + .../WhareHauoraWiFiManager/library.json | 13 + .../WhareHauoraWiFiManager/library.properties | 9 + .../WhareHauoraWiFiManager/travis/common.sh | 51 + .../libraries/rc-switch-2.6.2/.gitignore | 17 + .../libraries/rc-switch-2.6.2/.travis.yml | 69 + .../libraries/rc-switch-2.6.2/RCSwitch.cpp | 697 + .../libraries/rc-switch-2.6.2/RCSwitch.h | 156 + .../libraries/rc-switch-2.6.2/README.md | 39 + .../ReceiveDemo_Advanced.ino | 24 + .../examples/ReceiveDemo_Advanced/output.ino | 74 + .../ReceiveDemo_Simple/ReceiveDemo_Simple.ino | 35 + .../examples/SendDemo/SendDemo.ino | 57 + .../TypeA_WithDIPSwitches.ino | 40 + .../TypeA_WithDIPSwitches_Lightweight.ino | 43 + .../TypeB_WithRotaryOrSlidingSwitches.ino | 40 + .../TypeC_Intertechno/TypeC_Intertechno.ino | 40 + .../examples/TypeD_REV/TypeD_REV.ino | 41 + .../examples/Webserver/Webserver.ino | 154 + .../libraries/rc-switch-2.6.2/keywords.txt | 57 + .../libraries/rc-switch-2.6.2/library.json | 21 + .../rc-switch-2.6.2/library.properties | 10 + Arduino Code/libraries/readme.txt | 1 + Arduino Code/sketch_aug24b/sketch_aug24b.ino | 40 + Arduino Code/test_Receiver/test_Receiver.ino | 34 + 916 files changed, 247792 insertions(+) create mode 100644 Arduino Code/3D_Printer/Smoke_Temp_IR/Smoke_Temp_IR.ino create mode 100644 Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station.ino create mode 100644 Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station_bmp280.ino/Smoke__temp_station_bmp280.ino.ino create mode 100644 Arduino Code/3D_Printer/Wiring plan.png create mode 100644 Arduino Code/AutomatedLight-Memoire/AutomatedLight-Memoire.ino create mode 100644 Arduino Code/Home Automation/Detect_movement_light/Detect_movement_light.ino create mode 100644 Arduino Code/Home Automation/TV_GoogleHome/TV_GoogleHome.ino create mode 100644 Arduino Code/LM35/LM35.ino create mode 100644 Arduino Code/MyMirror/LedWeather/LedWeather.ino create mode 100644 Arduino Code/MyMirror/LedWeatherMQTT/LedWeatherMQTT.ino create mode 100644 Arduino Code/MyMirror/MoveSensor/MoveSensor.ino create mode 100644 Arduino Code/MyMirror/Scale/Scale.ino create mode 100644 Arduino Code/MyMirror/TempCloudMQTT/TempCloudMQTT.ino create mode 100644 Arduino Code/MyMirror/TestSharp/TestSharp.ino create mode 100644 Arduino Code/RF/Receiver/Receiver.ino create mode 100644 Arduino Code/RF/Transmitter/Transmitter.ino create mode 100644 Arduino Code/RGB_HotSpot.c create mode 100644 Arduino Code/RepeteurWifi/RepeteurWifi.ino create mode 100644 Arduino Code/Test/Blink-ESP8266/Blink-ESP8266.ino create mode 100644 Arduino Code/Test/Blink-Wemos/Blink-Wemos.ino create mode 100644 Arduino Code/Test/Blink/Blink.ino create mode 100644 Arduino Code/Test/Button-RingSimulator/Button-RingSimulator.ino create mode 100644 Arduino Code/Test/Button-RingSimulator_-_MQTT/Button-RingSimulator_-_MQTT.ino create mode 100644 Arduino Code/Test/HotSpot/HotSpot.ino create mode 100644 Arduino Code/Test/HotSpot_and_connection/HotSpot_and_connection.ino create mode 100644 Arduino Code/Test/Humidity-Temp-Sensor-WebServer/Humidity-Temp-Sensor-WebServer.ino create mode 100644 Arduino Code/Test/Humidity-Temp-Sensor-WebServer/Humidity-Temp-Sensor-WebServer.ino.adafruit.bin create mode 100644 Arduino Code/Test/Humidity-Temperature-Sensor/Humidity-Temperature-Sensor.ino create mode 100644 Arduino Code/Test/LedWifi-Open-Close-ESP8266/LedWifi-Open-Close-ESP8266.ino create mode 100644 Arduino Code/Test/Led_wifi_-_ESP8266/Led_wifi_-_ESP8266.ino create mode 100644 Arduino Code/Test/Magnetic-Sensor-Wifi/Magnetic-Sensor-Wifi.ino create mode 100644 Arduino Code/Test/Magnetic-Sensor/Magnetic-Sensor.ino create mode 100644 Arduino Code/Test/MotionSensor/MotionSensor.ino create mode 100644 Arduino Code/Test/OLED-Wifi/OLED-Wifi.ino create mode 100644 Arduino Code/Test/OLED/OLED.ino create mode 100644 Arduino Code/Test/Oled-Wifi-HTTP/Oled-Wifi-HTTP.ino create mode 100644 Arduino Code/Test/Relay-Wifi/Relay-Wifi.ino create mode 100644 Arduino Code/Test/Relay/Relay.ino create mode 100644 Arduino Code/Test/RelayL-Wifi/RelayL-Wifi.ino create mode 100644 Arduino Code/Test/RelayL_-_MQTT/RelayL_-_MQTT.ino create mode 100644 Arduino Code/Test/TestConnectionJSON/TestConnectionJSON.ino create mode 100644 Arduino Code/Test/TestJson/TestJson.ino create mode 100644 Arduino Code/Test/WebServer-PostTest/WebServer-PostTest.ino create mode 100644 Arduino Code/Test/WifiConnection/WifiConnection.ino create mode 100644 Arduino Code/Wemos/AvoidSensor/AvoidSensor.ino create mode 100644 Arduino Code/Wemos/DS18B20/DS18B20.ino create mode 100644 Arduino Code/Wemos/SharpSensor/SharpSensor.ino create mode 100644 Arduino Code/Wemos/TestRFID/TestRFID.ino create mode 100644 Arduino Code/Wemos/Wemos-Avoid/Wemos-Avoid.ino create mode 100644 Arduino Code/Wemos/Wemos-IRReceiver/Wemos-IRReceiver.ino/Wemos-IRReceiver.ino.ino create mode 100644 Arduino Code/Wemos/Wemos-IRTransmitterTv_Led/Wemos-IRTransmitterTv_Led.ino create mode 100644 Arduino Code/Wemos/Wemos-IRsendDemo/Wemos-IRsendDemo.ino create mode 100644 Arduino Code/Wemos/Wemos-IRsendLed/Wemos-IRsendLed.ino create mode 100644 Arduino Code/Wemos/Wemos-Servo/Wemos-Servo.ino create mode 100644 Arduino Code/Wemos/Wemos-SmokeDetector/Wemos-SmokeDetector.ino create mode 100644 Arduino Code/Wemos/Wemos-SonGrand/Wemos-SonGrand.ino create mode 100644 Arduino Code/Wemos/Wemos-SonPetit/Wemos-SonPetit.ino create mode 100644 Arduino Code/Wemos/Wemos-Temp/Wemos-Temp.ino create mode 100644 Arduino Code/Wemos/Wemos-Tracking/Wemos-Tracking.ino create mode 100644 Arduino Code/Wemos/Wemos-Yeelight-connect/Wemos-Yeelight-connect.ino create mode 100644 Arduino Code/Yeelight_Inter-Operation_Spec.pdf create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/examples/Timer2_RTC/Timer2_RTC.ino create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/library.properties create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/readme.md create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/asc_store.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/asctime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/asctime_r.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/ctime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/ctime_r.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/daylight_seconds.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/difftime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/dst_pointer.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/ephemera_common.h create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/equation_of_time.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/fatfs_time.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/geo_location.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/gm_sidereal.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/gmtime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/gmtime_r.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/isLeap.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/iso_week_date.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/iso_week_date_r.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/isotime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/isotime_r.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/lm_sidereal.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/localtime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/localtime_r.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/mk_gmtime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/mktime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/month_length.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/moon_phase.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/print_lz.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/set_dst.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/set_position.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/set_system_time.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/set_zone.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/solar_declination.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/solar_noon.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/strftime.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/sun_rise.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/sun_set.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/system_tick.S create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/system_time.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/time.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/time.h create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/timer2.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/tm_store.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/utc_offset.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/week_of_month.c create mode 100644 Arduino Code/libraries/AVR_Standard_C_Time_Library/src/week_of_year.c create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Adafruit_GFX.cpp create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Adafruit_GFX.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMono12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMono18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMono24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMono9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBold12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBold18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBold24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBold9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBoldOblique12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBoldOblique18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBoldOblique24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoBoldOblique9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoOblique12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoOblique18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoOblique24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeMonoOblique9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSans12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSans18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSans24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSans9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBold12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBold18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBold24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBold9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBoldOblique12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBoldOblique18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBoldOblique24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansBoldOblique9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansOblique12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansOblique18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansOblique24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSansOblique9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerif12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerif18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerif24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerif9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBold12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBold18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBold24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBold9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBoldItalic12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBoldItalic18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBoldItalic24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifBoldItalic9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifItalic12pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifItalic18pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifItalic24pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/FreeSerifItalic9pt7b.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/Fonts/TomThumb.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/README.md create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/fontconvert/Makefile create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/fontconvert/fontconvert.c create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/fontconvert/makefonts.sh create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/gfxfont.h create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/glcdfont.c create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/library.properties create mode 100644 Arduino Code/libraries/Adafruit-GFX-Library-master/license.txt create mode 100644 Arduino Code/libraries/Adafruit_BME280_Library/Adafruit_BME280.cpp create mode 100644 Arduino Code/libraries/Adafruit_BME280_Library/Adafruit_BME280.h create mode 100644 Arduino Code/libraries/Adafruit_BME280_Library/README.md create mode 100644 Arduino Code/libraries/Adafruit_BME280_Library/examples/advancedsettings/advancedsettings.ino create mode 100644 Arduino Code/libraries/Adafruit_BME280_Library/examples/bme280test/bme280test.ino create mode 100644 Arduino Code/libraries/Adafruit_BME280_Library/library.properties create mode 100644 Arduino Code/libraries/Adafruit_BMP280_Library/Adafruit_BMP280.cpp create mode 100644 Arduino Code/libraries/Adafruit_BMP280_Library/Adafruit_BMP280.h create mode 100644 Arduino Code/libraries/Adafruit_BMP280_Library/README.md create mode 100644 Arduino Code/libraries/Adafruit_BMP280_Library/examples/bmp280test/bmp280test.ino create mode 100644 Arduino Code/libraries/Adafruit_BMP280_Library/library.properties create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/.github/ISSUE_TEMPLATE.md create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/.gitignore create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/Adafruit_FeatherOLED.cpp create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/Adafruit_FeatherOLED.h create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/Adafruit_FeatherOLED_WiFi.cpp create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/Adafruit_FeatherOLED_WiFi.h create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/LICENSE create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/README.md create mode 100644 Arduino Code/libraries/Adafruit_FeatherOLED-master/examples/tester/tester.ino create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/README.txt create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/documentation/ZFM-20_Fingerprint_Module.pdf create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/documentation/fingerprint_en.pdf create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/documentation/readme.txt create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/examples/Leo_passthru/Leo_passthru.ino create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/examples/blank/blank.ino create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/library.properties create mode 100644 Arduino Code/libraries/Adafruit_Fingerprint_Sensor_Library/license.txt create mode 100644 Arduino Code/libraries/Adafruit_PN532/Adafruit_PN532.cpp create mode 100644 Arduino Code/libraries/Adafruit_PN532/Adafruit_PN532.h create mode 100644 Arduino Code/libraries/Adafruit_PN532/README.txt create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/.classpath create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/.project create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/.settings/org.eclipse.jdt.core.prefs create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/BlackBerry_App_Descriptor.xml create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/build.xml create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/res/img/icon.png create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/ColorMixer.java create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyApp.java create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/BlackBerry7/src/mypackage/MyScreen.java create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/apduToBlackBerry/apduToBlackBerry.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/iso14443a_uid/iso14443a_uid.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/mifareclassic_formatndef/mifareclassic_formatndef.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/mifareclassic_memdump/mifareclassic_memdump.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/mifareclassic_ndeftoclassic/mifareclassic_ndeftoclassic.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/mifareclassic_updatendef/mifareclassic_updatendef.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/ntag2xx_erase/ntag2xx_erase.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/ntag2xx_read/ntag2xx_read.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/ntag2xx_updatendef/ntag2xx_updatendef.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/readMifare/readMifare.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/examples/readMifareClassic/readMifareClassic.pde create mode 100644 Arduino Code/libraries/Adafruit_PN532/library.properties create mode 100644 Arduino Code/libraries/Adafruit_PN532/license.txt create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/.github/ISSUE_TEMPLATE.md create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/Adafruit_SSD1306.cpp create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/Adafruit_SSD1306.h create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/README.md create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/README.txt create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/examples/ssd1306_128x32_spi/ssd1306_128x32_spi.ino create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/examples/ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/examples/ssd1306_128x64_spi/ssd1306_128x64_spi.ino create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/library.properties create mode 100644 Arduino Code/libraries/Adafruit_SSD1306-master/license.txt create mode 100644 Arduino Code/libraries/Adafruit_Unified_Sensor/Adafruit_Sensor.h create mode 100644 Arduino Code/libraries/Adafruit_Unified_Sensor/README.md create mode 100644 Arduino Code/libraries/Adafruit_Unified_Sensor/library.properties create mode 100644 Arduino Code/libraries/ArduinoJson/.clang-format create mode 100644 Arduino Code/libraries/ArduinoJson/.gitattributes create mode 100644 Arduino Code/libraries/ArduinoJson/.github/ISSUE_TEMPLATE.md create mode 100644 Arduino Code/libraries/ArduinoJson/.gitignore create mode 100644 Arduino Code/libraries/ArduinoJson/.mbedignore create mode 100644 Arduino Code/libraries/ArduinoJson/.travis.yml create mode 100644 Arduino Code/libraries/ArduinoJson/ArduinoJson.h create mode 100644 Arduino Code/libraries/ArduinoJson/CHANGELOG.md create mode 100644 Arduino Code/libraries/ArduinoJson/CMakeLists.txt create mode 100644 Arduino Code/libraries/ArduinoJson/LICENSE.md create mode 100644 Arduino Code/libraries/ArduinoJson/README.md create mode 100644 Arduino Code/libraries/ArduinoJson/appveyor.yml create mode 100644 Arduino Code/libraries/ArduinoJson/examples/IndentedPrintExample/IndentedPrintExample.ino create mode 100644 Arduino Code/libraries/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino create mode 100644 Arduino Code/libraries/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino create mode 100644 Arduino Code/libraries/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino create mode 100644 Arduino Code/libraries/ArduinoJson/examples/JsonServer/JsonServer.ino create mode 100644 Arduino Code/libraries/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson.h create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Configuration.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/DynamicJsonBuffer.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/BlockJsonBuffer.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/Comments.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/DummyPrint.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/DynamicStringBuilder.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/Encoding.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/IndentedPrint.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonBufferAllocated.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonFloat.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonInteger.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonParser.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonParser.ipp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonPrintable.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonSerializer.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonSerializer.ipp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonVariantAs.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonVariantContent.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonVariantType.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/JsonWriter.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/List.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/ListConstIterator.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/ListIterator.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/ListNode.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/Parse.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/Prettyfier.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/ReferenceType.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/StaticStringBuilder.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Internals/StreamPrintAdapter.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonArray.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonArray.ipp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonArraySubscript.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonBuffer.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonBuffer.ipp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonObject.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonObject.ipp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonObjectKey.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonObjectSubscript.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonPair.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonVariant.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonVariant.ipp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/JsonVariantBase.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Polyfills/attributes.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Polyfills/math.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Polyfills/normalize.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/Print.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/RawJson.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/StaticJsonBuffer.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/String.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/EnableIf.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/IsFloatingPoint.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/IsIntegral.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/IsReference.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/IsSame.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/IsSignedIntegral.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/IsUnsignedIntegral.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/RemoveConst.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/include/ArduinoJson/TypeTraits/RemoveReference.hpp create mode 100644 Arduino Code/libraries/ArduinoJson/keywords.txt create mode 100644 Arduino Code/libraries/ArduinoJson/library.json create mode 100644 Arduino Code/libraries/ArduinoJson/library.properties create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/buffer-size-calculator.html create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/build-arduino-package.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/cpplint.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/create-build-envs.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/create-size-graph.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/format-code.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/run-tests.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/travis/arduino.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/travis/cmake-osx.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/travis/cmake.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/travis/coverage.sh create mode 100644 Arduino Code/libraries/ArduinoJson/scripts/travis/platformio.sh create mode 100644 Arduino Code/libraries/ArduinoJson/test/ArduinoString_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/CMakeLists.txt create mode 100644 Arduino Code/libraries/ArduinoJson/test/DynamicJsonBuffer_Array_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/DynamicJsonBuffer_Basic_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/DynamicJsonBuffer_NoMemory_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/DynamicJsonBuffer_Object_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/GbathreeBug.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/IntegrationTests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/Issue10.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/Issue214.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/Issue34.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/Issue90.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_Add_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_Basic_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_CopyFrom_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_CopyTo_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_Invalid_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_Iterator_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_PrettyPrintTo_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_PrintTo_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_Remove_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_Set_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonArray_Subscript_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_Basic_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_ContainsKey_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_Invalid_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_Iterator_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_PrettyPrintTo_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_PrintTo_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_Remove_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_Set_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonObject_Subscript_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonParser_Array_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonParser_Nested_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonParser_NestingLimit_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonParser_Object_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonParser_Variant_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_As_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_Comparison_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_Copy_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_Is_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_PrintTo_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_Storage_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_Subscript_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_Success_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonVariant_Undefined_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonWriter_WriteFloat_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/JsonWriter_WriteString_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/StaticJsonBuffer_Basic_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/StaticJsonBuffer_CreateArray_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/StaticJsonBuffer_CreateObject_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/StaticJsonBuffer_ParseArray_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/StaticJsonBuffer_ParseObject_Tests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/StdStream.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/StringBuilderTests.cpp create mode 100644 Arduino Code/libraries/ArduinoJson/test/gtest.cmake create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/cpplint/cpplint.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/CHANGES create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/CMakeLists.txt create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/CONTRIBUTORS create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/LICENSE create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/Makefile.am create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/Makefile.in create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/README create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/aclocal.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/build-aux/config.guess create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/build-aux/config.h.in create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/build-aux/config.sub create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/build-aux/depcomp create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/build-aux/install-sh create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/build-aux/ltmain.sh create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/build-aux/missing create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/cmake/internal_utils.cmake create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/codegear/gtest.cbproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/codegear/gtest.groupproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/codegear/gtest_all.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/codegear/gtest_link.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/codegear/gtest_main.cbproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/codegear/gtest_unittest.cbproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/configure create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/configure.ac create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/fused-src/gtest/gtest-all.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/fused-src/gtest/gtest.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/fused-src/gtest/gtest_main.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-death-test.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-message.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-param-test.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-param-test.h.pump create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-printers.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-spi.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-test-part.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest-typed-test.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest_pred_impl.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/gtest_prod.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-filepath.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-internal.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-param-util.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-port.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-string.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-tuple.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-type-util.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/m4/acx_pthread.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/m4/gtest.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/m4/libtool.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/m4/ltoptions.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/m4/ltsugar.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/m4/ltversion.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/m4/lt~obsolete.m4 create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/make/Makefile create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest-md.sln create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest-md.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest.sln create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest_main-md.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest_main.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest_prod_test-md.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest_prod_test.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest_unittest-md.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/msvc/gtest_unittest.vcproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/prime_tables.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample1.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample1.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample10_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample1_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample2.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample2.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample2_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample3-inl.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample3_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample4.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample4.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample4_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample5_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample6_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample7_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample8_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/samples/sample9_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/scripts/fuse_gtest_files.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/scripts/gen_gtest_pred_impl.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/scripts/gtest-config.in create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/scripts/pump.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/scripts/test/Makefile create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-all.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-death-test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-filepath.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-internal-inl.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-port.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-printers.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-test-part.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest-typed-test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/src/gtest_main.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-death-test_ex_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-death-test_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-filepath_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-linked_ptr_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-listener_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-message_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-options_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-param-test2_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-param-test_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-param-test_test.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-port_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-printers_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-test-part_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-tuple_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-typed-test2_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-typed-test_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-typed-test_test.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest-unittest-api_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_all_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_break_on_failure_unittest.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_break_on_failure_unittest_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_catch_exceptions_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_catch_exceptions_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_color_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_color_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_env_var_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_env_var_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_environment_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_filter_unittest.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_filter_unittest_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_help_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_help_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_list_tests_unittest.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_list_tests_unittest_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_main_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_no_test_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_output_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_output_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_output_test_golden_lin.txt create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_pred_impl_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_premature_exit_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_prod_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_repeat_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_shuffle_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_shuffle_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_sole_header_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_stress_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_test_utils.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_throw_on_failure_ex_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_throw_on_failure_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_throw_on_failure_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_uninitialized_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_uninitialized_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_unittest.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_xml_outfile1_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_xml_outfile2_test_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_xml_outfiles_test.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_xml_output_unittest.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_xml_output_unittest_.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/gtest_xml_test_utils.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/production.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/test/production.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Config/DebugProject.xcconfig create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Config/FrameworkTarget.xcconfig create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Config/General.xcconfig create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Config/ReleaseProject.xcconfig create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Config/StaticLibraryTarget.xcconfig create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Config/TestTarget.xcconfig create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Resources/Info.plist create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Samples/FrameworkSample/Info.plist create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Samples/FrameworkSample/runtests.sh create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Samples/FrameworkSample/widget.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Samples/FrameworkSample/widget.h create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Samples/FrameworkSample/widget_test.cc create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Scripts/runtests.sh create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/Scripts/versiongenerate.py create mode 100644 Arduino Code/libraries/ArduinoJson/third-party/gtest-1.7.0/xcode/gtest.xcodeproj/project.pbxproj create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/.github/ISSUE_TEMPLATE.md create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/DHT.cpp create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/DHT.h create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/README.md create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/examples/DHTtester/DHTtester.ino create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/keywords.txt create mode 100644 Arduino Code/libraries/DHT-sensor-library-master/library.properties create mode 100644 Arduino Code/libraries/DHT.h create mode 100644 Arduino Code/libraries/DallasTemperature/DallasTemperature.cpp create mode 100644 Arduino Code/libraries/DallasTemperature/DallasTemperature.h create mode 100644 Arduino Code/libraries/DallasTemperature/README.md create mode 100644 Arduino Code/libraries/DallasTemperature/change.txt create mode 100644 Arduino Code/libraries/DallasTemperature/examples/Alarm/Alarm.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/AlarmHandler/AlarmHandler.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/Multibus_simple/Multibus_simple.ino create mode 100644 Arduino Code/libraries/DallasTemperature/examples/Multiple/Multiple.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/Simple/Simple.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/Single/Single.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/Tester/Tester.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/TwoPin_DS18B20/TwoPin_DS18B20.ino create mode 100644 Arduino Code/libraries/DallasTemperature/examples/WaitForConversion/WaitForConversion.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/WaitForConversion2/WaitForConversion2.pde create mode 100644 Arduino Code/libraries/DallasTemperature/examples/oneWireSearch/oneWireSearch.ino create mode 100644 Arduino Code/libraries/DallasTemperature/examples/setUserData/SetUserData.ino create mode 100644 Arduino Code/libraries/DallasTemperature/keywords.txt create mode 100644 Arduino Code/libraries/DallasTemperature/library.json create mode 100644 Arduino Code/libraries/DallasTemperature/library.properties create mode 100644 Arduino Code/libraries/Grove_-_Barometer_Sensor_BMP280/License.txt create mode 100644 Arduino Code/libraries/Grove_-_Barometer_Sensor_BMP280/README.md create mode 100644 Arduino Code/libraries/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.cpp create mode 100644 Arduino Code/libraries/Grove_-_Barometer_Sensor_BMP280/Seeed_BMP280.h create mode 100644 Arduino Code/libraries/Grove_-_Barometer_Sensor_BMP280/example/bmp280_example/bmp280_example.ino create mode 100644 Arduino Code/libraries/Grove_-_Barometer_Sensor_BMP280/keywords.txt create mode 100644 Arduino Code/libraries/Grove_-_Barometer_Sensor_BMP280/library.properties create mode 100644 Arduino Code/libraries/HX711-master/.gitignore create mode 100644 Arduino Code/libraries/HX711-master/.travis.yml create mode 100644 Arduino Code/libraries/HX711-master/HX711.cpp create mode 100644 Arduino Code/libraries/HX711-master/HX711.h create mode 100644 Arduino Code/libraries/HX711-master/LICENSE create mode 100644 Arduino Code/libraries/HX711-master/README.md create mode 100644 Arduino Code/libraries/HX711-master/examples/HX711Serial/HX711Serial.ino create mode 100644 Arduino Code/libraries/HX711-master/examples/HX711SerialBegin/HX711SerialBegin.ino create mode 100644 Arduino Code/libraries/HX711-master/library.json create mode 100644 Arduino Code/libraries/IRremote/Contributors.md create mode 100644 Arduino Code/libraries/IRremote/IRremote.cpp create mode 100644 Arduino Code/libraries/IRremote/IRremote.h create mode 100644 Arduino Code/libraries/IRremote/IRremoteInt.h create mode 100644 Arduino Code/libraries/IRremote/LICENSE.txt create mode 100644 Arduino Code/libraries/IRremote/README.md create mode 100644 Arduino Code/libraries/IRremote/arduino-irremote.sublime-workspace create mode 100644 Arduino Code/libraries/IRremote/changelog.md create mode 100644 Arduino Code/libraries/IRremote/examples/AiwaRCT501SendDemo/AiwaRCT501SendDemo.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRrecord/IRrecord.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRrecvDemo/IRrecvDemo.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRrecvDump/IRrecvDump.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRrecvDumpV2/IRrecvDumpV2.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRrelay/IRrelay.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRremoteInfo/IRremoteInfo.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRsendDemo/IRsendDemo.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRsendRawDemo/IRsendRawDemo.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRtest/IRtest.ino create mode 100644 Arduino Code/libraries/IRremote/examples/IRtest2/IRtest2.ino create mode 100644 Arduino Code/libraries/IRremote/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino create mode 100644 Arduino Code/libraries/IRremote/examples/LGACSendDemo/LGACSendDemo.ino create mode 100644 Arduino Code/libraries/IRremote/examples/LGACSendDemo/LGACSendDemo.md create mode 100644 Arduino Code/libraries/IRremote/irPronto.cpp create mode 100644 Arduino Code/libraries/IRremote/irRecv.cpp create mode 100644 Arduino Code/libraries/IRremote/irSend.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Aiwa.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Denon.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Dish.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_JVC.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_LG.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Mitsubishi.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_NEC.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Panasonic.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_RC5_RC6.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Samsung.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Sanyo.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Sharp.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Sony.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Template.cpp create mode 100644 Arduino Code/libraries/IRremote/ir_Whynter.cpp create mode 100644 Arduino Code/libraries/IRremote/keywords.txt create mode 100644 Arduino Code/libraries/IRremote/library.json create mode 100644 Arduino Code/libraries/IRremote/library.properties create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/Contributors.md create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/IRDaikinESP.cpp create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/IRDaikinESP.h create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/IRremoteESP8266.cpp create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/IRremoteESP8266.h create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/IRremoteInt.h create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/LICENSE.txt create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/README.md create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/IRGCSendDemo/IRGCSendDemo.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/IRGCTCPServer/IRGCTCPServer.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/IRServer/IRServer.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/IRrecvDemo/IRrecvDemo.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/IRrecvDump/IRrecvDump.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/IRrecvDumpV2/IRrecvDumpV2.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/IRsendDemo/IRsendDemo.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/keywords.txt create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/library.json create mode 100644 Arduino Code/libraries/IRremoteESP8266-master/library.properties create mode 100644 Arduino Code/libraries/MFRC522/MFRC522.cpp create mode 100644 Arduino Code/libraries/MFRC522/MFRC522.h create mode 100644 Arduino Code/libraries/MFRC522/Makefile create mode 100644 Arduino Code/libraries/MFRC522/README.rst create mode 100644 Arduino Code/libraries/MFRC522/UNLICENSE create mode 100644 Arduino Code/libraries/MFRC522/changes.txt create mode 100644 Arduino Code/libraries/MFRC522/doc/fritzing/Arduino-Uno-r3-with-RFID-RC522.fzz create mode 100644 Arduino Code/libraries/MFRC522/doc/fritzing/Arduino-Uno-r3-with-RFID-RC522.png create mode 100644 Arduino Code/libraries/MFRC522/doc/fritzing/RFID-RC522 - Pin Layout.png create mode 100644 Arduino Code/libraries/MFRC522/doc/fritzing/RFID-RC522-v2.fzpz create mode 100644 Arduino Code/libraries/MFRC522/doc/fritzing/RFID-RC522-v2.png create mode 100644 Arduino Code/libraries/MFRC522/doc/rfidmifare.doc create mode 100644 Arduino Code/libraries/MFRC522/doc/rfidmifare.pdf create mode 100644 Arduino Code/libraries/MFRC522/examples/ChangeUID/ChangeUID.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/DumpInfo/DumpInfo.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/FixBrickedUID/FixBrickedUID.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/MifareClassicValueBlock/MifareClassicValueBlock.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/MinimalInterrupt/MinimalInterrupt.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/Ntag216_AUTH/Ntag216_AUTH.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/RFID-Cloner/RFID-Cloner.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/ReadAndWrite/ReadAndWrite.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/ReadNUID/ReadNUID.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/ReadUidMultiReader/ReadUidMultiReader.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/firmware_check/firmware_check.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/rfid_default_keys/rfid_default_keys.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/rfid_write_personal_data/rfid_write_personal_data.ino create mode 100644 Arduino Code/libraries/MFRC522/examples/servo_motor/servo_motor.ino create mode 100644 Arduino Code/libraries/MFRC522/keywords.txt create mode 100644 Arduino Code/libraries/MFRC522/library.json create mode 100644 Arduino Code/libraries/MFRC522/library.properties create mode 100644 Arduino Code/libraries/OneWire/OneWire.cpp create mode 100644 Arduino Code/libraries/OneWire/OneWire.h create mode 100644 Arduino Code/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.pde create mode 100644 Arduino Code/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.pde create mode 100644 Arduino Code/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.pde create mode 100644 Arduino Code/libraries/OneWire/keywords.txt create mode 100644 Arduino Code/libraries/OneWire/library.json create mode 100644 Arduino Code/libraries/OneWire/library.properties create mode 100644 Arduino Code/libraries/PubSubClient/CHANGES.txt create mode 100644 Arduino Code/libraries/PubSubClient/LICENSE.txt create mode 100644 Arduino Code/libraries/PubSubClient/README.md create mode 100644 Arduino Code/libraries/PubSubClient/examples/mqtt_auth/mqtt_auth.ino create mode 100644 Arduino Code/libraries/PubSubClient/examples/mqtt_basic/mqtt_basic.ino create mode 100644 Arduino Code/libraries/PubSubClient/examples/mqtt_esp8266/mqtt_esp8266.ino create mode 100644 Arduino Code/libraries/PubSubClient/examples/mqtt_publish_in_callback/mqtt_publish_in_callback.ino create mode 100644 Arduino Code/libraries/PubSubClient/examples/mqtt_reconnect_nonblocking/mqtt_reconnect_nonblocking.ino create mode 100644 Arduino Code/libraries/PubSubClient/examples/mqtt_stream/mqtt_stream.ino create mode 100644 Arduino Code/libraries/PubSubClient/keywords.txt create mode 100644 Arduino Code/libraries/PubSubClient/library.json create mode 100644 Arduino Code/libraries/PubSubClient/library.properties create mode 100644 Arduino Code/libraries/PubSubClient/src/PubSubClient.cpp create mode 100644 Arduino Code/libraries/PubSubClient/src/PubSubClient.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/.gitignore create mode 100644 Arduino Code/libraries/PubSubClient/tests/Makefile create mode 100644 Arduino Code/libraries/PubSubClient/tests/README.md create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/connect_spec.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/keepalive_spec.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/Arduino.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/BDDTest.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/BDDTest.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/Buffer.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/Buffer.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/Client.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/IPAddress.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/IPAddress.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/ShimClient.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/ShimClient.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/Stream.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/Stream.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/lib/trace.h create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/publish_spec.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/receive_spec.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/src/subscribe_spec.cpp create mode 100644 Arduino Code/libraries/PubSubClient/tests/testcases/__init__.py create mode 100644 Arduino Code/libraries/PubSubClient/tests/testcases/mqtt_basic.py create mode 100644 Arduino Code/libraries/PubSubClient/tests/testcases/mqtt_publish_in_callback.py create mode 100644 Arduino Code/libraries/PubSubClient/tests/testcases/settings.py create mode 100644 Arduino Code/libraries/PubSubClient/tests/testsuite.py create mode 100644 Arduino Code/libraries/RFID/README.md create mode 100644 Arduino Code/libraries/RFID/RFID.cpp create mode 100644 Arduino Code/libraries/RFID/RFID.h create mode 100644 Arduino Code/libraries/RFID/TODO.md create mode 100644 Arduino Code/libraries/RFID/examples/cardDisplay/cardDisplay.ino create mode 100644 Arduino Code/libraries/RFID/examples/cardRead/cardRead.ino create mode 100644 Arduino Code/libraries/RFID/examples/pruebaLibreriaRFID/pruebaLibreriaRFID.ino create mode 100644 Arduino Code/libraries/RFID/keywords.txt create mode 100644 Arduino Code/libraries/RadioHead/LICENSE create mode 100644 Arduino Code/libraries/RadioHead/MANIFEST create mode 100644 Arduino Code/libraries/RadioHead/Makefile create mode 100644 Arduino Code/libraries/RadioHead/RHCRC.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHCRC.h create mode 100644 Arduino Code/libraries/RadioHead/RHDatagram.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHDatagram.h create mode 100644 Arduino Code/libraries/RadioHead/RHGenericDriver.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHGenericDriver.h create mode 100644 Arduino Code/libraries/RadioHead/RHGenericSPI.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHGenericSPI.h create mode 100644 Arduino Code/libraries/RadioHead/RHHardwareSPI.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHHardwareSPI.h create mode 100644 Arduino Code/libraries/RadioHead/RHMesh.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHMesh.h create mode 100644 Arduino Code/libraries/RadioHead/RHNRFSPIDriver.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHNRFSPIDriver.h create mode 100644 Arduino Code/libraries/RadioHead/RHReliableDatagram.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHReliableDatagram.h create mode 100644 Arduino Code/libraries/RadioHead/RHRouter.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHRouter.h create mode 100644 Arduino Code/libraries/RadioHead/RHSPIDriver.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHSPIDriver.h create mode 100644 Arduino Code/libraries/RadioHead/RHSoftwareSPI.cpp create mode 100644 Arduino Code/libraries/RadioHead/RHSoftwareSPI.h create mode 100644 Arduino Code/libraries/RadioHead/RHTcpProtocol.h create mode 100644 Arduino Code/libraries/RadioHead/RH_ASK.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_ASK.h create mode 100644 Arduino Code/libraries/RadioHead/RH_NRF24.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_NRF24.h create mode 100644 Arduino Code/libraries/RadioHead/RH_NRF905.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_NRF905.h create mode 100644 Arduino Code/libraries/RadioHead/RH_RF22.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_RF22.h create mode 100644 Arduino Code/libraries/RadioHead/RH_RF24.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_RF24.h create mode 100644 Arduino Code/libraries/RadioHead/RH_RF69.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_RF69.h create mode 100644 Arduino Code/libraries/RadioHead/RH_RF95.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_RF95.h create mode 100644 Arduino Code/libraries/RadioHead/RH_Serial.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_Serial.h create mode 100644 Arduino Code/libraries/RadioHead/RH_TCP.cpp create mode 100644 Arduino Code/libraries/RadioHead/RH_TCP.h create mode 100644 Arduino Code/libraries/RadioHead/RHutil/atomic.h create mode 100644 Arduino Code/libraries/RadioHead/RHutil/simulator.h create mode 100644 Arduino Code/libraries/RadioHead/RadioHead.h create mode 100644 Arduino Code/libraries/RadioHead/STM32ArduinoCompat/HardwareSPI.cpp create mode 100644 Arduino Code/libraries/RadioHead/STM32ArduinoCompat/HardwareSPI.h create mode 100644 Arduino Code/libraries/RadioHead/STM32ArduinoCompat/HardwareSerial.cpp create mode 100644 Arduino Code/libraries/RadioHead/STM32ArduinoCompat/HardwareSerial.h create mode 100644 Arduino Code/libraries/RadioHead/STM32ArduinoCompat/README create mode 100644 Arduino Code/libraries/RadioHead/STM32ArduinoCompat/wirish.cpp create mode 100644 Arduino Code/libraries/RadioHead/STM32ArduinoCompat/wirish.h create mode 100644 Arduino Code/libraries/RadioHead/examples/ask/ask_receiver/ask_receiver.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/ask/ask_reliable_datagram_client/ask_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/ask/ask_reliable_datagram_server/ask_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/ask/ask_transmitter/ask_transmitter.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf24/nrf24_client/nrf24_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf24/nrf24_reliable_datagram_client/nrf24_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf24/nrf24_reliable_datagram_server/nrf24_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf24/nrf24_server/nrf24_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf905/nrf905_client/nrf905_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf905/nrf905_reliable_datagram_client/nrf905_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf905/nrf905_reliable_datagram_server/nrf905_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/nrf905/nrf905_server/nrf905_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_client/rf22_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_mesh_client/rf22_mesh_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_mesh_server1/rf22_mesh_server1.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_mesh_server2/rf22_mesh_server2.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_mesh_server3/rf22_mesh_server3.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_reliable_datagram_client/rf22_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_reliable_datagram_server/rf22_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_router_client/rf22_router_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_router_server1/rf22_router_server1.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_router_server2/rf22_router_server2.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_router_server3/rf22_router_server3.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_router_test/rf22_router_test.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf22/rf22_server/rf22_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf24/rf24_client/rf24_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf24/rf24_reliable_datagram_client/rf24_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf24/rf24_reliable_datagram_server/rf24_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf24/rf24_server/rf24_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf69/rf69_client/rf69_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf69/rf69_reliable_datagram_client/rf69_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf69/rf69_reliable_datagram_server/rf69_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf69/rf69_server/rf69_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf95/rf95_client/rf95_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf95/rf95_reliable_datagram_client/rf95_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf95/rf95_reliable_datagram_server/rf95_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/rf95/rf95_server/rf95_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/serial/serial_reliable_datagram_client/serial_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/serial/serial_reliable_datagram_server/serial_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/simulator/simulator_reliable_datagram_client/simulator_reliable_datagram_client.pde create mode 100644 Arduino Code/libraries/RadioHead/examples/simulator/simulator_reliable_datagram_server/simulator_reliable_datagram_server.pde create mode 100644 Arduino Code/libraries/RadioHead/project.cfg create mode 100644 Arduino Code/libraries/RadioHead/radio_config_Si4460.h create mode 100644 Arduino Code/libraries/RadioHead/tools/chain.conf create mode 100644 Arduino Code/libraries/RadioHead/tools/etherSimulator.pl create mode 100644 Arduino Code/libraries/RadioHead/tools/simBuild create mode 100644 Arduino Code/libraries/RadioHead/tools/simMain.cpp create mode 100644 Arduino Code/libraries/RfidDb/LICENSE create mode 100644 Arduino Code/libraries/RfidDb/README.md create mode 100644 Arduino Code/libraries/RfidDb/examples/RfidDbTest/RfidDbTest.ino create mode 100644 Arduino Code/libraries/RfidDb/keywords.txt create mode 100644 Arduino Code/libraries/RfidDb/library.properties create mode 100644 Arduino Code/libraries/RfidDb/src/RfidDb.cpp create mode 100644 Arduino Code/libraries/RfidDb/src/RfidDb.h create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/LICENSE create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/README.md create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/WiFiManager.cpp create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/WiFiManager.h create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnect/AutoConnect.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnectWithFSParameters/AutoConnectWithFSParameters.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnectWithFSParametersAndCustomIP/AutoConnectWithFSParametersAndCustomIP.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnectWithFeedback/AutoConnectWithFeedback.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnectWithFeedbackLED/AutoConnectWithFeedbackLED.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnectWithReset/AutoConnectWithReset.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnectWithStaticIP/AutoConnectWithStaticIP.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/AutoConnectWithTimeout/AutoConnectWithTimeout.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/examples/OnDemandConfigPortal/OnDemandConfigPortal.ino create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/extras/WiFiManager.template.html create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/extras/parse.js create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/extras/template.h create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/keywords.txt create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/library.json create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/library.properties create mode 100644 Arduino Code/libraries/WhareHauoraWiFiManager/travis/common.sh create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/.gitignore create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/.travis.yml create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/RCSwitch.cpp create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/RCSwitch.h create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/README.md create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/ReceiveDemo_Advanced/ReceiveDemo_Advanced.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/ReceiveDemo_Advanced/output.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/ReceiveDemo_Simple/ReceiveDemo_Simple.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/SendDemo/SendDemo.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/TypeA_WithDIPSwitches/TypeA_WithDIPSwitches.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/TypeA_WithDIPSwitches_Lightweight/TypeA_WithDIPSwitches_Lightweight.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/TypeB_WithRotaryOrSlidingSwitches/TypeB_WithRotaryOrSlidingSwitches.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/TypeC_Intertechno/TypeC_Intertechno.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/TypeD_REV/TypeD_REV.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/examples/Webserver/Webserver.ino create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/keywords.txt create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/library.json create mode 100644 Arduino Code/libraries/rc-switch-2.6.2/library.properties create mode 100644 Arduino Code/libraries/readme.txt create mode 100644 Arduino Code/sketch_aug24b/sketch_aug24b.ino create mode 100644 Arduino Code/test_Receiver/test_Receiver.ino diff --git a/Arduino Code/3D_Printer/Smoke_Temp_IR/Smoke_Temp_IR.ino b/Arduino Code/3D_Printer/Smoke_Temp_IR/Smoke_Temp_IR.ino new file mode 100644 index 0000000..a18083b --- /dev/null +++ b/Arduino Code/3D_Printer/Smoke_Temp_IR/Smoke_Temp_IR.ino @@ -0,0 +1,279 @@ +/*************************************************************************** + This is a library for the BME280 humidity, tmperature & pressure sensor + + Designed specifically to work with the Adafruit BME280 Breakout + ----> http://www.adafruit.com/products/2650 + + These sensors use I2C or SPI to communicate, 2 or 4 pins are required + to interface. The device's I2C address is either 0x76 or 0x77. + + Adafruit invests time and resources providing this open source code, + please support Adafruit andopen-source hardware by purchasing products + from Adafruit! + + Written by Limor Fried & Kevin Townsend for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ***************************************************************************/ +#include +#include +#include +#include +#include +#include +#include + +#define BMP_SCK 13 +#define BMP_MISO 12 +#define BMP_MOSI 11 +#define BMP_CS 10 + +#define SEALEVELPRESSURE_HPA (1013.25) + +IRsend irsend(16); //an IR led is connected to digital pin 0 + +Adafruit_BMP280 bme; // I2C +//Adafruit_BME280 bme(BME_CS); // hardware SPI +//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI +const int gasPin = A0; //GAS sensor output pin to Arduino analog A0 pin +const char* ssid = "VOO-375468"; +const char* password = "UYQQMTHF"; + +const char* topic = "3DPrinterSensors"; +const int mqtt_port = 1883; +const char* mqtt_server = "192.168.0.7"; +const char* topicLed = "3DPrinterLed"; +const char* mqtt_client = "ESP8266Client-3DPrinter-Sensors"; + +WiFiClient espClient; +PubSubClient client(espClient); + +int redPin = 14; +int greenPin = 12; +int bluePin = 13; + +unsigned long startMillis; //some global variables available anywhere in the program +unsigned long currentMillis; +const unsigned long period = 30000; //the value is a number of milliseconds => number of ms within every message + +char message_buff[100]; + +void setup() { + irsend.begin(); + Serial.begin(9600); + Serial.println(F("BME280 test")); + + WiFi.softAPdisconnect(true); + WiFi.begin(ssid, password); + + bool status; + + // default settings + // (you can also pass in a Wire library object like &Wire2) + status = bme.begin(); + if (!status) { + Serial.println("Could not find a valid BME280 sensor, check wiring!"); + while (1); + } + + pinMode(redPin, OUTPUT); + pinMode(greenPin, OUTPUT); + pinMode(bluePin, OUTPUT); + + //Serial.println("-- Default Test --"); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + setColor(LOW, HIGH, LOW); // green + + client.setServer(mqtt_server, mqtt_port); + client.setCallback(callback); + + startMillis = millis(); //initial start time + + Serial.println(); +} + + +void loop() { + + if(WiFi.status() != WL_CONNECTED){ + setColor(HIGH, LOW, LOW); // red + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + setColor(LOW, HIGH, LOW); // green + } + + if (!client.connected()) { + setColor(LOW, LOW, HIGH); // not connected to mqtt broker + reconnect(); + } + else + { + + currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started) + if (currentMillis - startMillis >= period) //test whether the period has elapsed + { + + String pubStringPost = String("{\"Temperature\":\""+String((double)bme.readTemperature())+"\",\"Pressure\":\""+String((int)bme.readPressure())+"\",\"Smoke\":\""+String((int)analogRead(gasPin))+"\"}"); + pubStringPost.toCharArray(message_buff, pubStringPost.length()+1); + + client.publish(topic,message_buff); + + printValues(); + + startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state. + } + } + client.loop(); +} + + +void printValues() { + Serial.print("Temperature = "); + Serial.print(bme.readTemperature()); + Serial.println(" *C"); + + Serial.print("Pressure = "); + + Serial.print(bme.readPressure()); + Serial.println(" Pa"); + + Serial.print("Approx. Altitude = "); + Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); + Serial.println(" m"); + + /*Serial.print("Humidity = "); + Serial.print(bme.readHumidity()); + Serial.println(" %");*/ + + Serial.print("MQ-2 = "); + Serial.print(analogRead(gasPin)); + Serial.println(" value"); + + Serial.println(); +} + +void setColor(bool red, bool green, bool blue) +{ + #ifdef COMMON_ANODE + red = 255 - red; + green = 255 - green; + blue = 255 - blue; + #endif + digitalWrite(redPin, red); + digitalWrite(greenPin, green); + digitalWrite(bluePin, blue); +} + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + String payloadString; + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + payloadString += (char)payload[i]; + } + + /*payloadString.toCharArray(message_buff, payloadString.length()+1); + client.publish("TestReceived",message_buff); */ + + if(payloadString.length() == 8) { + if(payloadString.substring(0,4).equals("0xff")) + { + if (payloadString.equals("0xfff807")) { + sendToIr(0xfff807); //close + } else { + sendToIr(0xffb04f); // open + unsigned long steps2move = strtol(payloadString.c_str(),NULL,0); + //Serial.println(0xffb04f); + //Serial.println(steps2move); + sendToIr(steps2move); + } + } + } + + + + /*switch ((char)payload[0]) { + case '0': + sendToIr(0xfff807); //close + break; + case '1': + sendToIr(0xffb04f); // open + sendToIr(0xffa857); // white + break; + case '2': + sendToIr(0xffb04f); // open + sendToIr(0xff9867); // red + break; + case '3': + sendToIr(0xffb04f); // open + sendToIr(0xffd827); // green + break; + case '4': + sendToIr(0xffb04f); // open + sendToIr(0xff8877); // blue + break; + case '5': + sendToIr(0xffb04f); // open + sendToIr(0xff38c7); // yellow + break; + case '6': + sendToIr(0xffb04f); // open + sendToIr(0xffe817); // red 1 + break; + case '7': + sendToIr(0xffb04f); // open + sendToIr(0xff20df); // blue 2 + break; + default: + //setColor(LOW, LOW); //close + Serial.println("NOT assigned"); + break; + }*/ +} + +void sendToIr(unsigned long data) { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(data, 32); + delay(40); + } +} + + + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect(mqtt_client)) { + Serial.println("connected"); + setColor(LOW, HIGH, LOW); // green + client.subscribe(topicLed); + String ipString = "{\"Name\":\"3DPrinterSensor\",\"IpAddress\":\""+ WiFi.localIP().toString()+"\"}"; + ipString.toCharArray(message_buff, ipString.length()+1); + client.publish("IpAddress",message_buff); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} diff --git a/Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station.ino b/Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station.ino new file mode 100644 index 0000000..b64e96f --- /dev/null +++ b/Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station.ino @@ -0,0 +1,235 @@ +/*************************************************************************** + This is a library for the BME280 humidity, tmperature & pressure sensor + + Designed specifically to work with the Adafruit BME280 Breakout + ----> http://www.adafruit.com/products/2650 + + These sensors use I2C or SPI to communicate, 2 or 4 pins are required + to interface. The device's I2C address is either 0x76 or 0x77. + + Adafruit invests time and resources providing this open source code, + please support Adafruit andopen-source hardware by purchasing products + from Adafruit! + + Written by Limor Fried & Kevin Townsend for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#define BME_SCK 13 +#define BME_MISO 12 +#define BME_MOSI 11 +#define BME_CS 10 + +#define SEALEVELPRESSURE_HPA (1013.25) + +Adafruit_BME280 bme; // I2C +//Adafruit_BME280 bme(BME_CS); // hardware SPI +//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI +const int gasPin = A0; //GAS sensor output pin to Arduino analog A0 pin +const char* ssid = "VOO-375468"; +const char* password = "UYQQMTHF"; + +const char* topic = "3DPrinterSensors"; + +const char* mqtt_server = "192.168.0.24"; +const int mqtt_port = 1883; + +WiFiClient espClient; +PubSubClient client(espClient); + +int redPin = 14; +int greenPin = 12; +int bluePin = 13; + +unsigned long startMillis; //some global variables available anywhere in the program +unsigned long currentMillis; +const unsigned long period = 5000; //the value is a number of milliseconds + +char message_buff[100]; + +void setup() { + Serial.begin(9600); + Serial.println(F("BME280 test")); + + WiFi.softAPdisconnect(true); + WiFi.begin(ssid, password); + + bool status; + + // default settings + // (you can also pass in a Wire library object like &Wire2) + status = bme.begin(); + if (!status) { + Serial.println("Could not find a valid BME280 sensor, check wiring!"); + while (1); + } + + pinMode(redPin, OUTPUT); + pinMode(greenPin, OUTPUT); + pinMode(bluePin, OUTPUT); + + Serial.println("-- Default Test --"); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + setColor(LOW, HIGH, LOW); // green + + client.setServer(mqtt_server, mqtt_port); + client.setCallback(callback); + + startMillis = millis(); //initial start time + + Serial.println(); +} + + +void loop() { + + if(WiFi.status() != WL_CONNECTED){ + setColor(HIGH, LOW, LOW); // red + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + setColor(LOW, HIGH, LOW); // green + } + + if (!client.connected()) { + setColor(HIGH, HIGH, LOW); + reconnect(); + } + else + { + + currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started) + if (currentMillis - startMillis >= period) //test whether the period has elapsed + { + + String pubStringPost = String("Temp="+String((double)bme.readTemperature())+",Hum="+String((int)bme.readHumidity())+",Gas="+String((int)analogRead(gasPin))); + pubStringPost.toCharArray(message_buff, pubStringPost.length()+1); + + client.publish(topic,message_buff); + + printValues(); + + startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state. + } + } + client.loop(); +} + + +void printValues() { + Serial.print("Temperature = "); + Serial.print(bme.readTemperature()); + Serial.println(" *C"); + + Serial.print("Pressure = "); + + Serial.print(bme.readPressure() / 100.0F); + Serial.println(" hPa"); + + Serial.print("Approx. Altitude = "); + Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); + Serial.println(" m"); + + Serial.print("Humidity = "); + Serial.print(bme.readHumidity()); + Serial.println(" %"); + + Serial.print("MQ-2 = "); + Serial.print(analogRead(gasPin)); + Serial.println(" value"); + + Serial.println(); +} + +void setColor(bool red, bool green, bool blue) +{ + #ifdef COMMON_ANODE + red = 255 - red; + green = 255 - green; + blue = 255 - blue; + #endif + digitalWrite(redPin, red); + digitalWrite(greenPin, green); + digitalWrite(bluePin, blue); +} + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); + Serial.println("Hello there"); + + switch ((char)payload[0]) { + case '0': + setColor(LOW, LOW, LOW); //close + break; + case '1': + setColor(HIGH, LOW, LOW); //red + break; + case '2': + setColor(LOW, HIGH, LOW); //green + break; + case '3': + setColor(LOW, LOW, HIGH); //blue + break; + case '4': + setColor(HIGH, HIGH, LOW); //yellow + break; + case '5': + setColor(LOW, HIGH, HIGH); // + break; + case '6': + setColor(HIGH, LOW, HIGH); // + break; + case '7': + setColor(HIGH, HIGH, HIGH); //white + break; + default: + setColor(LOW, LOW, LOW); //close + Serial.println("NOT assigned"); + break; + } +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect("ESP8266Client-3DPrinter-Sensors")) { + Serial.println("connected"); + client.subscribe("3DPrinterLed"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} diff --git a/Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station_bmp280.ino/Smoke__temp_station_bmp280.ino.ino b/Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station_bmp280.ino/Smoke__temp_station_bmp280.ino.ino new file mode 100644 index 0000000..2e17d5e --- /dev/null +++ b/Arduino Code/3D_Printer/Smoke__temp_station/Smoke__temp_station_bmp280.ino/Smoke__temp_station_bmp280.ino.ino @@ -0,0 +1,236 @@ +/*************************************************************************** + This is a library for the BME280 humidity, tmperature & pressure sensor + + Designed specifically to work with the Adafruit BME280 Breakout + ----> http://www.adafruit.com/products/2650 + + These sensors use I2C or SPI to communicate, 2 or 4 pins are required + to interface. The device's I2C address is either 0x76 or 0x77. + + Adafruit invests time and resources providing this open source code, + please support Adafruit andopen-source hardware by purchasing products + from Adafruit! + + Written by Limor Fried & Kevin Townsend for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#define BMP_SCK 13 +#define BMP_MISO 12 +#define BMP_MOSI 11 +#define BMP_CS 10 + +#define SEALEVELPRESSURE_HPA (1013.25) + +Adafruit_BMP280 bme; // I2C +//Adafruit_BME280 bme(BME_CS); // hardware SPI +//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI +const int gasPin = A0; //GAS sensor output pin to Arduino analog A0 pin +const char* ssid = "VOO-375468"; +const char* password = "UYQQMTHF"; + +const char* topic = "3DPrinterSensors"; +const int mqtt_port = 1883; +const char* mqtt_server = "192.168.0.24"; +const char* topicLed = "3DPrinterLed"; +const char* mqtt_client = "ESP8266Client-3DPrinter-Sensors"; + +WiFiClient espClient; +PubSubClient client(espClient); + +int redPin = 14; +int greenPin = 12; +int bluePin = 13; + +unsigned long startMillis; //some global variables available anywhere in the program +unsigned long currentMillis; +const unsigned long period = 5000; //the value is a number of milliseconds + +char message_buff[100]; + +void setup() { + Serial.begin(9600); + Serial.println(F("BME280 test")); + + WiFi.softAPdisconnect(true); + WiFi.begin(ssid, password); + + bool status; + + // default settings + // (you can also pass in a Wire library object like &Wire2) + status = bme.begin(); + if (!status) { + Serial.println("Could not find a valid BME280 sensor, check wiring!"); + while (1); + } + + pinMode(redPin, OUTPUT); + pinMode(greenPin, OUTPUT); + pinMode(bluePin, OUTPUT); + + Serial.println("-- Default Test --"); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + setColor(LOW, HIGH, LOW); // green + + client.setServer(mqtt_server, mqtt_port); + client.setCallback(callback); + + startMillis = millis(); //initial start time + + Serial.println(); +} + + +void loop() { + + if(WiFi.status() != WL_CONNECTED){ + setColor(HIGH, LOW, LOW); // red + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + setColor(LOW, HIGH, LOW); // green + } + + if (!client.connected()) { + setColor(HIGH, HIGH, LOW); + reconnect(); + } + else + { + + currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started) + if (currentMillis - startMillis >= period) //test whether the period has elapsed + { + + String pubStringPost = String("Temp="+String((double)bme.readTemperature())+",Press="+String((int)bme.readPressure())+",Gas="+String((int)analogRead(gasPin))); + pubStringPost.toCharArray(message_buff, pubStringPost.length()+1); + + client.publish(topic,message_buff); + + printValues(); + + startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state. + } + } + client.loop(); +} + + +void printValues() { + Serial.print("Temperature = "); + Serial.print(bme.readTemperature()); + Serial.println(" *C"); + + Serial.print("Pressure = "); + + Serial.print(bme.readPressure()); + Serial.println(" Pa"); + + Serial.print("Approx. Altitude = "); + Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); + Serial.println(" m"); + + /*Serial.print("Humidity = "); + Serial.print(bme.readHumidity()); + Serial.println(" %");*/ + + Serial.print("MQ-2 = "); + Serial.print(analogRead(gasPin)); + Serial.println(" value"); + + Serial.println(); +} + +void setColor(bool red, bool green, bool blue) +{ + #ifdef COMMON_ANODE + red = 255 - red; + green = 255 - green; + blue = 255 - blue; + #endif + digitalWrite(redPin, red); + digitalWrite(greenPin, green); + digitalWrite(bluePin, blue); +} + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); + Serial.println("Hello there"); + + switch ((char)payload[0]) { + case '0': + setColor(LOW, LOW, LOW); //close + break; + case '1': + setColor(HIGH, LOW, LOW); //red + break; + case '2': + setColor(LOW, HIGH, LOW); //green + break; + case '3': + setColor(LOW, LOW, HIGH); //blue + break; + case '4': + setColor(HIGH, HIGH, LOW); //yellow + break; + case '5': + setColor(LOW, HIGH, HIGH); // + break; + case '6': + setColor(HIGH, LOW, HIGH); // + break; + case '7': + setColor(HIGH, HIGH, HIGH); //white + break; + default: + setColor(LOW, LOW, LOW); //close + Serial.println("NOT assigned"); + break; + } +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect(mqtt_client)) { + Serial.println("connected"); + client.subscribe(topicLed); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} diff --git a/Arduino Code/3D_Printer/Wiring plan.png b/Arduino Code/3D_Printer/Wiring plan.png new file mode 100644 index 0000000000000000000000000000000000000000..405e39ccf16d6cfb6f29889cbf36f6156c9e4026 GIT binary patch literal 11799 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 literal 0 HcmV?d00001 diff --git a/Arduino Code/AutomatedLight-Memoire/AutomatedLight-Memoire.ino b/Arduino Code/AutomatedLight-Memoire/AutomatedLight-Memoire.ino new file mode 100644 index 0000000..8b94252 --- /dev/null +++ b/Arduino Code/AutomatedLight-Memoire/AutomatedLight-Memoire.ino @@ -0,0 +1,63 @@ + +int motion = 2; +int motionLed = 4; +const int relayPin = D1; +int LightSensor = A0; +int sensorValue = 0; +long TimeRequestMillis; +long waitTime = 20000; +bool activate = false; + +void setup() { + Serial.begin(115200); + + pinMode(motion, INPUT); + pinMode(motionLed, OUTPUT); + pinMode(relayPin, OUTPUT); + TimeRequestMillis = millis(); + + delay(2000); + +} + +void loop() +{ + sensorValue = analogRead(A0); // read the value from the sensor + + unsigned long currentMillis = millis(); + + long sensor = digitalRead(motion); + + Serial.println(currentMillis - TimeRequestMillis); + Serial.println(sensorValue); + + + if(sensor == HIGH && sensorValue<500){ + Serial.println("J'ouvre !"); + digitalWrite (motionLed, HIGH); + digitalWrite(D1, HIGH); + + TimeRequestMillis = currentMillis; + + activate = true; + + delay(9000); + } + + if(activate && sensor == HIGH) { + TimeRequestMillis = currentMillis; + Serial.println("mouvement, je laisse ouvert"); + delay(2000); + } + + if(activate && (currentMillis - TimeRequestMillis > waitTime)){ + Serial.println("Je ferme"); + digitalWrite (motionLed, LOW); + digitalWrite(D1, LOW); + activate = false; + } + + delay(200); + + +} diff --git a/Arduino Code/Home Automation/Detect_movement_light/Detect_movement_light.ino b/Arduino Code/Home Automation/Detect_movement_light/Detect_movement_light.ino new file mode 100644 index 0000000..01c3c8b --- /dev/null +++ b/Arduino Code/Home Automation/Detect_movement_light/Detect_movement_light.ino @@ -0,0 +1,65 @@ + +int motion = 7; +int motionLed = 3; +int Relay = 9; +int LightSensor = A0; +int sensorValue = 0; +long TimeRequestMillis; +long waitTime = 40000; +bool activate = false; + +void setup() { + Serial.begin(115200); + + pinMode(motion, INPUT); + pinMode(motionLed, OUTPUT); + pinMode(Relay, OUTPUT); + TimeRequestMillis = millis(); + + digitalWrite(Relay, LOW); + + delay(2000); + +} + +void loop() +{ + sensorValue = analogRead(LightSensor); // read the value from the sensor + + unsigned long currentMillis = millis(); + + long sensor = digitalRead(motion); + + Serial.println(currentMillis - TimeRequestMillis); + Serial.println(sensorValue); + + + if(sensor == HIGH && sensorValue<500){ + Serial.println("J'ouvre !"); + digitalWrite (motionLed, HIGH); + digitalWrite(Relay, HIGH); + + TimeRequestMillis = currentMillis; + + activate = true; + + delay(10000); + } + + if(activate && sensor == HIGH) { + TimeRequestMillis = currentMillis; + Serial.println("mouvement, je laisse ouvert"); + delay(10000); + } + + if(activate && (currentMillis - TimeRequestMillis > waitTime)){ + Serial.println("Je ferme"); + digitalWrite (motionLed, LOW); + digitalWrite(Relay, LOW); + activate = false; + } + + delay(800); + + +} diff --git a/Arduino Code/Home Automation/TV_GoogleHome/TV_GoogleHome.ino b/Arduino Code/Home Automation/TV_GoogleHome/TV_GoogleHome.ino new file mode 100644 index 0000000..4a9311e --- /dev/null +++ b/Arduino Code/Home Automation/TV_GoogleHome/TV_GoogleHome.ino @@ -0,0 +1,150 @@ +#include +#include +#include + +IRsend irsend(4); //an IR led is connected to GPIO pin 0 + +/*const char* ssid = "bigChief2"; +const char* password = "987654321";*/ +const char* ssid = "VOO-375468"; +const char* password = "UYQQMTHF"; + +const char* mqtt_server = "192.168.0.15"; + +const int led = 5; + +WiFiClient espClient; +PubSubClient client(espClient); + +void setup() +{ + irsend.begin(); + pinMode(led, OUTPUT); + + Serial.begin(115200); + WiFi.softAPdisconnect(true); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + digitalWrite(led, HIGH); + + client.setServer(mqtt_server, 1883); + client.setCallback(callback); +} + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + String temp = ""; + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + temp = temp + (char)payload[i]; + } + Serial.println(); + + //char temp = (char)payload[0]; + + //String temp = String((char*)payload); + + Serial.println(temp); + + if (temp.equals("ON")) { + Serial.println("Envoie code IR vers TV Sony"); + for (int i = 0; i < 3; i++) { + irsend.sendSony(0xa90, 12); + delay(40); + } + Serial.println("POWER"); + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0x80BF3BC4, 32); + delay(40); + } + Serial.println("TV"); + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0x80BF5BA4, 32); + delay(40); + } + Serial.println("EXIT"); + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0x80BF41BE, 32); + delay(40); + } + Serial.println("OK"); + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0x80BF738C, 32); + delay(40); + } + Serial.println("Guide"); + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0x80BFA35C, 32); + delay(40); + } + Serial.println("RED"); + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0x80BF916E, 32); + delay(40); + } + + } + + /*if (temp.equals("ON")) { + Serial.println("Envoie code IR vers TV Sony"); + for (int i = 0; i < 3; i++) { + irsend.sendSony(0xa90, 12); + delay(40); + } + }*/ + + +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect("ESP8266Client-IR", "oilkfgjy", "lEyZb90q49Rf")) { + Serial.println("connected"); + client.subscribe("TV"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +void loop(void) { + if(WiFi.status() != WL_CONNECTED){ + digitalWrite(led, LOW); + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + digitalWrite(led, HIGH); + } + + if (!client.connected()) { + digitalWrite(led, LOW); + reconnect(); + }else{ + digitalWrite(led, HIGH); + } + client.loop(); +} diff --git a/Arduino Code/LM35/LM35.ino b/Arduino Code/LM35/LM35.ino new file mode 100644 index 0000000..70fe851 --- /dev/null +++ b/Arduino Code/LM35/LM35.ino @@ -0,0 +1,128 @@ +#include +#include +#include +#include + +#define OLED_RESET 4 +Adafruit_SSD1306 display(OLED_RESET); + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 32) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + + +const int Led = 9; + +const int Relay = 4; + +const int diffDegree = 3; + +long waitTime = 60000; +long TimeRequestMillis; + +char* relaystate = "Close"; + +bool lock = false; + +void setup() { + Serial.begin(115200); + + display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + pinMode(Relay, OUTPUT); + digitalWrite(Relay, LOW); + + TimeRequestMillis = millis(); + } + + +void loop() { + + unsigned long currentMillis = millis(); + + int valeur_brute = analogRead(A0); + + float temperature_Panneaux = valeur_brute * (5.0 / 1023.0 * 100.0); + + //Serial.println("LM35 : "+temperature_celcius); *0.63652437 + + //Serial.print("Temperature LM35: "); + //Serial.println(temperature_Panneaux); + + int valeur_brute2 = analogRead(A1); + + float temperature_Boiler = valeur_brute2 * (5.0 / 1023.0 * 100.0); + + //Serial.print("Temperature2 LM35: "); + //Serial.println(temperature_Boiler); + + if(lock == false){ + + if((temperature_Panneaux > temperature_Boiler + diffDegree) && (lock == false)){ //mettre plus diff de degré + digitalWrite(Relay, HIGH); + relaystate = "Open"; + } + else{ + digitalWrite(Relay, LOW); + relaystate = "Close"; + } + Serial.println("Lock"); + lock = true; + } + + if(currentMillis - TimeRequestMillis > waitTime){ + TimeRequestMillis = currentMillis; + Serial.println("Unlocked !"); + lock = false; + } + + + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.print("Panneaux: "); + display.print(temperature_Panneaux); + display.println("C"); + display.print("Boiler: "); + display.print(temperature_Boiler); + display.println("C"); + display.print("Statut relay : "); + display.println(relaystate); + display.display(); + delay(2000); //mettre plus ! ;) + display.clearDisplay(); + +} diff --git a/Arduino Code/MyMirror/LedWeather/LedWeather.ino b/Arduino Code/MyMirror/LedWeather/LedWeather.ino new file mode 100644 index 0000000..a47ac77 --- /dev/null +++ b/Arduino Code/MyMirror/LedWeather/LedWeather.ino @@ -0,0 +1,152 @@ +#include +#include +#include +#include + +IRsend irsend(4); //an IR led is connected to GPIO pin 0 + +const char* ssid = "bigChief2"; +const char* password = "987654321"; + +ESP8266WebServer server(80); + + +const int led = 5; + +void handleRoot() { + server.send(200, "text/plain", "Wemos IR Remote"); +} + +void handleNotFound(){ + digitalWrite(led, 1); + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET)?"GET":"POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i=0; i +#include +#include + +IRsend irsend(4); //an IR led is connected to GPIO pin 0 + +/*const char* ssid = "bigChief2"; +const char* password = "987654321";*/ +const char* ssid = "ESP8266 - TEST"; +const char* password = "Coconuts09"; + +const char* mqtt_server = "m21.cloudmqtt.com"; + +const int led = 5; + +WiFiClient espClient; +PubSubClient client(espClient); + +void setup() +{ + irsend.begin(); + pinMode(led, OUTPUT); + + Serial.begin(115200); + WiFi.softAPdisconnect(true); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + digitalWrite(led, HIGH); + + client.setServer(mqtt_server, 18932); + client.setCallback(callback); +} + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); + + if ((char)payload[0] == '0') { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xfff807, 32); + delay(40); + } + } + + if ((char)payload[0] == '1') { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffb04f, 32); + delay(40); + } + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xff8877, 32); + delay(40); + } + } + + if ((char)payload[0] == '2') { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffb04f, 32); + delay(40); + } + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xff38c7, 32); + delay(40); + } + } + + if ((char)payload[0] == '3') { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffb04f, 32); + delay(40); + } + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffa857, 32); + delay(40); + } + } + + if ((char)payload[0] == '4') { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffb04f, 32); + delay(40); + } + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffe817, 32); + delay(40); + } + } + + if ((char)payload[0] == '5') { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffb04f, 32); + delay(40); + } + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xff20df, 32); + delay(40); + } + } + + if ((char)payload[0] == '6') { + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xffb04f, 32); + delay(40); + } + for (int i = 0; i < 3; i++) { + irsend.sendNEC(0xff8877, 32); + delay(40); + } + } +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect("ESP8266Client-LedWeatherSensor", "oilkfgjy", "lEyZb90q49Rf")) { + Serial.println("connected"); + client.subscribe("temp"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +void loop(void) { + if(WiFi.status() != WL_CONNECTED){ + digitalWrite(led, LOW); + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + digitalWrite(led, HIGH); + } + + if (!client.connected()) { + digitalWrite(led, LOW); + reconnect(); + }else{ + digitalWrite(led, HIGH); + } + client.loop(); +} diff --git a/Arduino Code/MyMirror/MoveSensor/MoveSensor.ino b/Arduino Code/MyMirror/MoveSensor/MoveSensor.ino new file mode 100644 index 0000000..feecd47 --- /dev/null +++ b/Arduino Code/MyMirror/MoveSensor/MoveSensor.ino @@ -0,0 +1,105 @@ +#include +#include + +const int movePin = 4; // the number of the pushbutton pin +const int Led = 14; + +long TimeRequestMillis; +long waitTime = 30000; +bool activate = false; + +/*const char* ssid = "bigChief2"; +const char* password = "987654321";*/ +const char* ssid = "ESP8266 - TEST"; +const char* password = "Coconuts09"; +const char* mqtt_server = "m21.cloudmqtt.com"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[50]; +int value = 0; + +void setup() { + Serial.begin(115200); + Serial.println("MoveSensor MyMirror test!"); + WiFi.softAPdisconnect(true); + pinMode(Led, OUTPUT); + pinMode(movePin, INPUT); + + setup_wifi(); + client.setServer(mqtt_server, 18932); + +} + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect("ESP8266Client-MoveSensor", "oilkfgjy", "lEyZb90q49Rf")) { + Serial.println("connected"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + delay(5000); + } + } +} + +void loop() { + +if (!client.connected()) { + digitalWrite(Led, LOW); + reconnect(); + }else{ + digitalWrite(Led, HIGH); + } + client.loop(); + + unsigned long currentMillis = millis(); + + long sensor = digitalRead(movePin); + + Serial.println(currentMillis - TimeRequestMillis); + + if(sensor == HIGH){ + Serial.println("J'ouvre !"); + TimeRequestMillis = currentMillis; + activate = true; + client.publish("Close", "No"); + delay(5000); + } + + if(activate && (currentMillis - TimeRequestMillis > waitTime)){ + Serial.println("Je ferme"); + client.publish("Close", "Yes"); + activate = false; + + } + + delay(1000); + +} diff --git a/Arduino Code/MyMirror/Scale/Scale.ino b/Arduino Code/MyMirror/Scale/Scale.ino new file mode 100644 index 0000000..dd379f3 --- /dev/null +++ b/Arduino Code/MyMirror/Scale/Scale.ino @@ -0,0 +1,19 @@ +#include + +// Scale Settings +const int SCALE_DOUT_PIN = D2; +const int SCALE_SCK_PIN = D3; + +HX711 scale(SCALE_DOUT_PIN, SCALE_SCK_PIN); + +void setup() { + Serial.begin(115200); + scale.set_scale();// <- set here calibration factor!!! + scale.tare(); +} + +void loop() { + float weight = scale.get_units(1); + Serial.println(String(weight, 2)); + delay(1000); +} diff --git a/Arduino Code/MyMirror/TempCloudMQTT/TempCloudMQTT.ino b/Arduino Code/MyMirror/TempCloudMQTT/TempCloudMQTT.ino new file mode 100644 index 0000000..942bfe5 --- /dev/null +++ b/Arduino Code/MyMirror/TempCloudMQTT/TempCloudMQTT.ino @@ -0,0 +1,119 @@ +#include +#include + +#include "DHT.h" + +#define DHTPIN 2 // what digital pin we're connected to + +#define DHTTYPE DHT11 // DHT 22 (AM2302), AM2321 + +/*const char* ssid = "ESP8266"; +const char* password = "password";*/ +/*const char* ssid = "bigChief2"; +const char* password = "987654321";*/ +const char* ssid = "VOO-375468"; +const char* password = "UYQQMTHF"; +const char* mqtt_server = "m21.cloudmqtt.com"; + +char message_buff[100]; + +WiFiClient espClient; +PubSubClient client(espClient); + +const int Led = 14; + +// Connect pin 1 (on the left) of the sensor to +5V +// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 +// to 3.3V instead of 5V! +// Connect pin 2 of the sensor to whatever your DHTPIN is +// Connect pin 4 (on the right) of the sensor to GROUND +// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor + +// Initialize DHT sensor. +// Note that older versions of this library took an optional third parameter to +// tweak the timings for faster processors. This parameter is no longer needed +// as the current DHT reading algorithm adjusts itself to work on faster procs. +DHT dht(DHTPIN, DHTTYPE); + +void setup() { + Serial.begin(115200); + Serial.println("DHT22 test!"); + WiFi.softAPdisconnect(true); + dht.begin(); + + pinMode(Led, OUTPUT); + + WiFi.begin(ssid, password); + Serial.println(""); + digitalWrite(Led, LOW); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + digitalWrite(Led, HIGH); + client.setServer(mqtt_server, 18932); + + /*server.on("/temp", []() { + String page = "{ \"temperature\":" + String((int)dht.readTemperature()) + ", \"humidity\":" + String((int)dht.readHumidity())+"}"; + server.send(200, "text/plain", page); + });*/ + + //client = PubSubClient(mqtt_server, 18932, callback); + +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect("ESP8266Client-TempSensor", "oilkfgjy", "lEyZb90q49Rf")) { + Serial.println("connected"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + delay(5000); + } + } +} + +void loop() { + if(WiFi.status() != WL_CONNECTED){ + digitalWrite(Led, LOW); + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); +}else{ + if(digitalRead(Led)==LOW){ + digitalWrite(Led, HIGH); + } +} + +if (!client.connected()) { + digitalWrite(Led, LOW); + reconnect(); + }else{ + digitalWrite(Led, HIGH); + } + client.loop(); + + String pubString = String((int)dht.readTemperature()); + String pubStringPost = String("Degree="+pubString); + pubStringPost.toCharArray(message_buff, pubStringPost.length()+1); + + client.publish("DegreeHome",message_buff); + + delay(5000); +} diff --git a/Arduino Code/MyMirror/TestSharp/TestSharp.ino b/Arduino Code/MyMirror/TestSharp/TestSharp.ino new file mode 100644 index 0000000..e9d65e2 --- /dev/null +++ b/Arduino Code/MyMirror/TestSharp/TestSharp.ino @@ -0,0 +1,81 @@ +#include +#include + +const char* ssid = "VOO-375468"; +const char* password = "UYQQMTHF"; +const char* mqtt_server = "192.168.0.13"; +String pubString ; + +char message_buff[100]; + +WiFiClient espClient; +PubSubClient client(espClient); + +const int Led = 14; + +int i; +int val; +int redpin=0; +void setup() { + pinMode(Led, OUTPUT); + pinMode(redpin,OUTPUT); + digitalWrite(Led, LOW); + Serial.begin(9600); + WiFi.softAPdisconnect(true); + WiFi.begin(ssid, password); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + client.setServer(mqtt_server, 1883); + +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect("ESP8266Client-TempSensor")) { + Serial.println("connected"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + delay(5000); + } + } +} + + +void loop() { + + if (!client.connected()) { + reconnect(); + }else{ + digitalWrite(Led, HIGH); + + i=analogRead(redpin); + val=(6762/(i-9))-4; + if(5 +#include // Not actualy used but needed to compile +//Avant dernier, près du gnd -> pin 11 + +RH_ASK driver; + +void setup() +{ + Serial.begin(9600); // Debugging only + if (!driver.init()) + Serial.println("init failed"); +} + +void loop() +{ + uint8_t buf[12]; + uint8_t buflen = sizeof(buf); + if (driver.recv(buf, &buflen)) // Non-blocking + { + int i; + // Message with a good checksum received, dump it. + Serial.print("Message: "); + Serial.println((char*)buf); + } +} diff --git a/Arduino Code/RF/Transmitter/Transmitter.ino b/Arduino Code/RF/Transmitter/Transmitter.ino new file mode 100644 index 0000000..7f7fffa --- /dev/null +++ b/Arduino Code/RF/Transmitter/Transmitter.ino @@ -0,0 +1,28 @@ +#include +#include // Not actually used but needed to compile +//ATAD pin -> 12 + +RH_ASK driver; +int i = 0; + +void setup() +{ + Serial.begin(9600); // Debugging only + int i = 0; + if (!driver.init()) + Serial.println("init failed"); +} + +void loop() +{ + + char chaine_nombre[5]; + + itoa(i, chaine_nombre, 10); + + //const char *msg = "Coucou Thomas !"; + driver.send((uint8_t *)chaine_nombre, strlen(chaine_nombre)); + driver.waitPacketSent(); + delay(1000); + i = i+1; +} diff --git a/Arduino Code/RGB_HotSpot.c b/Arduino Code/RGB_HotSpot.c new file mode 100644 index 0000000..a08481b --- /dev/null +++ b/Arduino Code/RGB_HotSpot.c @@ -0,0 +1,93 @@ +#include + +#include + +#include + +const char *ssid = "ESP8266"; + +const char *password = "password"; + +const int Red = 14; +const int Green = 12; +const int Blue = 13; + +ESP8266WebServer server(80); + +void handleRoot() { + +server.send(200, "text/html", "

You are connected

"); + +} + +void setup() { + +pinMode(Red, OUTPUT); +pinMode(Green, OUTPUT); +pinMode(Blue, OUTPUT); + +delay(1000); + + +Serial.begin(115200); + +Serial.println(); + +Serial.print("Configuring access point..."); + +WiFi.softAP(ssid, password); + +IPAddress myIP = WiFi.softAPIP(); + +Serial.print("AP IP address: "); + +Serial.println(myIP); + +server.on("/", handleRoot); + +server.on("/inline", [](){ + server.send(200, "text/plain", "this works as well"); + }); + + server.on("/openRed", [](){ + server.send(200, "text/plain", "open red led"); + digitalWrite(Red, HIGH); + }); + + server.on("/closeRed", [](){ + server.send(200, "text/plain", "close red led"); + digitalWrite(Red, LOW); + }); + + server.on("/openGreen", [](){ + server.send(200, "text/plain", "open green led"); + digitalWrite(Green, HIGH); + }); + + server.on("/closeGreen", [](){ + server.send(200, "text/plain", "close green led"); + digitalWrite(Green, LOW); + }); + + server.on("/openBlue", [](){ + server.send(200, "text/plain", "open blue led"); + digitalWrite(Blue, HIGH); + }); + + server.on("/closeBlue", [](){ + server.send(200, "text/plain", "close blue led"); + digitalWrite(Blue, LOW); + }); + +server.begin(); + +Serial.println("HTTP server started"); + + +} + +void loop() { + +server.handleClient(); + +} \ No newline at end of file diff --git a/Arduino Code/RepeteurWifi/RepeteurWifi.ino b/Arduino Code/RepeteurWifi/RepeteurWifi.ino new file mode 100644 index 0000000..00d84f4 --- /dev/null +++ b/Arduino Code/RepeteurWifi/RepeteurWifi.ino @@ -0,0 +1,138 @@ +#define IP_FORWARD 1 + +#include +#include + +/* Set these to your desired credentials for ESP8266 AP. */ +const char *ssid = "ESP8266 - RepeteurWifi"; +const char *password = "azerty123"; +IPAddress apIP(192, 168, 4, 1); + +const int led = 5; + +//const char* ssidExt = "dlink"; +//const char* passwordExt = ""; + +// Setup credentials for original WiFi, that we plan to repeat +const char* ssidExt = "WiFi-2.4-C913"; +const char* passwordExt = "BC94570E97"; + +const byte DNS_PORT = 53; + +// A UDP instance to let us send and receive packets over UDP +WiFiUDP Udp; +byte packetBuffer[512]; //buffer to hold incoming and outgoing packets + +WiFiUDP Udp8; + +// Update these with values suitable for your network. +IPAddress ip(192, 168, 0, 13); //Node static IP +IPAddress gateway(192, 168, 0, 1); +IPAddress subnet(255, 255, 255, 0); + +void setup() +{ + Serial.begin(115200); + Serial.println(); + + WiFi.mode(WIFI_AP_STA); + //WiFi.mode(WIFI_AP); + + Serial.println("!!!!!!!!!!!!!!!!!!!++"); + WiFi.begin(ssidExt, passwordExt); + WiFi.config(ip, gateway, subnet); + + //Wifi connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.print("Connected to "); + digitalWrite(led, HIGH); + Serial.println(ssidExt); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + Serial.print("dnsIP address: "); + Serial.println(WiFi.dnsIP()); + Serial.print("gatewayIP address: "); + Serial.println(WiFi.gatewayIP()); + Serial.print("subnetMask address: "); + Serial.println(WiFi.subnetMask()); + + + Serial.println(""); + Serial.println("Configuring access point..."); + /* You can remove the password parameter if you want the AP to be open. */ + //WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + WiFi.softAP(ssid, password); + + IPAddress myIP = WiFi.softAPIP(); + Serial.print("AP IP address: "); + Serial.println(myIP); + + Udp.begin(DNS_PORT); + Udp8.begin(DNS_PORT); +} + +void loop() +{ + + if(WiFi.status() != WL_CONNECTED){ + digitalWrite(led, LOW); + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + digitalWrite(led, HIGH); + } + + int noBytes = Udp.parsePacket(); + if ( noBytes ) { + // Serial.print(millis() / 1000); + // Serial.print(":Packet of "); + // Serial.print(noBytes); + // Serial.print(" received from "); + // Serial.print(Udp.remoteIP()); + // Serial.print(":"); + // Serial.println(Udp.remotePort()); + // We've received a packet, read the data from it + Udp.read(packetBuffer, noBytes); // read the packet into the buffer + + // display the packet contents in HEX + // for (int i = 1; i <= noBytes; i++) { + // Serial.print(packetBuffer[i - 1], HEX); + // if (i % 32 == 0) { + // Serial.println(); + // } + // else Serial.print(' '); + // } // end for + // Serial.println(); + + IPAddress ip8(8, 8, 8, 8); + Udp8.beginPacket(ip8, DNS_PORT); //NTP requests are to port 123 + Udp8.write(packetBuffer, noBytes); + Udp8.endPacket(); + delay(100); + + int cb = Udp8.parsePacket(); + if (!cb) { + // Serial.println("no packet yet"); + } + else { + // Serial.print("packet received, length="); + // Serial.println(cb); + byte packetBuffer8[cb]; + Udp8.read(packetBuffer8, cb); + Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); + Udp.write(packetBuffer8, cb); + Udp.endPacket(); + } + + } // end if +} + diff --git a/Arduino Code/Test/Blink-ESP8266/Blink-ESP8266.ino b/Arduino Code/Test/Blink-ESP8266/Blink-ESP8266.ino new file mode 100644 index 0000000..c67641a --- /dev/null +++ b/Arduino Code/Test/Blink-ESP8266/Blink-ESP8266.ino @@ -0,0 +1,10 @@ +void setup() { + pinMode(13, OUTPUT); +} + +void loop() { + digitalWrite(13, HIGH); + delay(500); + digitalWrite(13, LOW); + delay(500); +} diff --git a/Arduino Code/Test/Blink-Wemos/Blink-Wemos.ino b/Arduino Code/Test/Blink-Wemos/Blink-Wemos.ino new file mode 100644 index 0000000..92788c2 --- /dev/null +++ b/Arduino Code/Test/Blink-Wemos/Blink-Wemos.ino @@ -0,0 +1,29 @@ +/* + Blink + Turns on an LED on for one second, then off for one second, repeatedly. + + Most Arduinos have an on-board LED you can control. On the Uno and + Leonardo, it is attached to digital pin 13. If you're unsure what + pin the on-board LED is connected to on your Arduino model, check + the documentation at http://www.arduino.cc + + This example code is in the public domain. + + modified 8 May 2014 + by Scott Fitzgerald + */ + + +// the setup function runs once when you press reset or power the board +void setup() { + // initialize digital pin 13 as an output. + pinMode(1, OUTPUT); +} + +// the loop function runs over and over again forever +void loop() { + digitalWrite(1, HIGH); // turn the LED on (HIGH is the voltage level) + delay(1000); // wait for a second + digitalWrite(1, LOW); // turn the LED off by making the voltage LOW + delay(1000); // wait for a second +} diff --git a/Arduino Code/Test/Blink/Blink.ino b/Arduino Code/Test/Blink/Blink.ino new file mode 100644 index 0000000..27c5e8c --- /dev/null +++ b/Arduino Code/Test/Blink/Blink.ino @@ -0,0 +1,28 @@ + +int motion = 9; +int motionLed = 4; +int Relay = 7; + +void setup() { + + pinMode(motion, INPUT); + pinMode(motionLed, OUTPUT); + pinMode(Relay, OUTPUT); +} + +void loop() +{ + + long sensor = digitalRead(motion); + + if(sensor == HIGH){ + digitalWrite (motionLed, HIGH); + digitalWrite(Relay, HIGH); + } + else + { + digitalWrite (motionLed, LOW); + digitalWrite(Relay, LOW); + } + +} diff --git a/Arduino Code/Test/Button-RingSimulator/Button-RingSimulator.ino b/Arduino Code/Test/Button-RingSimulator/Button-RingSimulator.ino new file mode 100644 index 0000000..48ac606 --- /dev/null +++ b/Arduino Code/Test/Button-RingSimulator/Button-RingSimulator.ino @@ -0,0 +1,135 @@ +#include +#include +#include +#include +#include +#include +#include ; + +// constants won't change. They're used here to +// set pin numbers: +const int buttonPin = 16; // the number of the pushbutton pin +const int ledPin = 13; // the number of the LED pin +const int Led = 14; + +int buttonState; // variable for reading the pushbutton status +int lastState; +int ledState; + +const char* ssid = "ESP8266 - TEST"; +const char* password = "Coconuts08"; + +const char* host = "192.168.101.22"; + +void setup() { + Serial.begin(115200); + Serial.println("Button test!"); + + pinMode(Led, OUTPUT); + pinMode(ledPin, OUTPUT); + pinMode(buttonPin, INPUT); + + WiFi.begin(ssid, password); + Serial.println(""); + digitalWrite(Led, LOW); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + String IP = WiFi.localIP()+""; + digitalWrite(Led, HIGH); + + if (MDNS.begin("esp8266")) { + Serial.println("MDNS responder started"); + } +} + +void loop() { + + if(WiFi.status() != WL_CONNECTED){ + digitalWrite(Led, LOW); + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + }else{ + if(digitalRead(Led)==LOW) digitalWrite(Led, HIGH); + } + + buttonState = digitalRead(buttonPin); + + if(buttonState != lastState){ + if (buttonState == HIGH) { + if(ledState == LOW) ledState = HIGH; + Serial.println("C'est appuyé"); + + //APPEL /OPEN + WiFiClient client; + const int httpPort = 80; + if (!client.connect(host, httpPort)) { + Serial.println("connection failed"); + digitalWrite(Led, LOW); + return; + } + + HTTPClient http; + http.begin("http://192.168.101.22/open"); + + int httpCode = http.GET(); + if(httpCode == HTTP_CODE_OK){ + Serial.print("HTTP response code "); + Serial.println(httpCode); + } + else + { + Serial.println("Error in HTTP request"); + } + + http.end(); + + + + } else { + ledState = LOW; + Serial.println("C'est relaché"); + + //APPEL /OPEN + WiFiClient client; + const int httpPort = 80; + if (!client.connect(host, httpPort)) { + Serial.println("connection failed"); + digitalWrite(Led, LOW); + return; + } + + HTTPClient http; + http.begin("http://192.168.101.22/close"); + + int httpCode = http.GET(); + if(httpCode == HTTP_CODE_OK){ + Serial.print("HTTP response code "); + Serial.println(httpCode); + } + else + { + Serial.println("Error in HTTP request"); + } + + http.end(); + } + lastState = buttonState; + } + + digitalWrite(ledPin, ledState); + +} diff --git a/Arduino Code/Test/Button-RingSimulator_-_MQTT/Button-RingSimulator_-_MQTT.ino b/Arduino Code/Test/Button-RingSimulator_-_MQTT/Button-RingSimulator_-_MQTT.ino new file mode 100644 index 0000000..c825d54 --- /dev/null +++ b/Arduino Code/Test/Button-RingSimulator_-_MQTT/Button-RingSimulator_-_MQTT.ino @@ -0,0 +1,122 @@ +#include +#include + +const int buttonPin = 16; // the number of the pushbutton pin +const int ledPin = 13; // the number of the LED pin +const int Led = 14; + +int buttonState; // variable for reading the pushbutton status +int lastState; +int ledState; + +const char* ssid = "ESP8266 - TEST"; +const char* password = "Coconuts08"; +const char* mqtt_server = "138.48.32.159"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[50]; +int value = 0; + +long waitTime = 12000; +long TimeRequestMillis; +bool AlreadyNotified = false; + +void setup() { + Serial.begin(115200); + Serial.println("Button test!"); + + pinMode(Led, OUTPUT); + pinMode(ledPin, OUTPUT); + pinMode(buttonPin, INPUT); + + setup_wifi(); + client.setServer(mqtt_server, 1883); + + TimeRequestMillis = millis(); +} + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + if (client.connect("ESP8266Client-RINGBUTTON")) { + Serial.println("connected"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + delay(5000); + } + } +} + +void loop() { + +if (!client.connected()) { + digitalWrite(Led, LOW); + reconnect(); + }else{ + digitalWrite(Led, HIGH); + } + client.loop(); + + buttonState = digitalRead(buttonPin); + + unsigned long currentMillis = millis(); + + if(buttonState != lastState){ + + TimeRequestMillis = currentMillis; + lastState = buttonState; + AlreadyNotified = false; + + if (buttonState == HIGH) { + if(ledState == LOW) ledState = HIGH; + } else { + ledState = LOW; + } + + } + + if((currentMillis - TimeRequestMillis > waitTime) && (buttonState == lastState) && (AlreadyNotified == false)) { + + if (buttonState == HIGH) { + Serial.println("C'est appuyé"); + client.publish("inTopic", "1"); + } + AlreadyNotified = true; + } + + if((buttonState == LOW) && (AlreadyNotified == false)){ + Serial.println("C'est relaché"); + client.publish("inTopic", "0"); + AlreadyNotified = true; + } + + digitalWrite(ledPin, ledState); + +} diff --git a/Arduino Code/Test/HotSpot/HotSpot.ino b/Arduino Code/Test/HotSpot/HotSpot.ino new file mode 100644 index 0000000..70a9527 --- /dev/null +++ b/Arduino Code/Test/HotSpot/HotSpot.ino @@ -0,0 +1,93 @@ +#include + +#include + +#include + +const char *ssid = "ESP8266"; + +const char *password = "password"; + +const int Red = 14; +const int Green = 12; +const int Blue = 13; + +ESP8266WebServer server(80); + +void handleRoot() { + +server.send(200, "text/html", "

You are connected

"); + +} + +void setup() { + +pinMode(Red, OUTPUT); +pinMode(Green, OUTPUT); +pinMode(Blue, OUTPUT); + +delay(1000); + + +Serial.begin(115200); + +Serial.println(); + +Serial.print("Configuring access point..."); + +WiFi.softAP(ssid, password); + +IPAddress myIP = WiFi.softAPIP(); + +Serial.print("AP IP address: "); + +Serial.println(myIP); + +server.on("/", handleRoot); + +server.on("/inline", [](){ + server.send(200, "text/plain", "this works as well"); + }); + + server.on("/openRed", [](){ + server.send(200, "text/plain", "open red led"); + digitalWrite(Red, HIGH); + }); + + server.on("/closeRed", [](){ + server.send(200, "text/plain", "close red led"); + digitalWrite(Red, LOW); + }); + + server.on("/openGreen", [](){ + server.send(200, "text/plain", "open green led"); + digitalWrite(Green, HIGH); + }); + + server.on("/closeGreen", [](){ + server.send(200, "text/plain", "close green led"); + digitalWrite(Green, LOW); + }); + + server.on("/openBlue", [](){ + server.send(200, "text/plain", "open blue led"); + digitalWrite(Blue, HIGH); + }); + + server.on("/closeBlue", [](){ + server.send(200, "text/plain", "close blue led"); + digitalWrite(Blue, LOW); + }); + +server.begin(); + +Serial.println("HTTP server started"); + + +} + +void loop() { + +server.handleClient(); + +} diff --git a/Arduino Code/Test/HotSpot_and_connection/HotSpot_and_connection.ino b/Arduino Code/Test/HotSpot_and_connection/HotSpot_and_connection.ino new file mode 100644 index 0000000..e79a9de --- /dev/null +++ b/Arduino Code/Test/HotSpot_and_connection/HotSpot_and_connection.ino @@ -0,0 +1,119 @@ +#include + +#include + +#include + +const char *ssid = "TestHotSpot"; + +const char *password = "password2"; + +ESP8266WebServer server(80); + + +const char* ssidC = "WiFi-2.4-C913"; +const char* passwordC = "BC94570E97"; + +//const char* host = "wifitest.adafruit.com"; + +const int led = 5; + + +void handleRoot() { + +server.send(200, "text/html", "

You are connected to RepeteurWifi

"); + +} + +void setup() { + +delay(1000); + +pinMode(led, OUTPUT); + +Serial.begin(115200); + +Serial.println(); + +Serial.print("Configuring access point..."); + +WiFi.softAP(ssid, password); + +IPAddress myIP = WiFi.softAPIP(); + +Serial.print("AP IP address: "); + +Serial.println(myIP); + +server.on("/", handleRoot); + +server.begin(); + +Serial.println("HTTP server started"); + + +WiFi.begin(ssidC, passwordC); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + digitalWrite(led, HIGH); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + +} + +int value = 0; + +void loop() { + +server.handleClient(); + +if(WiFi.status() != WL_CONNECTED){ + digitalWrite(led, LOW); + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); + digitalWrite(led, HIGH); +} + /* + Serial.print("connecting to "); + Serial.println(host); + + // Use WiFiClient class to create TCP connections + WiFiClient client; + const int httpPort = 80; + if (!client.connect(host, httpPort)) { + Serial.println("connection failed"); + return; + } + + // We now create a URI for the request + String url = "/testwifi/index.html"; + Serial.print("Requesting URL: "); + Serial.println(url); + + // This will send the request to the server + client.print(String("GET ") + url + " HTTP/1.1\r\n" + + "Host: " + host + "\r\n" + + "Connection: close\r\n\r\n"); + delay(500); + + // Read all the lines of the reply from server and print them to Serial + while(client.available()){ + String line = client.readStringUntil('\r'); + Serial.print(line); + } + + Serial.println(); + Serial.println("closing connection"); +*/ +} diff --git a/Arduino Code/Test/Humidity-Temp-Sensor-WebServer/Humidity-Temp-Sensor-WebServer.ino b/Arduino Code/Test/Humidity-Temp-Sensor-WebServer/Humidity-Temp-Sensor-WebServer.ino new file mode 100644 index 0000000..5d0d826 --- /dev/null +++ b/Arduino Code/Test/Humidity-Temp-Sensor-WebServer/Humidity-Temp-Sensor-WebServer.ino @@ -0,0 +1,143 @@ +#include +#include +#include +#include +#include "DHT.h" + +#define DHTPIN 2 // what digital pin we're connected to + +#define DHTTYPE DHT11 // DHT 22 (AM2302), AM2321 + +/*const char* ssid = "ESP8266"; +const char* password = "password";*/ + +const char* ssid = "bigChief2"; +const char* password = "987654321"; + +ESP8266WebServer server(80); + +const int Led = 14; + +// Connect pin 1 (on the left) of the sensor to +5V +// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 +// to 3.3V instead of 5V! +// Connect pin 2 of the sensor to whatever your DHTPIN is +// Connect pin 4 (on the right) of the sensor to GROUND +// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor + +// Initialize DHT sensor. +// Note that older versions of this library took an optional third parameter to +// tweak the timings for faster processors. This parameter is no longer needed +// as the current DHT reading algorithm adjusts itself to work on faster procs. +DHT dht(DHTPIN, DHTTYPE); + +void handleRoot() { + server.send(200, "text/plain", "hello from esp8266 - TEMP!"); +} + +void handleNotFound() { + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + server.send(404, "text/plain", message); +} + +void setup() { + Serial.begin(115200); + Serial.println("DHT22 test!"); + + dht.begin(); + + pinMode(Led, OUTPUT); + WiFi.begin(ssid, password); + Serial.println(""); + digitalWrite(Led, LOW); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + digitalWrite(Led, HIGH); + + if (MDNS.begin("esp8266")) { + Serial.println("MDNS responder started"); + } +/* + // Reading temperature or humidity takes about 250 milliseconds! + // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) + float h = dht.readHumidity(); + // Read temperature as Celsius (the default) + float t = dht.readTemperature(); + // Read temperature as Fahrenheit (isFahrenheit = true) + float f = dht.readTemperature(true); + + // Check if any reads failed and exit early (to try again). + if (isnan(h) || isnan(t) || isnan(f)) { + Serial.println("Failed to read from DHT sensor!"); + return; + } + + // Compute heat index in Fahrenheit (the default) + float hif = dht.computeHeatIndex(f, h); + // Compute heat index in Celsius (isFahreheit = false) + float hic = dht.computeHeatIndex(t, h, false); + + Serial.print("Humidity: "); + Serial.print(h); + Serial.print(" %\t"); + Serial.print("Temperature: "); + Serial.print(t); + Serial.print(" *C "); + Serial.print(f); + Serial.print(" *F\t"); + Serial.print("Heat index: "); + Serial.print(hic); + Serial.print(" *C "); + Serial.print(hif); + Serial.println(" *F");*/ + + + server.on("/", handleRoot); + + server.on("/temp", []() { + String page = "{ \"temperature\":" + String((int)dht.readTemperature()) + ", \"humidity\":" + String((int)dht.readHumidity())+"}"; + server.send(200, "text/plain", page); + }); + + server.onNotFound(handleNotFound); + + server.begin(); + Serial.println("HTTP server started"); +} + +void loop() { + server.handleClient(); + if(WiFi.status() != WL_CONNECTED){ + digitalWrite(Led, LOW); + Serial.println("Trying to reconnect !"); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("Connected !"); +}else{ + if(digitalRead(Led)==LOW){ + digitalWrite(Led, HIGH); + } +} +} diff --git a/Arduino Code/Test/Humidity-Temp-Sensor-WebServer/Humidity-Temp-Sensor-WebServer.ino.adafruit.bin b/Arduino Code/Test/Humidity-Temp-Sensor-WebServer/Humidity-Temp-Sensor-WebServer.ino.adafruit.bin new file mode 100644 index 0000000000000000000000000000000000000000..be431c7c50f489ea9c5d6d595b64e55b31fa8ced GIT binary patch literal 259856 zcmeEveOy#k{{MX(K<_ZafMfxB?*(B7XM`Cn2bYPN(IHGoK_x6qhFsQmDIeB$tFLXS z4cUg94?VA&Xtmq!x|`a=w%=_xAcu5?qNy!urB!NEOAX0N47k7d=MErN-{1H5*YB_8 z^*VFUJ@-6(&N-j+IiII-sGcuNqN7^a$GnEDe_8EeFP9N{G7Rqw9oQ~nO zK4_b4-C@fyBs10=cOhF(J!0<}?w4w?FpPVtb#iebyK1Db2BV&qgS4Lvr}+)BNSjQR z+a|kn^k`OnW4h$&_&HP1II{z%Xn3Y&n?B6};N?Gj=hhT61bG>_$on^v+5C{nPCEu$wpU(ZzNp6AaILnnZYY^k1NQd@J`Vv0(;*rI4s`+BNh%@NQ5 z>g8suO?7M`eN&s3v7X_~-_tV}ivK`mYSZ`G8T5|!uGG`@dR@a=bE8SyYZSZYoT@d; zj6a=mW^1|AWyD=Ij6u_Y_nrNFX%*!!owK4Xm9Z{Oapf;nIYylaOsuz=8j>-<^ORIg zo@JI2CC;0^O`RvWOrq6Pynnax`vLe-MzF*7muv4%Y_0(6D4zoex@C zWWwRm^>4>ww9ccc!3v4N!aJ%axO1}8-KL|n5}cn8&76+zy7_$0YQp+30XrsV2d0#ySruhZ9EHNJ1NSv{C&D=>q`wK_yhc1RiHv`Zd7kKy~a< zDkdd4zryPhf$bitWu%V3Gt9&!o~f?eFjUCIGSz0po1o9wjIag)^1O5|H+N0e3tZ9P z7=P3GYZAGlOvc%#`F~SC({(g20b)WWAMDk<0W+d=cr@tmiY0vZ{k zfjRlb7~esy{5SR2`j5^g2$u^|-24gxaIxUquSpXKz(qQMf>e|{+gH8JyzW)4d?zDK ztzNug&kJU|A$#MVTQ=;9W#-q)tNyHc=L^k?67Kq4^&)C>@i?{h^G7XQ(JvU+YcD^V z$Qc?LHI}(cH9!<&*1lUk%bc0S8DwVF@3iU~bM{Zy$1tm&)$ZDOw^+Sq+pRHoi;XX> zZXH;;a?O`nY^iv+Ac=c^ns9yccz^4F*SqGW46eM%?0Z~Wxk$d&PwmBy^aGt5=}2u} zJU&$l(yZJo38;KXw$!imoz7p7_-x}LgH=qAE4yEZ;r6Y7;XZAXaM$C~W!3j>yES%` zxI}1tX;;0@><<()G}^4!~&h&;9X<|{KbDGAx;a6Y#tiHI#0*1mAfhV
qe-Ft+I!o3ou6vH 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