Domoticz ciepłomier...
 
Powiadomienia
Wyczyść wszystko

Domoticz ciepłomierz Kamstrup Multical 402

242 Wpisów
3 Użytkownicy
1 Reactions
13.7 K Wyświetleń
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Ciężko się to czyta :)) 

Po pierwsze skrypt używa json do aktualizacji czujników wirtualnych więc poprawny port i  IP powinno zostać zmienione w samym skrypcie , bo inaczej nawet test domoticza nie przejdzie gdyż wymaga takiego ciągu

requestGet  = ( "http://"  +  str ( domoip ) +  ":"  +  str ( domoport ) +  "/json.htm?type=devices" )

Po drugie w domoticz należy ustawić logowanie bez hasła w sieci lokalnej i hasło może sobie zostać bo będzie używane tylko do połaczeń z zewnątrz

Po trzecie jeśli w jednym poleceniu mają być aktualizowane dwa lub więcej czujników to w poleceniu odzielamy te dane przecinkami czyli np

python3 multical402-4domoticz.py /dev/ttyUSB0 42:60:2:44,43:60:1:44,44:60:0

Po czwarte nie należy przesadzać z ilością danych w jednym poleceniu , ponieważ może to się skończyć niepełnym odczytem 

Powodzenia 

 
Dodane : 19/01/2022 8:53 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

jest tak

{
	"status" : "OK",
	"title" : "Update Device"
}
 
Dodane : 19/01/2022 8:54 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 
Dodane przez: @bobrow

jest tak

{
	"status" : "OK",
	"title" : "Update Device"
}

To było do przewidzenia :)))

 
Dodane : 19/01/2022 8:58 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

Isom,

dodałem logowanie w skrypcie, mam tylko 6 rejestrów, dodam przecinki

 
Dodane : 19/01/2022 8:58 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

To wstaw tu  ten fragment skryptu z tym logowaniem , tylko nie polecenie , które wklejasz w terminalu, a kawałek skryptu po edycji , bo samo polecenie tylko uruchamia ten skrypt 

 
Dodane : 19/01/2022 9:02 pm
(@mig41)
Wpisów: 621
Ekspert
 
Dodane przez: @isom
Dodane przez: @bobrow

jest tak

{
	"status" : "OK",
	"title" : "Update Device"
}

To było do przewidzenia :)))

No nie dla mnie , bo a wcale pewności nie miałem ,czy @bobrow ip i port podawał prawidłowy , mimo ,że tak twierdził 🙂

A z tymi przecinkami , oby to było to , bo na stronie git  we wisie do crona tych przecinków tam nie ma...

 
Dodane : 19/01/2022 9:06 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

przecinek nie działa...

Error! make sure to format your values correctly!

 
Dodane : 19/01/2022 9:08 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@bobrow gdzie ten fragment skryptu ? Nie pisz, że coś nie działa jak nic nie działa . Test domoticza działa ? tam nie potrzeba przecinków 

 
Dodane : 19/01/2022 9:12 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

tu port

parser.add_argument("--port", type=int, help="Domoticz port. Defaults to 8082", default=8082)

tu logowanie

requestGet = ( "http://.....:......." + str(domoip) + ":" + str(domoport) + "/json.htm?type=devices" )

pierwsze kropki login , drugie hasło , w środku bez spacji :

chyba 5 czy 6 razy to występuje

 
Dodane : 19/01/2022 9:12 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

test domoticza z ciepłomierzem

pi@smarticz:~ $ /usr/bin/python3 ~/domoticz/plugins/multical402-4-domoticz/multi                                                                                                                                                             cal402-4-domoticz.py -d /dev/ttyUSB0 --ip 192.168.1.50 --port 8082 --verbose --d                                                                                                                                                             ebug --test_domoticz
Traceback (most recent call last):
  File "/usr/lib/python3.7/urllib/request.py", line 1324, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/usr/lib/python3.7/http/client.py", line 1260, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1306, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1255, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.7/http/client.py", line 1030, in _send_output
    self.send(msg)
  File "/usr/lib/python3.7/http/client.py", line 970, in send
    self.connect()
  File "/usr/lib/python3.7/http/client.py", line 942, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "/usr/lib/python3.7/socket.py", line 707, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/usr/lib/python3.7/socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "/home/pi/domoticz/plugins/multical402-4-domoticz/multical402-4-domoticz.                                                                                                                                                             py", line 340, in <module>
    domo_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 525, in open
    response = self._open(req, data)
  File "/usr/lib/python3.7/urllib/request.py", line 543, in _open
    '_open', req)
  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 1352, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "/usr/lib/python3.7/urllib/request.py", line 1326, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno -2] Name or service not known>
pi@smarticz:~ $

tak jak wcześnie

 
Dodane : 19/01/2022 9:15 pm
(@mig41)
Wpisów: 621
Ekspert
 

po co wy chcecie skrypt edytować , skoro do ip i portu  są odpowiednie parametry w składni do podania , a loginu i hasła już nie ma..

 
Dodane : 19/01/2022 9:16 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

A jak wyglada dowolny json z loginem i hasłem ? Dla ułatwienia masz tu link żebyś miał gdzie sprawdzić https://www.domoticz.com/wiki/Domoticz_API/JSON_UR L's

 
Dodane : 19/01/2022 9:17 pm
(@mig41)
Wpisów: 621
Ekspert
 

loginu i hasła już nie ma dla ułatwienia , co nawet przewidziałeś ?

 
Dodane : 19/01/2022 9:21 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

Nie wiem jak się tam poruszać...

 
Dodane : 19/01/2022 9:22 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 
Dodane przez: @marcingajda

po co wy chcecie skrypt edytować , skoro do ip i portu  są odpowiednie parametry w składni do podania , a loginu i hasła już nie ma..

Po to

1

 

 
Dodane : 19/01/2022 9:25 pm
(@mig41)
Wpisów: 621
Ekspert
 

@isom do jakiejś starszej wersji skryptu się dokopałeś , aktualna jest tutaj:

https://github.com/ronaldvdmeer/multical402-4-domoticz

Nie ma już przecinków , a ip i port nie edytuje się w skrypcie tylko podaje w parametrach komendy...

 
Dodane : 19/01/2022 9:28 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Nie jestem tego tak pewny jak ty

2

 

 
Dodane : 19/01/2022 9:36 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

Słuchajcie -a może ma być po http ip i port ?

"http://192.168.2.113:7080/json.htm?type=command&param

 
Dodane : 19/01/2022 9:39 pm
(@mig41)
Wpisów: 621
Ekspert
 

A możesz być bardziej pomocny i podać link , a nie tylko prindscreena i to pozcinanego?

 
Dodane : 19/01/2022 9:40 pm
(@bobrow)
Wpisów: 387
Weteran
Autor tematu
 

ten fragment jest chyba kluczowy -rozwaliło trochę...ale tak może przy http login i hasło , a przy json ip i port ?

requestGet = ( "http://" + str(domoip) + ":" + str(domoport) + "/json.htm?type=devices&rid=" + str(idx) )
  device_data = json.load(reader(urllib.request.urlopen(requestGet)))
 
Dodane : 19/01/2022 9:41 pm
Strona 9 / 13
Udostępnij: