Cześć Wszystkim!
Arduino widzi się z HA. HA widzi opcje button short press i button long press, ale nie reaguje przy zwarciu pinu 9 do GND. Poniżej załączam szkic z Arduino i szkic automatyzacji.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
id: '1638427019690'
alias: Mybutton ON to OFF
description: hej
trigger:
- platform: device
domain: mqtt
device_id: 0ed8d7a687af41ade0c126a651e8485d
type: button_short_press
subtype: mybtn
discovery_id: 0010fa6e384a mybtn_button_short_press
condition:
- condition: and
conditions:
- condition: state
entity_id: switch.relay_1_102
state: 'on'
action:
- service: switch.turn_off
target:
entity_id: switch.relay_1_102
mode: single
#include <Ethernet.h>
#include <ArduinoHA.h>
#define MY_DEBUG
// This example uses JC Button library
// https://github.com/JChristensen/JC_Button
#include <JC_Button.h>
#define BUTTON_PIN 9
#define BUTTON_NAME "mybtn"
#define BROKER_ADDR IPAddress(192,168,0,140)
#define BROKER_USERNAME "mqtt" // replace with your credentials
#define BROKER_PASSWORD "1234"
byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
EthernetClient client;
HADevice device(mac, sizeof(mac));
HAMqtt mqtt(client, device);
HATriggers triggers;
Button btn(BUTTON_PIN);
bool holdingBtn = false;
void setup() {
Serial.begin(9600);
// you don't need to verify return status
Ethernet.begin(mac);
// set device's details (optional)
device.setName("Arduino");
device.setSoftwareVersion("1.0.0");
// setup triggers
triggers.add("button_short_press", BUTTON_NAME);
triggers.add("button_long_press", BUTTON_NAME);
btn.begin();
mqtt.begin(BROKER_ADDR);
}
void loop() {
Ethernet.maintain();
mqtt.loop();
btn.read();
if (btn.pressedFor(3000) && !holdingBtn) {
triggers.trigger("button_long_press", BUTTON_NAME);
holdingBtn = true;
} else if (btn.wasReleased()) {
if (holdingBtn) {
holdingBtn = false;
} else {
triggers.trigger("button_short_press", BUTTON_NAME);
}
}
}

