Ik heb mijzelf in het diepen gegooid na het lezen van: Bitbucket
Ik heb een AJAX alarmsysteem en ben net als vele andere al lange tijd aan het wachten tot er een mooie Homey integratie komt. Helaas is hiervoor nog geen plug and play integratie voor.
Nu kwam ik een manier tegen om Ajax te koppelen aan homey doormiddel van Arduino.
Ik heb een D1 mini en de Ajax remote control met elkaar verbonden.
Arduino is voor mij compleet nieuw. Ik heb met wat Copy Past werk inmiddels het een en ander uitgevogeld. Helaas nog niet werkend. De Wemos D1 is gekoppeld aan het netwerk maar ik krijg het niet voor elkaar om deze nu te koppelen met de Homeyduino app in Homey.
Hopelijk willen jullie met mij meekijken en bijsturen waar nodig.
Onderstaand de code die in de D1 staat
Hiermee krijg ik de melding: Compilation error: redefinition of ‘void setup()’:
Ik vermoed dat de error betekent dat je void setup() meer dan 1x hebt gebruikt:
Misschien werkt dit:
Verplaats de twee laatste entry’s onder de 1e void setup() vermelding:
void setup() {
Serial.begin(115200);
//built in led on because it looks good
pinMode(LED_BUILTIN, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(500);
}
mqtt.setServer(host, 1883);
mqtt.setCallback(callback);
Ethernet.begin(mac);
Homey.begin(name);
}
Maar de wifi entry zou onder void wifi() moeten staan,
zie dit voorbeeld voor een temp.sensor:
/*
* Example project:
* NodeMCU board connected to a DHT11 temperature and humidity sensor
*
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Homey.h>
#include <SimpleDHT.h>
#define PIN_DHT D5
SimpleDHT11 dht11;
unsigned long previousMillis = 0;
const unsigned long interval = 10000; //Interval in milliseconds
void wifi() {
if (WiFi.status() != WL_CONNECTED) {
WiFi.begin("<SSID>", "<PASSWORD>");
uint8_t timeout = 30;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (timeout<1) break;
}
if (WiFi.status() == WL_CONNECTED) {
//Print IP address
Serial.print("Connected to WiFi! (");
Serial.print(WiFi.localIP());
Serial.println(")");
}
}
}
void setup() {
Serial.begin(115200);
Homey.begin("DHT11 sensor");
Homey.setClass("sensor");
Homey.addCapability("measure_humidity");
Homey.addCapability("measure_temperature");
}
void loop() {
wifi();
Homey.loop();
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
updateSensor();
}
}
void updateSensor() {
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(PIN_DHT, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err="); Serial.println(err);
return;
}
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" H");
Homey.setCapabilityValue("measure_temperature", (int) temperature);
Homey.setCapabilityValue("measure_humidity", (int) humidity);
}
Niet alleen een dubbele setup() functie, maar ook een dubbele loop(). Je hebt zo te zien gewoon 2 examples aan elkaar geknoopt (#include wordt meestal helemaal bovenin de module gedaan, ook als je de inhoud van de ingesloten files nog niet meteen nodig hebt).
Bedankt voor jullie meedenken @peter_kawa en @Joost_Else ! Dat wordt erg gewaardeerd.
Ik heb jullie adviezen opgevolgd. Herlaas stuit ik op het volgende: Compilation error: statement cannot resolve address of overloaded function. Dit gaat om de regels
Ethernet.begin; (84:F3:EB:17:D1:62);
Homey.begin(Homey Pro van Mark);
Ik heb ook geprobeerd om het met de app ESPHome voor elkaar te krijgen. Ook hier loop ik tegen een foutmelding aan: connect ECONNREFUSED 192.168.68.83:6053
Ik heb hier het Ip adres van de ESP8266 ingevoerd en het poort nummer wat hier standaard staat ingevuld.
Ik zou dit zo graag werkend willen krijgen. Hopelijk kunnen jullie mij helpen? Alvast bedankt!
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <SPI.h>
#include <Ethernet2.h>
#include <EthernetUdp2.h>
#include <Homey.h>
#define PANIC 6
#define DISARM 7
#define ARM 1
#define NIGHT 2
WiFiClient espClient;
PubSubClient mqtt(espClient);
const char* ssid = "~~~~***";
const char* password = "***";
const char* host = "YOUR_MQTT_HOST";
void setup() {
Serial.begin(115200);
//built in led on because it looks good
pinMode(LED_BUILTIN, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(500);
}
mqtt.setServer(host, 1883);
mqtt.setCallback(callback);
Ethernet.begin; (84:F3:EB:17:D1:62);
Homey.begin(Homey Pro van Mark);
}
void reconnect() {
while (!mqtt.connected()) {
Serial.print("Attempting MQTT connection...");
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
if (mqtt.connect(clientId.c_str())) {
mqtt.subscribe("ajax/alarm");
} else {
Serial.print("failed, rc=");
Serial.print(mqtt.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
Serial.println("MQTT Connected.");
}
void loop() {
if (!mqtt.connected()) {
reconnect();
}
mqtt.loop();
}
void callback(
char* topic,
byte* payload,
unsigned int length
) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
String msg = "";
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
msg = msg+(char)payload[i];
}
if (strcmp(topic, "ajax/alarm") == 0 && msg == "panic") {
pressButton(PANIC);
} else if (strcmp(topic, "ajax/alarm") == 0 && msg == "disarm") {
pressButton(DISARM);
} else if (strcmp(topic, "ajax/alarm") == 0 && msg == "arm") {
pressButton(ARM);
} else if (strcmp(topic, "ajax/alarm") == 0 && msg == "night") {
pressButton(NIGHT);
}
}
void pressButton(int buttonId) {
pinMode(buttonId, OUTPUT);
digitalWrite(buttonId, LOW);
delay(300);
pinMode(buttonId, INPUT);
Serial.println("SENT SIGNAL");
}
byte mac[] = { 0x48, 0x6F, 0x6D, 0x65, 0x79, 0x00 };
const char* name = "example";
Home assistant had ik ooit ook draaien maar dat liep door het ontbreken van kennis van programmering helaas zo nu en dan vast. Dus vandaar de vereenvoudiging met Homey.
Ik zag de voorbeelden van projecten. Ik doe blijkbaar iets verkeerd met het mac adres. In dit voorbeeld zie is: byte mac = { 0x58, 0x6F, 0x6D, 0x63, 0x29, 0x00 }; Ik heb hier een andere opbouw van het mac adres ingevoerd. (84:F3:EB:17:D1:62) Zou dit een probleem kunnen zijn?: