Hej,
klew wrote: Mon Aug 26, 2024 9:29 am
Jeśli Ci się bardzo nie spieszy, to w najbliższych kilku dniach powinienem dodawać tego typu klasę z interfejsem do rolet. W formie pośrednika do mega powinna ona się sprawdzić.
Chętnie przyjrzę się tej nowej zapowiedzianej klasie "pośrednika", którą planujesz dodać. A może już masz gotową?
Oczywiście, najlepiej byłoby wykonać obustronna komunikacje, tak żeby serwer wiedział co jest "grane" w MEGA i jaką faktycznie pozycję lub stany mają rolety w domu, czyli żeby wizualizować np ruch rolety w apce, zarówno przy pomocy przycisków w domu (tak jak to widać za pomocą przycisków w apce komórki).
Nie, spieszy mi się z implementacją.
Póki co walczyłem z I2C pomiędzy Uno <-> NodeMcu, oraz jednostronnymi ramkami, które wysyła NodeMcu z "RollerShutter.cpp" -> UNO.
UNO używam zamiast MEGA, żeby nie popsuć m.in. rolet w domu
Na biurku działa.
Z NodeMcu leca logi np (moje to te z prefixem >>>>>>>>>>>>> ):
Code: Select all
23:37:54.180 -> Recv: [53 55 50 4C 41 17 4F 00 00 00 6E 00 00 00 11 00 00 00 B3 00 00 00 01 96 00 96 00 6E 00 00 00 00 00 00 00 53 55 50 4C 41 ]
23:37:54.215 -> RollerShutter[1] new value from server: 110
23:37:54.215 -> **** Digital write[1], gpio: 16; value 0
23:37:54.215 -> **** Digital write[1], gpio: 17; value 1
>>>>>>>>>>>>>23:37:54.215 -> RollerShutter::notify -> [RS:W:01:01:100] to adress 8
23:37:54.350 -> Channel(1) value changed to 20
23:37:54.350 -> Send: [53 55 50 4C 41 17 B3 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 14 00 00 00 00 00 00 00 ]
23:37:54.452 -> Send: [53 55 50 4C 41 ]
23:37:54.486 -> Channel(1) value changed to 21
23:37:54.521 -> Send: [53 55 50 4C 41 17 B4 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 15 00 00 00 00 00 00 00 ]
23:37:54.588 -> Send: [53 55 50 4C 41 ]
23:37:54.656 -> Channel(1) value changed to 22
23:37:54.656 -> Send: [53 55 50 4C 41 17 B5 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 16 00 00 00 00 00 00 00 ]
23:37:54.792 -> Channel(1) value changed to 23
23:37:54.827 -> Send: [53 55 50 4C 41 ]
23:37:54.962 -> Channel(1) value changed to 24
23:37:54.962 -> Send: [53 55 50 4C 41 17 B6 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 18 00 00 00 00 00 00 00 ]
23:37:55.098 -> Channel(1) value changed to 25
23:37:55.133 -> Send: [53 55 50 4C 41 ]
23:37:55.235 -> Channel(1) value changed to 26
23:37:55.302 -> Send: [53 55 50 4C 41 17 B7 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 1A 00 00 00 00 00 00 00 ]
23:37:55.405 -> Channel(1) value changed to 27
23:37:55.405 -> Send: [53 55 50 4C 41 ]
23:37:55.506 -> Send: [53 55 50 4C 41 17 B8 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 1B 00 00 00 00 00 00 00 ]
23:37:55.540 -> Channel(1) value changed to 28
23:37:55.573 -> Send: [53 55 50 4C 41 ]
23:37:55.641 -> Send: [53 55 50 4C 41 17 B9 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 1C 00 00 00 00 00 00 00 ]
23:37:55.709 -> Channel(1) value changed to 29
23:37:55.709 -> Send: [53 55 50 4C 41 ]
23:37:55.777 -> Send: [53 55 50 4C 41 17 BA 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 1D 00 00 00 00 00 00 00 ]
23:37:55.848 -> Channel(1) value changed to 30
23:37:55.879 -> Send: [53 55 50 4C 41 ]
23:37:55.981 -> Recv: [53 55 50 4C 41 17 50 00 00 00 6E 00 00 00 11 00 00 00 B3 00 00 00 01 96 00 96 00 00 00 00 00 00 00 00 00 53 55 50 4C 41 ]
23:37:55.981 -> RollerShutter[1] new value from server: 0
>>>>>>>>>>>>23:37:55.981 -> RollerShutter::notify -> [RS:W:01:00:202] to adress **** Digital write[1], gpio: 16; value 0
23:37:56.015 -> **** Digital write[1], gpio: 17; value 0
>>>>>>>>>>>>>23:37:56.015 -> RollerShutter::notify -> [RS:W:01:00:202] to adress 8
23:37:56.015 -> Send: [53 55 50 4C 41 17 BB 00 00 00 67 00 00 00 0E 00 00 00 01 00 00 00 00 00 1E 00 00 00 00 00 00 00 ]
23:37:56.085 -> Send: [53 55 50 4C 41 ]
23:38:01.004 -> Wrote 9 bytes to storage at 124
23:38:01.004 -> Wrote 7 bytes to storage at 108
23:38:01.033 -> Commit
Natomiast UNO łapie:
Code: Select all
23:38:50.102 -> New commnad: [RS:W:01:01:100]
23:38:51.561 -> New commnad: [RS:W:01:00:202]
23:38:51.561 -> New commnad: [RS:W:01:00:202]
czyli włączenie zamykania samoczynnego (lewy kursor w apce w dol) i przerwanie przyciskiem stop.
Ramka, przykładowy opis:
RS -> RollerShutter, przewiduje ramki związane z innymi funkcjami jakie mam w MEGA.
W -> zapis
01 -> roleta kanału 1
01 - komenda, kierunek w dol
100 - pozycja, tu początkowa 100, inaczej 0 (100-100)
Pozostaje kwestia obsługi ramek w MEGA, ale to już zależy od kodu autora czy też mojego.