Tak Arduino IDE 1.8.12
avrdude: Version 6.3-20190619
Copyright © 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright © 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\Pavel\Desktop\pi4 HA\arduino-1.8.12\hardware\tools\avr/etc/avrdude.conf"
Using Port : COM4
Using Programmer : wiring
Overriding Baud Rate : 115200
AVR Part : ATmega2560
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Wiring
Description : Wiring
Programmer Model: AVRISP
Hardware Version: 15
Firmware Version Master : 2.10
Vtarget : 0.0 V
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading input file “C:\Users\Pavel\AppData\Local\Temp\arduino_build_706444/o_wietlenie_2.ino.hex”
avrdude: writing flash (18404 bytes):
Writing | ################################################## | 100% 2.73s
avrdude: 18404 bytes of flash written
avrdude: verifying flash memory against C:\Users\Pavel\AppData\Local\Temp\arduino_build_706444/o_wietlenie_2.ino.hex:
avrdude: load data flash data from input file C:\Users\Pavel\AppData\Local\Temp\arduino_build_706444/o_wietlenie_2.ino.hex:
avrdude: input file C:\Users\Pavel\AppData\Local\Temp\arduino_build_706444/o_wietlenie_2.ino.hex contains 18404 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 2.09s
avrdude: verifying …
avrdude: 18404 bytes of flash verified
avrdude done. Thank you.
Jest w tym wątku przecież https://github.com/ironek69/Arduino-to-Home-Assistant-MQTT-multisensor
Źle skopiowałeś, początek powinien być zakomentowany /* xxx */
najlepiej z Githuba pobrać całość.
Nie wiem skąd ten avrdude: u mnie nic takiego nie ma w Arduino IDE…
W Managerze płytek masz to zainstalowane:
Tak mam to zainstalowane.
Przy kompilacji twojego kodu ma problem z ta linijką : RS485_protocol.h: No such file or directory
Wszystko jest napisane co trzeba zrobić - doinstalować bibliotekę RS485_protocol.
https://www.gammon.com.au/forum/?id=11428
http://www.gammon.com.au/Arduino/RS485_protocol.zip
Wgrałem twój szkic. Ale w configuration.yaml w HA co mam wpisać
Skrypt używa autodiscovery więc teoretycznie nic nie trzeba dodawać do konfiguracji bo sensory powinny automatycznie pojawić się w HA w zakładce Wszystkie czujniki.
Tak mi się wydawało ale w żaden sposób u mnie to nie działa. Jedyny szkic który u mnie dział to ten udostępnia przez szmalu pod filmem “sterowanie oświetleniem” No ale sterowanie przez domoticza mnie nie urządza. No trudno kasa wywalona w błoto.
Ja bym się nie poddawał Sprawdź czy cokolwiek jest zapisywane do brokera MQTT bo może tutaj masz problem… masz MQTT Explorer trzeba sprawdzić czy dane są zapisywane. Nawet jak nie działa autodiscovery to zawsze można w konfigu ręcznie dodać sensory i sprawdzić czy zapisują się odczyty.
Bez sensu sprawdzać jakieś mqtt jak zwykły przycisk fizyczny nie działa.
Nie da się jakoś do tego scryptu dorobić mqtt i ethernet shield?
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
//#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
// Set LOW transmit power level as default, if you have an amplified NRF-module and
// power your radio separately with a good regulator you can turn up PA level.
//#define MY_RF24_PA_LEVEL RF24_PA_LOW
// Enable serial gateway
#define MY_GATEWAY_SERIAL
// Define a lower baud rate for Arduino's running on 8 MHz (Arduino Pro Mini 3.3V & SenseBender)
#if F_CPU == 8000000L
#define MY_BAUD_RATE 38400
#endif
// Flash leds on rx/tx/err
// #define MY_LEDS_BLINKING_FEATURE
// Set blinking period
// #define MY_DEFAULT_LED_BLINK_PERIOD 300
// Inverses the behavior of leds
// #define MY_WITH_LEDS_BLINKING_INVERSE
// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
#define MY_INCLUSION_BUTTON_FEATURE
// Inverses behavior of inclusion button (if using external pullup)
//#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP
// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
#define MY_INCLUSION_MODE_BUTTON_PIN 3
// Uncomment to override default HW configurations
//#define MY_DEFAULT_ERR_LED_PIN 4 // Error led pin
//#define MY_DEFAULT_RX_LED_PIN 6 // Receive led pin
//#define MY_DEFAULT_TX_LED_PIN 5 // the PCB, on board LED
#include <SPI.h>
#include <MySensors.h>
#include <Bounce2.h>
// Enable repeater functionality for this node
#define MY_REPEATER_FEATURE
#define RELAY_1 4 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
#define RELAY_2 5
#define NUMBER_OF_RELAYS 2 // Total number of attached relays
#define RELAY_ON 1 // GPIO value to write to turn on attached relay
#define RELAY_OFF 0 // GPIO value to write to turn off attached relay
#define BUTTON_PIN A1
#define BUTTON2_PIN A2
void before() {
for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
// Then set relay pins in output mode
pinMode(pin, OUTPUT);
// Set relay to last known state (using eeprom storage)
digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
}
}
Bounce debouncer = Bounce();
Bounce debouncer2 = Bounce();
void setup() {
// Setup locally attached sensors
delay(10000);
// Setup the button.
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(BUTTON2_PIN, INPUT_PULLUP);
// After setting up the button, setup debouncer.
debouncer.attach(BUTTON_PIN);
debouncer.interval(5);
debouncer2.attach(BUTTON2_PIN);
debouncer2.interval(5);
//presentation();
}
void presentation()
{
// Send the sketch version information to the gateway and Controller
sendSketchInfo("Relay", "1.0");
for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
present(sensor, S_LIGHT);
}
}
MyMessage msg(1, V_LIGHT);
MyMessage msg2(2, V_LIGHT);
void loop() {
// Send locally attached sensor data here
if (debouncer.update()) {
// Get the update value.
int value = debouncer.read();
// Send in the new value.
if(value == LOW){
saveState(1, !loadState(1));
digitalWrite(RELAY_1, loadState(1)?RELAY_ON:RELAY_OFF);
send(msg.set(loadState(1)));
}
}
if (debouncer2.update()) {
int value2 = debouncer2.read();
if(value2 == LOW){
saveState(2, !loadState(2));
digitalWrite(RELAY_2, loadState(2)?RELAY_ON:RELAY_OFF);
send(msg2.set(loadState(2)));
}
}
}
void receive(const MyMessage &message) {
// We only expect one type of message from controller. But we better check anyway.
if (message.type==V_LIGHT) {
// Change relay state
digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
// Store state in eeprom
saveState(message.sensor, message.getBool());
// Write some debug info
Serial.print("Incoming change for sensor:");
Serial.print(message.sensor);
Serial.print(", New status: ");
Serial.println(message.getBool());
}
W tym przynajmniej przyciski fizyczne działają
Zerknij na to może problem tkwi w tym że gość to pokazuję na przykładzie arduino uno dlatego mi to nie działa ? Może jakieś inne piny muszę przypisać.
Nie wiem czy zwróciłeś uwagę, że tutaj używa się przycisków podpiętych pod piny analogowe.
w setupie stosuje się coś jak rezystor podciągający.
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(BUTTON2_PIN, INPUT_PULLUP);
z tego co wiem to chcesz użyć 16 przycisków ? Arduino Mega ma dokładnie 16 wejść analogowych więc można to zrobić w ten sposób. Są jeszcze sposoby na ogarnięcie np. większej ilości przycisków na jednym pinie analogowym. Nie wiem tylko jak to się ma do zakłóceń i pojawieniu się obcych napięć na przewodach a co za tym idzie na wejściach analogowych Arduino…
Dlatego ja stosowałem wejścia cyfrowe. Jak będę miał czas to zajmę się takim właśnie projektem bo tak jak pisałem docelowo też tak planuję zrobić u siebie.
Na szkicu od Szmala działa bez rezystora… Ty chciałeś zrobić na przkaznikach bistabilnych i ten gość od którego mam szkic z YT też zrobił to na bistabilnych
Dokładnie ja nie widzę innego sensownego rozwiązania jak przekaźniki bistabilne i przyciski w pomieszczeniach.
No właśnie nie bo komenda pinMode(BUTTON_PIN, INPUT_PULLUP); to właśnie zastępuje rezystor podciągający.
Czy Arduino jest aż tak zawodne że chcesz w ten sposób zrobić?
Nie jest zawodne u mnie od kilku miesięcy sprawuje się wzorowo zarówno Mega jak Nano, ale to tylko urządzenia i kto je wymieni jak np. mnie nie będzie w domu ? Unieruchomi to całe oświetlenie w domu.
Można by powiedzieć że ogarnołem wstępnie temat. Wszystko masz po mqtt przez eth shield czy masz też jakieś Arduino po usb
@Iron chcę na końcu ogrodu postawić skrzynkę sterowniczą. Sterowanie oświetleniem ogrodu, basenem, gniazdo do kosiarki, przyciski mono, kilka ds-ów i takie tam. Nie łapie już tam wifi potrzebuję coś po kablu. Chciałem postawić Esp32 z EspHome w garazu i po skrętce puścić sterowanie do skrzynki, ale jedna skrętka będzie za mało. Przypomniałem sobie o Twoim projekcie i wydaje się on idealny dla mojego rozwiązania. Pytanie czy w skrzynce wstawić Arduino Mega czy Uno, a Mega w garażu, gdzie mam już router? Ps. Widziałem, że jest coś takiego jak mysensors. Czy to się czymś różni od Twojego projektu?
Trochę zaśmieciłem temat. Pokasuj nie potrzebne wpisy i zostaw sam projekt.