UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Cześć, wracam ponownie z problemem. Tym razem chodzi o szkic do Arduino obsługujący włączniki światła, czujniki temperatury ds18b20 i czujnik ruchu. Z połączeniem ze sobą szkiców do włączników i czujników temperatury nie miałem problemów, lecz pojawił się on po dorzuceniu do tego szkicu obsługującego czujnik ruchu.
Całość wygląda jak w załączniku. Po wgraniu szkicu do Andino ,naciśnięcie włączników nie zapala światła ale czujnik ruchu działa i zmiana stanu widoczna jest w domoticz'u. Problematyczna wydaje się linia:
sleep(digitalPinToInterrupt(PIR1_PIN), CHANGE, SLEEP_TIME_PIR);
Jak ją usunę to działają włączniki światła i czujnik ale Domoticz strasznie wolno zaczyna działać i wzrasta obciążenie Rpi, co pewnie wynika z ciągłego "stukania" danymi z czujnika do Domoticz'a. Może ktoś ma pomysł jak to wszystko pogodzić ?
A zrób coś takiego
float lastTemperature[MAX_ATTACHED_DS18B20]; bool receivedConfig = false; bool metric = true; bool lastpir = false; // dopisać
Dalej
void before() { // Dla zwykłych włączników for (int i = 0; i < D_NUMBER_OF_BUTTONS; i++) { pinMode(D_FIRST_RELAY_PIN + (i * 2), OUTPUT); // Then set relay pins in output mode digitalWrite(D_FIRST_RELAY_PIN + (i * 2), loadState(D_FIRST_RELAY_PIN + (i * 2)) ? RELAY_ON : RELAY_OFF); // Set relay to last known state (using eeprom storage) //digitalWrite(D_FIRST_RELAY_PIN + (i * 2), RELAY_OFF ); } //DS18B20 lastpir = digitalRead(PIR1_PIN) == HIGH; sensors.begin(); }
Na końcu
bool tripped = digitalRead(PIR1_PIN) == HIGH; if (lastpir != tripped) { lastpir = tripped; Serial.println(tripped); send(msgPIR1.set(tripped?"1":"0")); // Send tripped value to gw } // Sleep until interrupt comes in on motion sensor. Send update every two minute. //sleep(digitalPinToInterrupt(PIR1_PIN), CHANGE, SLEEP_TIME_PIR);
Dzięki za wskazówki. Może w tygodniu dam radę to sprawdzić to dam znać.
Wracam ponownie z problemem. Mam dwa arduino podpięte do Rpi. Czujniki ruchu podpiąłem do jednego (wraz z włącznikami dzwonkowymi i roletami) a czujniki DS18B20 i włączniki zwykłe mam podłączone do drugiego arduino. Z pierwszym arduino nie mam żadnych problemów. Natomiast w drugim Arduino, po dodaniu fragmentów dotyczących obsługi czujników temperatury, w logach co jakiś czas pojawiają mi się takie błędy:
2022-03-13 20:13:15.748 Error: Arduino - zwykłe: Command not received by Node !! (node_id: 0, child_id: 5) 2022-03-13 20:52:33.076 Error: Arduino - zwykłe: Repeating previous command (2/2) 2022-03-13 21:16:20.452 Error: Arduino - zwykłe: Repeating previous command (2/2) 2022-03-13 21:25:07.139 Error: Arduino - zwykłe: Repeating previous command (2/2) 2022-03-13 21:27:11.286 Error: Arduino - zwykłe: Repeating previous command (2/2) 2022-03-13 22:16:19.218 Error: Arduino - zwykłe: Repeating previous command (2/2)
Sporadycznie zdarza się też, że naciskając włącznik zwykły aby zgasić światło, światło nie gaśnie od razu tylko kilku sekundach. Najprawdopodobniej wtedy też pojawia się ten błąd w logu. Tzn. opóźnienie jest konsekwencją błędu, ponieważ błędy w logach pojawiają się także w nocy, jak nikt włączników nie rusza. Dołączam szkic, może ktoś coś wypatrzy :). Dodam, że jak ze szkicu usunę linijki dotyczące czujników DS18B20 to problem nie występuje.