Beste mede-tweakers,
De vraag is: kun je met een Alusta schakelaar een Itho box bedienen? Tot op zekere hoogte blijkt dit te kunnen zonder het Alusta-systeem te re-engineeren. Aan de Itho-kant is er een oplossing beschikbaar in de vorm van Arjen Hiemstra’s wifi add on module (
https://github.com/arjenhiemstra/ithowifi).
Nu de Alusta-kant van het probleem. Kennelijk zijn de Alusta schakelaars bedoeld om gevoed te worden met een wisselspanning. Met een 9v trafo die ik had liggen bleek dat prima te gaan. Met de 9v trafo aangesloten op pin 1 en 2 gaat de Alusta schakelaar door een opstartroutine en doet vervolgens verder helemaal niets. Echter, als je op de douche-schakelaar drukt, verschijnt er een vervormde 50hz blokgolf tussen pin 3 en pin 1. Als je verder nog ergens op drukt verandert er niets, de blokgolf blijft. We kunnen dus, door de blokgolf te detecteren, éénmalig een opdracht geven om de ventilatiebox voor bijvoorbeeld 15 minuten op hoog te zetten. Daarna moet de schakelaar worden gereset. Dit kan door de spanning er even af te halen.
De aanpak is als volgt. Het signaal van de schakelaar (pin 3) gaat via een miniatuur audio-transformator naar een analoge inputpin van een Arduino. De Arduino meet regelmatig wat op die analoge inputpin binnenkomt. Als dat boven een bepaalde drempelwaarde komt, stuurt de Arduino een HTTP Request naar de API van het printje in de Itho box, en reset de schakelaar met behulp van een relais-module.
De gebruikte onderdelen:
- Voedingstrafo 9v,
- Miniatuur audiotransformator, eigenschappen onbekend
- Arduino Uno R3
- Arduino Ethernet Shield
- Relaismodule voor Arduino
- Uiteraard een voeding van 5v voor de Arduino en de relaismodule.
Overigens is deze oplossing helaas niet plug-and-play, in het programma vind je het IP-adres van de Arduino, plus het IP-adres en een specifieke identifier van de wifi add-on.
#include <SPI.h>
#include <Ethernet.h>
EthernetClient client;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // random Mac address
byte ip[] = { 192, 168, 1, 175 }; // ip of Arduino
String HTTP_METHOD = "GET";
char HOST_NAME[] = "nrg-itho-37a8";
String PATH_NAME = "http://192.168.1.128/api.html?speed=200&timer=15";
int val ;
void setup() {
// put your setup code here, to run once:
pinMode(A5, INPUT);
pinMode(A0, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(A0,LOW);
delay(200);
val = analogRead(A5);
Serial.println("ingelezen:");
Serial.println(val);
if (val > 2 ){
Ethernet.begin(mac);
if(client.connect("192.168.1.128", 80)) {
Serial.println("Connected to server");
} else {
Serial.println("connection failed");
// send HTTP request header
}
client.println(HTTP_METHOD + " " + "/api.html?speed=200&timer=15" +" " + "HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println(); // end HTTP request header
digitalWrite(A0,HIGH);
delay(200);
}}