Asystent AI
Arduino + czujnik r...
 
Powiadomienia
Wyczyść wszystko

Domoticz Arduino + czujnik ruchu + mysensors

5 Wpisów
2 Użytkownicy
0 Reactions
1,906 Wyświetleń
(@szmydu)
Wpisów: 72
Pomocny
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 
[#2806]

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ć ? 

 

 


 
Dodane : 02/03/2022 6:32 pm
(@steel_rat)
Wpisów: 646
Ekspert
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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);

 
Dodane : 02/03/2022 11:37 pm
(@szmydu)
Wpisów: 72
Pomocny
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Dzięki za wskazówki. Może w tygodniu dam radę to sprawdzić to dam znać. 


 
Dodane : 05/03/2022 8:45 pm
(@szmydu)
Wpisów: 72
Pomocny
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@steel_rat Sprawdziłem i działa. Dzięki.


 
Dodane : 11/03/2022 3:06 pm
(@szmydu)
Wpisów: 72
Pomocny
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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. 

 


 
Dodane : 14/03/2022 12:01 pm
Udostępnij: