Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Fibaro Fibaro
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bascom - Atmega1284P + ESP8266 + Domoticz

maximus22_kr 28 Wrz 2017 20:59 915 11
  • #1 28 Wrz 2017 20:59
    maximus22_kr
    Poziom 18  

    Mam układ w konfiguracji jak w tytule ( do tego czujniki DS, BME280, zapis SD, RFM12 )

    Ostatni etap to wysyłanie przez JSON do Domoticz. Niestety szwankuje wysyłanie i robi to losowo, czasem po wysłaniu danych z kilku czujników, czasem przejdzie cały "cykl"
    Odstęp pomiędzy wysyłaniem wynosi pomiędzy 20 a 30 sekund, natomiast odstęp pomiędzy wysyłaniem danych dla konkretnego czujnika wynosi 11 minut.
    W załączniku cały kod, wklejam tylko część odpowiedzialną za Domoticz + fragment Select Case. Do odbioru UART wykorzystałem Serial0charmatch według pomysłu Niveasoft.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    I teraz podpinając się do UART od strony Tx ESP8266 mam:
    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Wygląda tak, że Atmega przestaje reagować na odpowiedź "OK" - na polecenie AT+PING="192.168.0.92". ESP8266 raczej nie jest winny - odsyła "OK" i Atmega powinna w tym momencie rozpocząć wysyłanie. Resetowałem go podczas pracy, to nic nie zmieniło, dopiero reset całego układu pomaga - na chwilę.

    Dodatkowo jako "bonus" ( ale to wymaga zajrzenia do kodu ) do momentu w którym działa jeszcze wysyłanie do Domoticz, nie działa komunikacja z Masterem 2, w momencie, gdy przestaną być wysyłane dane czujników do Domoticz, odbieranie danych z Master 2 zaczyna działać jak trzeba. No i oczywiście poza tym problemem całość działa - niezależnie, czy dane są wysyłane,czy nie - odczytywanie czujników, wysyłanie do klientów i zapis na SD - wszystko to działa.

    Co może być przyczyną takiego zachowania UART'a Atmegi ?

    0 11
  • Fibaro
  • #2 02 Paź 2017 22:14
    maximus22_kr
    Poziom 18  

    Przerobiłem program na Atmega328. Teraz ma tylko odbierać dane z master na Atega1284p i wysyłać do Domoticz.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Zmieniłem też adres IP pod który wysyła PING na 8.8.8.8

    Ale nic się nie zmieniło. Czasem wyskoczy "+timeout"
    Kod: bash
    Zaloguj się, aby zobaczyć kod



    Może sam Domoticz ( zainstalowany na Orange PI Zero ) robi jakieś problemy ? Może za często aktualizuję ?
    Chyba przyjdzie poczekać, aż ktoś mądrzejszy pochwali się osiągnięciami.

    0
  • Fibaro
  • #3 05 Paź 2017 23:13
    maximus22_kr
    Poziom 18  

    Ostatecznie wysyłam na Domoticz tak:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Działa, ale tylko raz po włączeniu zasilania/resecie.
    Może ktoś podpowie co jest nie tak ? Jedyny pomysł to niewłaściwa obsługa UART. Może trzeba wyrzucić tę dodatkową flagę Domoticz_en, tylko w pierwszym Case podprogramu Domoticz_send to parsować ?

    0
  • #4 05 Paź 2017 23:44
    373522
    Usunięty  
  • Fibaro
  • #5 06 Paź 2017 23:11
    maximus22_kr
    Poziom 18  

    Wiem i korzystam drugiego UART'a, nawet po to, żeby wiedzieć w którym miejscu jest program.
    Ale wydawało mi się, że podpięcie pod Tx ESP8266 będzie najsensowniejsze.
    RealTerm pokazał znaki CrLF

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Zauważ, że za pierwszym razem jest w porządku - przechodzi wszystkie 28 wpisów. Może ESP8266 coś wysyła i to "zapycha" UART. Póki co RealTerm pokazuje tylko znaki CrLf po CLOSED

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    0
  • #6 07 Paź 2017 02:53
    373522
    Usunięty  
  • #7 08 Paź 2017 20:31
    maximus22_kr
    Poziom 18  

    Jeśli masz taką możliwość to byłoby super. Jak widzisz Atmega zachowuje się dziwnie. Jakby nie działało wcale to bym szukał problemu w kodzie.
    To nie jest raczej problem sprzętowy, warunki pracy nie zmieniają się.

    0
  • #8 08 Paź 2017 22:09
    373522
    Usunięty  
  • #9 08 Paź 2017 22:20
    maximus22_kr
    Poziom 18  

    No to Orange Pi Zero łatwiej, wystarczy terminal ustawiony na 115200 i Putty, na początek łączyłem się przez terminal, teraz już przez SSH.
    Trochę się z nim obyłem, tzn. aktywowałem porty, próbowałem sterować nimi z poziomu Pythona, zainstalowałem serwer z PHP 5, MySql, Apache 2.

    Orange Pi Zero nie ma HDMI, tylko chyba composite.
    Nawet program DUC do komunikacji z Noip - tyle że coś nie działa Noip - widzę adres z Noip na komputerach lokalnych, czyli albo wpisuję IP albo adres z Noip i działa, ale na zewnątrz nie działa - zapuściłem nawet temat na forum.

    0
  • #10 12 Paź 2017 22:48
    maximus22_kr
    Poziom 18  

    Niestety dzisiaj musiałem zmienić router na TP-Link TD-W8970 ( akurat taki miałem )
    Efekt jest taki, że nawet po resecie nie wysyła - jest tak jak poniżej

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Może jakieś ustawienie routera sprawia kłopot.

    0
  • #11 15 Paź 2017 19:23
    maximus22_kr
    Poziom 18  

    Przerobiłem tak, żeby wysyłał testowo tylko jedną wartość ( losową ) co 8 sekund

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    jest jakiś problem z odbiorem z ESP

    Komunikacja z tx ESP:
    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Po AT ( lub po Ping, zależy jak zainicjuję ) moduł nie wysyła OK. Wtedy po połączeniu nie odpowiada CONNECT, dlatego zapewne jest o odpowiedź "Link is not valid"

    Dodano po 18 [godziny] 29 [minuty]:

    Dołożyłem
    Clear Serialin0
    Com1_str = ""

    czyli
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    i działa. Spróbuję to dopasować do wysyłki masowej.

    0
  • #12 18 Paź 2017 22:09
    maximus22_kr
    Poziom 18  

    Finalnie wygląda to tak:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Co prawda po kilkunastu godzinach pracy czasem tylko pierwszy wysyłany rekord dociera ( ale tylko pierwszy ) z przerwami ( co ciekawe w bazie są wpisy, ale z ostatnia odebraną wartością ). Muszę go podpiąć pod UART i zobaczyć co się dzieje.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo