Znalazłem taki sposób :
komenda do odczytu danych podpiętych urządzeń po USB
ls -l /dev/serial/by-id total 0
u mnie pokazało to
lrwxrwxrwx 1 root root 13 Jan 20 20:22 usb-Silicon_Labs_CP2102_USB_to_UART_Bridg e_Controller_0001-if00-port0 -> ../../ttyUSB0
trzeba dołoźyć w miejsce usb0 w starym zapisie
serial/by-id
oraz ściągnięty adres
usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
finalnie wygląda to tak w cronie
*/1 * * * * /usr/bin/python3 ~/domoticz/plugins/multical402-4-domoticz/multical402-4-domoticz.py -d /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 115:74:0 114:89:0 113:87:0 112:86:0 111:60:0 110:80:0
dla komendy jednorazowego wykonania będzie analogicznie
Wszystko działa , sprawdziłem po wyłączeniu zasilania maliny i zamieniły się nr portów USB
10.712705] usb 1-1.1.2: cp210x converter now attached to ttyUSB1
[ 10.713936] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUS B0
Mam jeszcze taką mini teorię - a może autor tego git
https://github.com/ronaldvdmeer/multical402-4-domoticz
nie wyrzucił komentarza do formuły ?
*/20 * * * * /usr/bin/python3 /path/to/your/script/multical402-4-domoticz.py -d /dev/ttyUSB1 88:60:0 89:80:0
tj to czerwone zaznaczenie
PS
To jest mój brak doświadczenia w korzystaniu z opisów na Github oraz w ogóle w linuxem. Autor oczywiście pokazał tylko ścieżkę pliku
Pora finiszować...
zostawiam jednak domoticza bez logowania-nikt w chałupie nie odkryje tajnego/poufne adresu 😀
Dłuższy czas już to działa -podłączę na sztywno głowicę optyczną i dam znać czy jest to gotowe rozwiązanie.
Pora odpocząć po tym maratonie... 😱
Serdecznie dziękuję Migu i Szeryfie
PozdrawlaYou
PS
Isom-postaram się trochę tu posprzątać w tych moich wypocinach , aby było czytelnie
Autor rozsądnie wstawił zadanie do crona wykonywane co 20 minut , bo raz bateria w urządzeniu dwa malina może to łatwo ogarnąć , a to co jest na czerwono to wskazówka co ma być wstawione w tym miejscu , innymi słowy autor mówi wstaw tu lokalizację swojego skryptu. Jeżeli ktoś sobie zapisze ten skrypt np w home/robert/scripts , to na bank nie zadziała mu to /domoticz/plugins/
Swoją drogą wykorzystanie do tego crona to średni pomysł , bo gdy domoticz będzie offline z jakiegoś powodu to dalej ten biedny cron będzie próbował uruchomić ten skrypt obciążając procesor.
Ale to już inna historia . Najważniejsze , że działa
Oj Mistrzunio- a co mi wrzucałeś 😉 ? ...
Też nie zauważyłeś 🤣
A odświeżanie mam co minutę i cpu usage 2,5%. Co do baterii , to mi to lotto-bo idzie po kablu-ale po bateryjce ok.
No i GIT !
Cześć (do następnego razu 😉 )
Witam ,
to może podsumuję to wszystko.
Sprzęt :
-ciepłomierz ultradźwiękowy Kamstrup Multical 402 z portem IR obsługiwanym przez protokół firmowy KMP oraz IEC 61107
-głowica optyczna do liczników Orno OR-WE-518 połączona przewodowo z maliną po USB
IR IEC IEC 62056-21 (dawniej IEC 61107 / IEC 1107)
(W 1997 roku IEC 1107 został przemianowany na IEC 61107 , kiedy wprowadzono nazwy IEC „serii 60000”. I wreszcie IEC 61107 stał się IEC 62056-21 , kiedy kilka norm związanych z inteligentną siecią zostało skonsolidowanych pod parasolem IEC 62056)
-Raspberry 3b+ , SmarticzN ,python 3.7 (seria 3 wymagana dla wtyczki Kamstrupa)
Najpierw należy przetestować komunikację głowicy z ciepłomierzem.
Ściągamy program np RealTerm serial capture program 3.0.1.44 (uwaga inne wersje mogą nie mieć wymaganej obsługi) i konfigurujemy z głowicą.
Zakładka display : zaznaczamy hex+( ) oraz half duplex
zakładka port : burd 1200 , com USB z wpiętą głowicą (z menadżera urządzeń) ,paryti none ,data bits 8 ,stop bits 2 , wciśnięty przycisk open
zakładka send : okno górne np taki zapis testowy 80 3F 10 01 00 3C B2 5F 0D , wciskamy as hex
Głowica musi być zamontowana bardzo dokładnie do portu IR , należy sprawdzić rozstaw diod czy jest podobny, głowica ustawiona dioda ciemna na przeciw diody jasnej (czyli nadajnik do odbiornika). W sieci sa opisy ,że nie które głowice mają zbyt "silny" sygnał IR-cienki papierek między urządzeniami podobno pomaga w tym problemie.
Po wciśnięciu przycisku as hex następuje wyświetlenie na zielono wysłanej informacji , a informacja zwrotna (odpowiedź z ciepłomierza) w kolorze żółtym.
Teraz należy przystąpić do konfiguracji w Domoticzu i malinie.
Najpierw należy pobrać wykaz rejestrów ciepłomierza z poszczególnymi parametrami , poniżej rejestry ściągnięte z mojego ciepłomierza (od 60 do 1004)
CommandNr 60: Heat Energy (E1) 270.96 Gj
CommandNr 80: Power 6.300000000000001 kW
CommandNr 86: Temp1 46.07 C
CommandNr 87: Temp2 42.67 C
CommandNr 89: Tempdiff 3.4 K
CommandNr 74: Flow 1729.0 l/h
CommandNr 68: Volume 19690.79 m3
CommandNr 141: MinFlow_M 0.0 l/h
CommandNr 139: MaxFlow_M 1698.0 l/h
CommandNr 140: MinFlowDate_M 220101.0 yy:mm:dd
CommandNr 138: MaxFlowDate_M 220113.0 yy:mm:dd
CommandNr 145: MinPower_M 0.0 kW
CommandNr 143: MaxPower_M 9.600000000000001 kW
CommandNr 149: AvgTemp1_M 44.0 C
CommandNr 150: AvgTemp2_M 40.0 C
CommandNr 144: MinPowerDate_M 220101.0 yy:mm:dd
CommandNr 142: MaxPowerDate_M 220106.0 yy:mm:dd
CommandNr 126: MinFlow_Y 0.0 l/h
CommandNr 124: MaxFlow_Y 1698.0 l/h
CommandNr 125: MinFlowDate_Y 220101.0 yy:mm:dd
CommandNr 123: MaxFlowDate_Y 220113.0 yy:mm:dd
CommandNr 130: MinPower_Y 0.0 kW
CommandNr 128: MaxPower_Y 9.600000000000001 kW
CommandNr 146: AvgTemp1_Y 44.0 C
CommandNr 147: AvgTemp2_Y 40.0 C
CommandNr 129: MinPowerDate_Y 220101.0 yy:mm:dd
CommandNr 127: MaxPowerDate_Y 220106.0 yy:mm:dd
CommandNr 97: Temp1xm3 850417.0 m3xC
CommandNr 110: Temp2xm3 786411.0 m3xC
CommandNr 113: Infoevent 653.0
CommandNr 1004: HourCounter 72224.0 h
Teraz wrzucamy wtyczkę z github https://github.com/ronaldvdmeer/multical402-4-domoticz
w konsoli maliny wpisujemy
cd domoticz/plugins
następnie git clone https://github.com/ronaldvdmeer/multical402-4-domoticz.git
następnie restart maliny
Można teraz sobie utworzyć wirtualne czujniki w domoticzu z wymaganymi parametrami z ciepłomierza (należy zwrócić uwagę na jednostki z ciepłomierza w etykiecie czujnika) , muszą być aktywne idxy w domoticzu.
Teraz należy skonfigurować skrypt do naszego systemu. W domoticzu nie może być dodatkowego uwierzytelniania do logowania po www (brak loginu i hasła).
Wchodzimy w edycję nano z naszą wtyczką
nano ~/domoticz/plugins/multical402-4-domoticz/multical402-4-domoticz.py
/usr/bin/python3 ~/domoticz/plugins/multical402-4-domoticz/multical402-4-domoticz.py -d /dev/ttyUSB1 --debug --test_kamstrup
ostatnie wartości to idx : nr rejestru w ciepłomierzu :0 (wartość-zostaje 0).
Kiedy już mamy odczytane wartości , to możemy ustawić cykliczne powtarzanie komendy zapisu poniżej 30min
Wchodzimy do crona (opis tu https://linuxhint.com/cron_jobs_complete_beginners_tutorial/ )
crontab -e
wpisujemy żądany okres powtórek oraz komendę
Ja ustawiłem do prób co minutę i był np taki zapis
*/1 * * * * /usr/bin/python3 ~/domoticz/plugins/multical402-4-domoticz/multical402-4-domoticz.py -d /dev/ttyUSB0 115:74:0 114:89:0 113:87:0 112:86:0 111:60:0 110:80:0
To chyba wszystko w tym momencie, aby nie zaśmiecać tematu-będę na bieżąco modyfikował ten post.
Tymczasem
PS
Starałem się to wytłumaczyć , tak jak sam rozumiem na ten moment-nie wszyscy w końcu są informatykami...
Jedna mała uwaga do tego opisu , login i hasło do domoticz może być jak najbardziej aktywne i nawet powinno bo to zabezpiecza wasz system przed atakami z zewnątrz , aby uzyskać ten sam efekt co skasowanie uwierzytelniania, wystarczy w Ustawieniach domoticza zezwolić na logowanie w sieci lokalnej bez hasła.
A jak to fizycznie wygląda-możesz wrzucić sreen ?
Nie jestem pewien , że dobrze zrozumiałem-chodzi tylko o zakładkę ustawienia w domoticzu gdzie trzeba usunąć wpisane dane login i hasło ?
Bo nie mogłem nic innego tam znaleźć , a kiedy wymazałem w/w dane -to wszystko poszło.
O to chodzi ?
Cześć,
sprzętowo wygląda ,że jest ok z tym ciepłomierzem-teraz zastanawiam się nad "obróbką" danych.
Przemyślałem sprawę i rzeczywiście nie ma sensu odświeżać danych ciepłomierza co min-nie znalazłem sposobu ,aby moduł IR ciepłomierza się nie blokował powyżej 30min bezczynności. Aby oszczędzić w nim baterię mogę np ustawić sczytywanie jednego parametru np mocy cieplnej co 28 min.
Dla celów kontrolno-statystycznych chciałbym mieć takie funkcje w domoticzu :
1.chwilowe sprawdzenie COP (tj sprawność pompy ciepła , czyli ilość energii wytworzonej/ilość energii elektrycznej zużytej)
czyli przycisk uruchamia komendę z tego topicu -nie wiem jak to fizycznie zrobić (czy jest funkcja w domoticzu , czy trzeba pisać skrypt ?)
2.regularne sczytywanie w tym samym momencie :
-moc cieplna i moc elektryczna (z mod RTU) na początku każdego miesiąca. I tu wstępnie myślałem o jakiejś tabelce w domoticzu-niestety nic nie znalazłem co by mi pasowało. Pomyślałem zatem o wysłaniu do siebie emaila z tymi danymi- wtedy na piechotę bym te dane notował w exelu. Pytanie jak to fizycznie wykonać ?
Jeśli natomiast udało by się to zautomatyzować w domoticzu w zwartej czytelnej tabelce np rok/miesiąc/SCOP/zużycie energii -to bym był bardzo szczęśliwy.
Z góry dziękuję za pomoc
Cd zmagań...
W topicu o skryptach dzvents jest opis jak zrobić przelicznik COP (Isom).
Teraz chciałbym zrealizować pkt 1 z poprzedniego postu-niestety nie działa mi zasterowanie przełącznikiem (na 1s) odpytania ciepłomierza o moc (dla kontroli COP).Odczyt mocy jest co 28 min ze względu na oszczędność baterii i aby ciepłomierz nie wyszedł z trybu call.
Mam taki błąd po wciśnięciu przycisku
Witam,
zauważyłem ,że od 2 tyg nie odczytują mi się dane z ciepłomierza. Sprawdziłem odczyt wg testu kamstrup-jest ok.
Problem mam z zapisem danych do idx dopmoticza. Co ciekawe tego samego dnia tj 27.08 wrzuciłem u siebie Airly-nie wiem czy to ma związek z tym problemem ,ale zbieżność dat jest wyjątkowa...
Oto dwie komendy z konsoli -test (ok) i zapis do idx (torba) :
pi@smarticz:~ $ /usr/bin/python3 ~/domoticz/plugins/multical402-4-domoticz/multical402-4-domoticz.py -d /dev/ttyUSB1 --debug --test_kamstrup
CommandNr 60: Heat Energy (E1) 310.43 Gj
CommandNr 80: Power 7.800000000000001 kW
CommandNr 86: Temp1 44.53 C
CommandNr 87: Temp2 38.87 C
CommandNr 89: Tempdiff 5.66 K
CommandNr 74: Flow 1219.0 l/h
CommandNr 68: Volume 22107.99 m3
CommandNr 141: MinFlow_M 0.0 l/h
CommandNr 139: MaxFlow_M 1361.0 l/h
CommandNr 140: MinFlowDate_M 220901.0 yy:mm:dd
CommandNr 138: MaxFlowDate_M 220915.0 yy:mm:dd
CommandNr 145: MinPower_M 0.0 kW
CommandNr 143: MaxPower_M 10.4 kW
CommandNr 149: AvgTemp1_M 44.0 C
CommandNr 150: AvgTemp2_M 39.0 C
CommandNr 144: MinPowerDate_M 220901.0 yy:mm:dd
CommandNr 142: MaxPowerDate_M 220915.0 yy:mm:dd
CommandNr 126: MinFlow_Y 0.0 l/h
CommandNr 124: MaxFlow_Y 1783.0 l/h
CommandNr 125: MinFlowDate_Y 220101.0 yy:mm:dd
CommandNr 123: MaxFlowDate_Y 220312.0 yy:mm:dd
CommandNr 130: MinPower_Y 0.0 kW
CommandNr 128: MaxPower_Y 10.5 kW
CommandNr 146: AvgTemp1_Y 43.0 C
CommandNr 147: AvgTemp2_Y 39.0 C
CommandNr 129: MinPowerDate_Y 220101.0 yy:mm:dd
CommandNr 127: MaxPowerDate_Y 220605.0 yy:mm:dd
CommandNr 97: Temp1xm3 955951.0 m3xC
CommandNr 110: Temp2xm3 882593.0 m3xC
CommandNr 113: Infoevent 751.0
CommandNr 1004: HourCounter 78053.0 h
pi@smarticz:~ $ /usr/bin/python3 ~/domoticz/plugins/multical402-4-domoticz/multi cal402-4-domoticz.py -d /dev/ttyUSB1 115:74:0 114:89:0 113:87:0 112:86:0 111:60:0 110:80:0
================================================================================ =======
Kamstrup Multical 402 serial optical data received: 2022-09-19 17:42:52
Meter vendor/type: Kamstrup M402
-------------------------------------------------------------------------------- -------
Heat Energy (E1) 310.43 Gj
Traceback (most recent call last):
File "/home/pi/domoticz/plugins/multical402-4-domoticz/multical402-4-domoticz. py", line 381, in <module>
device_data = json.load(reader(urllib.request.urlopen(requestGet)))
File "/usr/lib/python3.7/urllib/request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.7/urllib/request.py", line 531, in open
response = meth(req, response)
File "/usr/lib/python3.7/urllib/request.py", line 641, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python3.7/urllib/request.py", line 569, in error
return self._call_chain(*args)
File "/usr/lib/python3.7/urllib/request.py", line 503, in _call_chain
result = func(*args)
File "/usr/lib/python3.7/urllib/request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 401: Unauthorized
pi@smarticz:~ $
Nie wiem co z tym zrobić , a nie chciałbym wysadzić systemu-uprzejmie proszę o pomoc.
Pzdr
PS
dodam jeszcze ,że nie mam błędów w logach domoticza
Jest jeszcze kwestia nazwy użytkownika i hasła-wg naszych ustaleń należy mieć logowanie w lokalnej sieci bez hasła.
Czy to oznacza ,że wystarczy w zakładce ustawienia wpisać "prefix" swojej sieci ( u mnie to 192.168.1.*) ?
Ale zabezpieczenie WWW pozostaje z użytkownikiem, hasłem i uwierzytelnieniem ze strony logowania ?
Wyłącz airly to się przekonasz , a odpowiedz na pytanie o zabezpieczenie www już w tym wątku padła
Wyłącz airly to się przekonasz , a odpowiedz na pytanie o zabezpieczenie www już w tym wątku padła
Już to robiłem-nie pomaga ...
Odnośnie hasła , to tylko dla pewności dopytywałem-czyli tak jak ostatnio napisałem jest ok ?
A co ciekawe cron chyba wykonuje komunikację z ciepłomierzem , bo po prawie godzinie jak puszczę test to sczytuje dane.
Tylko zapis do idx nie działa...coś musiałem zrobić , pewnie jakaś "oczywista oczywistość" (lub czeski błąd)
Nie pomaga , bo nie ma związku , tu chodzi o zabezpieczenia , uprawnienia , widać to przecież
urllib.error.HTTPError: HTTP Error 401: Unauthorized
Nie pomaga , bo nie ma związku , tu chodzi o zabezpieczenia , uprawnienia , widać to przecież
urllib.error.HTTPError: HTTP Error 401: Unauthorized
To co może być nie tak-reszta system pracuje prawidłowo
Błąd HTTP 401 Unauthorized (Nieautoryzowany dostęp) oznacza, że strumień danych przesłanych przez klienta (np. przeglądarkę internetową) jest prawidłowy i serwer odczytał go poprawnie, lecz źródło URL wymaga autoryzacji danych użytkownika.
No to gdzie mogą być wpisane dane logowania w sieci lokalnej ?
Chciałeś, żeby Cię nakierować i tak jest , teraz zastanów się co zmieniłeś w systemie w tym czasie od kiedy skrypt przestał poprawnie pracować , dane do logowania są tylko w jednym miejscu i dotyczą ogólnego zabezpieczenia www