Bticino antifurto ed uscita verso Arduino

buonasera,

Sono nuovo sia di Arduino che di questo forum.

Vorrei acquistare un Arduino da collegare alla centrale di allarme Bticino.
Essa dispone di uscita con relè in scambio da 1A che volevo collegare alla scheda Arduino.

Lo scopo sarebbe quello di accendermi le luci (Philips Hue) tramite una chiamata API http quando l'uscita della centrale (Bticino 4201) si attiva.

Secondo voi è fattibile?
Se si, quale scheda mi consigliate (wifi) e come attacchereste l'uscita?

saluti,
Gianmaria

Buongiorno, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Mah ... io andrei su un ESP8266 o un ESP32 ... schede che nascono già di base con il WiFi (anzi, sono imperniate proprio su quello) e per cui trovi un'infinità di cose fatte simili a quello che vuoi fare tu. Per il collegamento ... ti basta il contato pulito del relè che usi per chiudere un pin digitale, messo in ingresso e con pull-up, verso massa.

Guglielmo

gpb01:
Mah ... io andrei su un ESP8266 o un ESP32 ... schede che nascono già di base con il WiFi (anzi, sono imperniate proprio su quello) e per cui trovi un'infinità di cose fatte simili a quello che vuoi fare tu. Per il collegamento ... ti basta il contato pulito del relè che usi per chiudere un pin digitale, messo in ingresso e con pull-up, verso massa.

Guglielmo

Ti ringrazio!

Ne approfitto per dire che il mio dubbio è legato più che altro al collegamento HW. la parte SW la trovo abbastanza chiara nella documentazione del sito.

Inoltre l'allarme ha anche delle uscite open collector max 500mA. Conviene usare quelle?

Guarda ... tu hai dei pin digitali che, con una resistenza, sono tenuti a livello HIGH ... l'unica cosa che devi fare è rilevare la chiusura verso LOW e fare quello che devi fare, quindi ... una strada vale l'altra ... ricorda solo che gli ESP lavorano a 3.3V ... quindi attenzione.

Guglielmo

Altra domanda:

innanzitutto premetto che non sapendo se davvero sarei riuscito a fare qualcosa di serio preventivando almeno una scheda bruciata, ho iniziato con un wemos d1 wifi che come dicevi ha un ESP8266.
detto questo ho il seguente problema e spero possiate darmi una mano:

durante una chiamata http post verso le Philips Hue

bool connettiHue(){
    if(WiFi.status() != WL_CONNECTED)
         return false;

    //ho wifi
    
    HTTPClient http;

    String url = "http://"+hueIp+"/api";
    http.begin(url);
  
    http.addHeader("Content-Type", "text/plain");
    String body = "{\"devicetype\":\"HomeSweetHome#WeMosGiardino\"}";
  
    int httpCode = http.POST(body);
    Serial.println(url);
    Serial.println(body);

// String payload = http.getString();
    Serial.println(httpCode);
  
    return true;
}

La risposta che ricevo è: httpCode 200. quindi sono felice!

aggiungendo però String payload = http.getString(); per recuperare la risposta ricevuta dal bridge ho la seguente eccezione:

Exception (9):
epc1=0x4020335f epc2=0x00000000 epc3=0x00000000 excvaddr=0x014a0199 depc=0x00000000

con Exception Decoder ho

Exception 9: LoadStoreAlignmentCause: Load or store to an unaligned address
PC: 0x4020335f: HTTPClient::~HTTPClient() at /Users/gianmaria/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp line 129
EXCVADDR: 0x014a0199

Decoding stack results
0x4020464c: String::~String() at /Users/gianmaria/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/cores/esp8266/WString.cpp line 125
0x40201218: connettiHue() at /Users/gianmaria/Documents/Arduino/Home/Home.ino line 136
0x40203d00: HardwareSerial::~HardwareSerial() at /Users/gianmaria/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/cores/esp8266/HardwareSerial.h line 72
0x40204100: Print::printf(char const*, ...) at /Users/gianmaria/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/cores/esp8266/Print.cpp line 79
0x4020426c: Print::println(Printable const&) at /Users/gianmaria/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/cores/esp8266/Print.cpp line 246
0x4020124d: setWorkingMode() at /Users/gianmaria/Documents/Arduino/Home/Home.ino line 146
0x4020133a: loop() at /Users/gianmaria/Documents/Arduino/Home/Home.ino line 190
0x402055a4: loop_wrapper() at /Users/gianmaria/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.2/cores/esp8266/core_esp8266_main.cpp line 197

la risposta dovrebbe essere un JSON del genere

[
	{
		"error": {
			"type": 101,
			"address": "/",
			"description": "link button not pressed"
		}
	}
]

aggiungo che in quanto le Philips hanno un webserver nel bridge che permette di provare le chiamate API, sono sicuro che la chiamata sia corretta.

Un uscita relé é un contatto pulito. Il contatto é isolato rispetto il resto del circuito elettrico del sistema di alarme.
Un uscita Open Collector é riferita a massa. Per questo si deve collegare la massa del sistema d'alarme con la massa del Arduino /ESP.
In certi casi (normalmente rari) un collegare delle masse potrebbe dare problemi. Se si vuole essere sicuri é meglio usare i contatti del relais.

Ciao Uwe