/* * Home Dynamic System v2 * Designed by tobychui * * This is the base module for implementing the Home Dynamic v2 Protocol with ArozOS 1.0 * For more examples, see other project folders. * */ #include // Include the Wi-Fi library #include // Include the Wi-Fi-Multi library #include // Include the mDNS library ESP8266WiFiMulti wifiMulti; // Create an instance of the ESP8266WiFiMulti class, called 'wifiMulti' //Change the properties of the IoT device const String DeviceName = "HDSv2-Demo"; //The name of this IoT device //Change the WiFi Settings void WiFiConfig(){ wifiMulti.addAP("Toby Room Automation", "homedynamicsystem"); //Add more WiFi AP here if nessary //wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); //wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); } //Inject zeroconf attr into the MDNS respond (For scanning by ArozOS) void MDNSDynamicServiceTxtCallback(const MDNSResponder::hMDNSService p_hService) { //Define the domain of the HDSv2 devices MDNS.addDynamicServiceTxt(p_hService, "domain","homedynamic.org"); MDNS.addDynamicServiceTxt(p_hService, "protocol","hdsv2"); //Define the OEM written values MDNS.addDynamicServiceTxt(p_hService, "uuid","00000000-0000-0000-0000-000000000000"); MDNS.addDynamicServiceTxt(p_hService, "model","Generic"); MDNS.addDynamicServiceTxt(p_hService, "vendor","HomeDynamic Project"); MDNS.addDynamicServiceTxt(p_hService, "version_minor","0.00"); MDNS.addDynamicServiceTxt(p_hService, "version_build","0"); } void hostProbeResult(String p_pcDomainName, bool p_bProbeResult) { MDNS.setDynamicServiceTxtCallback(MDNSDynamicServiceTxtCallback); } void setup() { //Use 115200 baudrate on serial monitor if you want to see what is happening to the device Serial.begin(115200); delay(10); Serial.println('\n'); WiFiConfig(); Serial.println("Connecting ..."); while (wifiMulti.run() != WL_CONNECTED) { delay(500); Serial.print('.'); } Serial.println('\n'); Serial.print("Connected to "); Serial.println(WiFi.SSID()); Serial.print("IP address:\t"); Serial.println(WiFi.localIP()); MDNS.setHostProbeResultCallback(hostProbeResult); if (!MDNS.begin(DeviceName)) { // Start the mDNS responder for esp8266.local Serial.println("Error setting up MDNS responder!"); } //Advertise the port that you are using MDNS.addService("http", "tcp", 12110); Serial.println("mDNS responder started"); } void loop() { MDNS.update(); }