Witajcie.
Po krótkich bojach z aktualizacją Domoticza do wersji 2020.02 zauważyłem niespójność pomiędzy wersjami. Chodzi o dane które są przesyłane do serwera mqtt. W poprzedniej wersji 4.10717 gdy wykonywałem subscribe dla danego kanału to pojawiały się dane, np.
{
"Battery" : 255,
"RSSI" : 8,
"description" : "",
"dtype" : "Temp + Humidity",
"id" : "82136",
"idx" : 136,
"name" : "Łazienka piętro",
"nvalue" : 0,
"stype" : "THGN122/123/132, THGR122/228/238/268",
"svalue1" : "25.90",
"svalue2" : "38.60",
"svalue3" : "0",
"unit" : 1
}
A tu te same dane po aktualizacji Domoticza do 2020.02
{
"Battery" : 255,
"RSSI" : 8,
"description" : "",
"dtype" : "Temp + Humidity",
"hwid" : "5",
"id" : "82136",
"idx" : 136,
"name" : "\u0141azienka pi\u0119tro",
"nvalue" : 0,
"stype" : "THGN122/123/132, THGR122/228/238/268",
"svalue1" : "25.90",
"svalue2" : "38.60",
"svalue3" : "0",
"unit" : 1
}
Różnica: brak polskich liter i dodatkowy element w postaci "hwid". Nie stanowiłoby to problemu, gdyby pozostałe urządzenia Arduino które mam spięte z domoticzem i są połączone z serwerem MQTT nie przestały działać.
Dodam, że Arduino rozpoznaje urządzenie które ma włączyć po idx i wartościach nvalue i svalue1, a te nie uległy radykalnym zmianom przy przejściu na nowszą wersję domoticza.
To część kodu z Arduino odpowiedzialnego za rozpoznawanie urządzenia które ma włączyć:
void obsluga(int idx, int nvalue, float svalue1, float svalue2)
{
if (idx == 96) {
if (nvalue==1 && svalue1>=0) {digitalWrite(przekaznikSWIATLOdrewutnia,LOW);}
if (nvalue==0 && svalue1>=0) {digitalWrite(przekaznikSWIATLOdrewutnia,HIGH);}}
if (idx == 97) {
if (nvalue==1 && svalue1>=0) {digitalWrite(przekaznikSWIATLOhalogenDREWUTNIA,LOW);}
if (nvalue==0 && svalue1>=0) {digitalWrite(przekaznikSWIATLOhalogenDREWUTNIA,HIGH);}}
}
Czy ktoś spotkał się z podobnym problemem po aktualizacji Domoticza ? Będę bardzo wdzięczny za wszelką pomoc.
He he ja już 3 razy podchodziłem do podniesienia wersji i za każdym razem fiasko. Nie chce mi się zrobić update Ubuntu do 18.04.
A czy podnosiłeś wersję do bety czy do stabilnej ?
@qusss Jeżeli w kodzie używałeś pętli zwrotnej dla domoticz/ out , to może być problem . W nowej wersji współpraca domoticz z brokerem mqtt została przebudowana i o ile nie miało to wpływu na domoticz/ in to już z domoticz/ out w wielu przypadkach po prostu przekaźniki przestały działać.
Pozostaje albo się cofnąć ( jak masz kopię ) albo zaktualizować do wersji gdzie będziesz mógł wybrać czy chcesz korzystać z tej pętli czy nie
@wojtek_gtx Podniosłem do stabilnej, beta wychodzi co chwile i nie ufam 😛 Ja nie mogłem zrobić upgradu bo mam bananapi. Instalowałem Armbian buster na świeżo i na tym OS działa domoticz bez problemu. Nowa i stara wersja. Poprzednio miałem RPi3 ale po 2 latach karta SD zaczęła sypać błędami i się totalnie wykrzaczyło wszystko. Dodam że używam także EmonCMS który co 10sekund zbiera dane o poborze prądu z innego Arduino i korzysta przy tym z mysql, więc zapisy były nieliche. Postanowiłem więc, że przejde na BananaPi z dyskiem SSD żeby mieć święty spokój 🙂
@isom Dzięki, sprawdzę opcję z pętlą, oczywiście w kodzie Arduino taki właśnie wykorzystuje. Backup mam, tylko twardziele nie robią backupu 🙂
@isom To jednak nie chodzi o pętle. Problem leży gdzie indziej. Po zmianach w MQTT w najnowszej Domoticz polskie litery są nieprawidłowo interpretowane, zamiast ł mamy \u0141 i zamiast ę - \u0119. To stwarza problem dla bibliotek jsona w Arduino które rozdzielają zmienne. Sprawdziłem i jeżeli jest chociaż jedna polska litera to zawsze wszystkie wartości nvalue, svalue1 i svalue2 w Arduino wskazują 0 więc siłą rzeczy przekaźnik przy wartości 0 nigdy się nie włączy. Zgłosze problem na oficjalnym forum domoticza, może naprawią ten błąd. Wystarczy żeby wrócili do stanu jaki był w wersji 4.10717 gdzie polskie litery były poprawne.
@qusss z tymi polskimi znakami masz 100% racji ale sprzężenie zwrotne też namieszało . Dla sprawdzenia wgrałem testowo espeasy gdzie żeby wysterować przekaźnik po mqtt trzeba użyć helpera mqtt i jak zmienię nazwę przełącznika tak że zawiera polski znak przekaźnik martwy , bez polskich znaków chula aż miło.
Witajcie,
Po 5 miesiącach odgrzewam temat. Polskie litery nadal pozostały bez zmian, są nieczytelne. Przekaźniki na arduino zaczęły poprawnie działać, podejrzewam że za sprawą nowych bibliotek ArduinoJson w wersji 6.16.1
Dodatkowo mam mosquitto version 1.6.9 mosquitto is an MQTT v3.1.1 broker na systemie Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-48-generic 86_64)
Wygląda na to że wszystko działa poprawnie. Temat uważam za zamknięty, mam nadzieję że posłuży innym użytkownikom podczas podobnych problemów.