Homey Community Forum

Gebruik digitale ingangen

Wie weet een apparaat op 230V met meerdere digitale ingangen op zwakstroom.
Nu gebruik ik de Fibaro universele binaire sensor op een batterij via z-wave.
Probleem nu is dat als deze via mesh netwerk werkt dat het signaal vertraagt.
De drie Fibaro’s zitten nu vlakbij homey en ik wil meer ingangen.

Wat wil je precies doen? Als je een beetje kunt programmeren kan je bv een Arduino of (beter) een Wemos D1 Mini bordje kopen; die werken niet direct op 230V, maar via een USB-adapter, en hebben een stuk of 8 digitale I/O poorten.

Meldingen van deuren open/dicht en vergrendeld/ontgrendeld.
Tevens schakelaars voor centraal uit.
Wand schakelaars van klik aan klik uit doen het niet altijd.
Een z-wave wandschakelaar kreeg ik niet aangemeld.(ligt nu nog bij de leverancier)
Zoek naar iets wat betrouwbaar werkt naar Homey.

Ik gebruik zelf een Wemos D1 i.c.m. Homeyduino. Dat werkt perfect maar ik weet niet of Homeyduino nog ondersteund wordt (zit zelf nog op versie 1.5.13). Een andere optie is een Tasmota geschikt apparaat i.c.m MQTT. Beide opties vereisen wel enige handigheid op gebied van flashen/programmeren.

Helaas heeft de Homey zelf geen digitale / analoge in- of uitgangen. Ik had gehoopt dat de Homey pro deze optie zou hebben maar helaas…

Hoi robertklep, Als ik een Arduina gebruik hoe koppel ik deze dan de Homey?

Hans, in deze post wordt dit uitgebreid besproken.

Hoi, ik heb ondertussen een PLC controlino in huis met 12/24V in/outputs die werkt met arduina. Aangesloten op mijn netwerk communiceert hij met Homey. Samen met mijn zoon probeer ik het programma te optimaliseren. Homey reageert bij A0-A7 op de positieve flank van de ingang en bij A8-A9 op de positieve en negatieve flank van de ingang. Graag wil ik in de flow van Homey configureren met “als ingang hoog wordt” “als ingang laag wordt” “en ingang is laag” “en ingang is hoog” “maak uitgang hoog” “maak ingang laag”.

Kan iemand ons verder helpen? Hieronder ons Ardino programma in de Controlino.

#include <SPI.h>
#include <Ethernet.h>
#include <Homey.h>

byte mac = { 0x48, 0x6F, 0x6D, 0x65, 0x79, 0x00 };

bool lastStateA0 = LOW;
bool lastStateA1 = LOW;
bool lastStateA2 = LOW;
bool lastStateA3 = LOW;
bool lastStateA4 = LOW;
bool lastStateA5 = LOW;
bool lastStateA6 = LOW;
bool lastStateA7 = LOW;
bool lastStateA8 = LOW;
bool lastStateA9 = LOW;

void setup() {
//Serial.begin(115200);
//Serial.println(“Starting ethernet…”);
Ethernet.begin(mac);
//Serial.print("IP address: ");
//Serial.println(Ethernet.localIP());

Homey.begin(“PLC”);
Homey.setClass(“sensor”);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
pinMode(A6, INPUT);
pinMode(A7, INPUT);
pinMode(A8, INPUT);
pinMode(A9, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}

void loop(){
Homey.loop();

bool readingA0 = digitalRead(A0);
bool readingA1 = digitalRead(A1);
bool readingA2 = digitalRead(A2);
bool readingA3 = digitalRead(A3);
bool readingA4 = digitalRead(A4);
bool readingA5 = digitalRead(A5);
bool readingA6 = digitalRead(A6);
bool readingA7 = digitalRead(A7);
bool readingA8 = digitalRead(A8);
bool readingA9 = digitalRead(A9);

if (readingA0 != lastStateA0) { if(readingA0) { Homey.trigger(“A0_VD-tag”, true); } digitalWrite (2, readingA0); }
if (readingA1 != lastStateA1) { if(readingA1) { Homey.trigger(“A1_VD-slot”, true); } digitalWrite (3, readingA1); }
if (readingA2 != lastStateA2) { if(readingA2) { Homey.trigger(“A2_VD-dicht”, true); } digitalWrite (4, readingA2); }
if (readingA3 != lastStateA3) { if(readingA3) { Homey.trigger(“A3_AD-tag”, true); } digitalWrite (5, readingA3); }
if (readingA4 != lastStateA4) { if(readingA4) { Homey.trigger(“A4_AD-slot”, true); } digitalWrite (6, readingA4); }
if (readingA5 != lastStateA5) { if(readingA5) { Homey.trigger(“A5_AD-dicht”, true); } digitalWrite (7, readingA5); }
if (readingA6 != lastStateA6) { if(readingA6) { Homey.trigger(“A6_SD-slot”, true); } digitalWrite (8, readingA6); }
if (readingA7 != lastStateA7) { if(readingA7) { Homey.trigger(“A7_SD-dicht”, true); } digitalWrite (9, readingA7); }
if (readingA8 != lastStateA8) { Homey.trigger(“A8_CU-voor”, true); digitalWrite (10, readingA8); }
if (readingA9 != lastStateA9) { Homey.trigger(“A9_CU-achter”, true); digitalWrite (11, readingA9); }

lastStateA0 = readingA0;
lastStateA1 = readingA1;
lastStateA2 = readingA2;
lastStateA3 = readingA3;
lastStateA4 = readingA4;
lastStateA5 = readingA5;
lastStateA6 = readingA6;
lastStateA7 = readingA7;
lastStateA8 = readingA8;
lastStateA9 = readingA9;

}