Acties:
  • 0 Henk 'm!

  • Twanniej
  • Registratie: Februari 2011
  • Niet online
Waar ik ook benieuwd naar ben, ik wil de ICS-2000 gaan gebruiken met siri/ homekit.
Dit wil ik gaan proberen met Triggi en homebridge, iemand hier al ervaring mee? Of wellicht een andere manier om dit voor elkaar te krijgen?
En is er belangstelling naar dat ik een tutorial schrijf als ik het draaiend heb?

Acties:
  • 0 Henk 'm!

  • MeShell
  • Registratie: Juni 2009
  • Laatst online: 23:13
Zeker belangstelling voor!

www.MEPS-Sim.com - SimRacing immersion made easy!


Acties:
  • 0 Henk 'm!

  • Dick99999
  • Registratie: December 2004
  • Laatst online: 19-07 09:26
Nu Kaku de ICS-2000 API aan Olisto/Triggi heeft gegeven, hoop ik dat Kaku zal beseffen dat ze die API ook voor hun klanten beschikbaar moeten gaan maken. Of verdienen ze soms meer aan Triggi dan aan ons? Zij hadden de juiste keuze gemaakt vond ik: de consument kon kiezen: lokaal en/of cloud. Maar nu is het met Olisto/Triggi weer alleen de cloud. En dat wil ik in ieder geval niet.

Ik heb een ander soort "API", zeg maar koppeling met de 2000 op het oog. Het is nog niet geheel af maar lijkt goed te werken: een €55 RFlink, een Pi3 met Home Assistant (HAS) die met de 2000 zal praten alsof een toets op een Kaku afstand bediening wordt ingedrukt.
Mijn eerste indruk: Kaku wint het wat betreft de gebruiksinterface. HAS wint op de vele functionele mogelijkheden en vooral ook wat betreft het mixen van merken: Kaku, HomeEasy, Smartwares (en Action?) vormen geen enkel probleem.

Acties:
  • 0 Henk 'm!

Anoniem: 1131125

Is er al enige vooruitgang in het ICS-2000 API onderwerp?

Waar staat API voor of is dat gewoon de naam

Ps, ik ben 16 dus weet niet zoveel van dit gebied wel zeer geintereseert

Acties:
  • 0 Henk 'm!

Anoniem: 1146273

Heeft iemand nog nieuws over dit onderwerp.

@rutgerdegraaf ben vooral benieuwd of je al wat meer documentatie hebt van je script. Ziet er veelbelovend uit !

Acties:
  • 0 Henk 'm!

  • hvdkooij
  • Registratie: November 2017
  • Laatst online: 30-04 14:55
Heeft iemand al eens gekeken of het via de omweg Olisto wel te doen is?

Acties:
  • 0 Henk 'm!

  • pauldirkson
  • Registratie: Mei 2005
  • Laatst online: 26-06 11:55
Is het hier iemand al gelukt om de ICS-2000 via de API te koppelen aan HomeAssistant?
Olisto schijnt dit wel als wensenlijst te hebben om deze koppeling uiteindelijk te realiseren.
https://forum.olisto.com/t/koppeling-home-assistant/460/4

Acties:
  • +2 Henk 'm!

  • BJD
  • Registratie: Februari 2003
  • Laatst online: 06-03 16:56

BJD

Ik heb zelf een ICS-2000 en wil deze graag aan OpenHAB koppelen. Bij voorkeur zonder extra Olisto webhook achtige praktijken. Bij Trust/KAKU geven ze niet thuis en lijken ze vooral zelfvoldaan te zijn van hun Olisto samenwerking :X Gisterenavond ben ik even in hun protocol gedoken, doormiddel van een decompile van de Android APK. Hierdoor heb ik een redelijk beeld gekregen van hoe hun messages zijn opgebouwd. Op basis hiervan heb ik een Wireshark dissector (LUA) gemaakt, waarmee het protocol gedecode kan worden.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
-- TRUST protocol
-- by BJD 2019
trust_proto = Proto("trust","Trust Smart Home")
-- create a function to dissect it
function trust_proto.dissector(buffer,pinfo,tree)
    pinfo.cols.protocol = "TRUST"
    local subtree = tree:add(trust_proto,buffer(),"Trust Smart Home Protocol Data")
    subtree:add(buffer(0,1),"FrameNumber " .. buffer(0,1):uint())
    subtree:add(buffer(1,1),"SegmentNumber " .. buffer(1,1):uint())
--  subtree:add(buffer(2,1),"MessageType " .. buffer(2,1):uint())
    local typetext = ""
    local typeint = buffer(2,1):uint()
    if     typeint == 0 then typetext = "INVALID"
    elseif typeint == 1 then typetext = "COMMANDS_AVAILABLE"
    elseif typeint == 2 then typetext = "EVENT_NOTIFICATION"
    elseif typeint == 3 then typetext = "ANNOUNCEMENT"
    elseif typeint == 4 then typetext = "DEVICE_LINK_REQUEST"
    elseif typeint == 5 then typetext = "DEVICE_LINK_RESPONSE"
    elseif typeint == 6 then typetext = "GET_DEVICE_TIME"
    elseif typeint == 10 then typetext = "URL_REDIRECT"
    elseif typeint == 11 then typetext = "SYNC_ALL_DATA"
    elseif typeint == 12 then typetext = "STOP_SYNC_ALL_DATA"
    elseif typeint == 16 then typetext = "GET_DEVICE_INFO"
    elseif typeint == 17 then typetext = "UPDATE_USER_SETTINGS"
    elseif typeint == 18 then typetext = "GET_USER_SETTINGS"
    elseif typeint == 19 then typetext = "LOCAL_ENERGY_PRODUCTION"
    elseif typeint == 20 then typetext = "WEATHER_INFORMATION"
    elseif typeint == 21 then typetext = "VERSION_CHECK"
    elseif typeint == 22 then typetext = "GET_VERSION_LIST"
    elseif typeint == 23 then typetext = "VERSION_LIST"
    elseif typeint == 128 then typetext = "CONTROL_ENTITY"
    elseif typeint == 129 then typetext = "CREATE_ENTITY"
    elseif typeint == 130 then typetext = "DELETE_ENTITY"
    elseif typeint == 131 then typetext = "UPDATE_ENTITY"
    elseif typeint == 132 then typetext = "GET_ENTITY_STATUS"
    elseif typeint == 133 then typetext = "LIST_NEW_ENTITIES"
    elseif typeint == 134 then typetext = "GET_DATA_ENTITIES"
    elseif typeint == 135 then typetext = "LEARN_MODULE"
    elseif typeint == 136 then typetext = "GET_868_STATES"
    elseif typeint == 137 then typetext = "IDENTIFY_ZIGBEE"
    elseif typeint == 138 then typetext = "UPDATE_ZIGBEE"
    elseif typeint == 144 then typetext = "CONTROL_ZIGBEE"
    elseif typeint == 145 then typetext = "RESET_ZIGBEE"
    elseif typeint == 176 then typetext = "FIRMWARE_AVAILABLE"
    elseif typeint == 178 then typetext = "BACKUP_SYNC_START"
    elseif typeint == 179 then typetext = "BACKUP_SYNC_COMPLETE"
    elseif typeint == 180 then typetext = "REMOTE_REBOOT"
    elseif typeint == 91 then typetext = "FACTORY_DEFAULT_RESET_NOTIFICATION"
    elseif typeint == 251 then typetext = "REQUEST_NEXT_DATA_FRAME"
    elseif typeint == 252 then typetext = "ACKNOWLEDGE"
    elseif typeint == 253 then typetext = "NOT_ACKNOWLEDGE"
    elseif typeint == 254 then typetext = "NO_COMMANDS_AVAILABLE"
    end
    subtree:add(buffer(2,1),"MessageType " .. typeint .. " - " .. typetext)
    subtree:add(buffer(3,6),"MacAddressBytes " .. tostring(buffer(3,6):ether()))
    subtree:add(buffer(9,4),"MagicNumber " .. buffer(9,4):le_uint())
    subtree:add(buffer(13,2),"GlobalVersion " .. buffer(13,2):le_uint())
    subtree:add(buffer(15,2),"SettingsVersion " .. buffer(15,2):le_uint())
    subtree:add(buffer(17,2),"DeviceStateVersion " .. buffer(17,2):le_uint())
    subtree:add(buffer(19,2),"DeviceDataVersion " .. buffer(19,2):le_uint())
    subtree:add(buffer(21,2),"AreaDataVersion " .. buffer(21,2):le_uint())
    subtree:add(buffer(23,2),"RuleStateVersion " .. buffer(23,2):le_uint())
    subtree:add(buffer(25,2),"RuleDataVersion " .. buffer(25,2):le_uint())
    subtree:add(buffer(27,2),"SceneDataVersion " .. buffer(27,2):le_uint())
    subtree:add(buffer(29,4),"EntityId " .. buffer(29,4):le_uint())
    subtree:add(buffer(33,2),"SmartDeviceId " .. buffer(32,2):le_uint())
    subtree:add(buffer(37,4),"EntityTrackerID " .. buffer(37,4):le_uint())
    subtree:add(buffer(41,2),"DataLength " .. buffer(41,2):le_uint())
    local dleng = buffer(41,2):le_uint()
    subtree:add(buffer(43,dleng),"Data " .. tostring(buffer(43,dleng):bytes()))
end
-- load the udp.port table
udp_table = DissectorTable.get("udp.port")
-- register our protocol to handle udp port 2012
udp_table:add(2012,trust_proto)


Helaas gebruikt Trust AES encryptie voor de data van hun Messages. Het is mij nog niet gelukt om deze key te achterhalen voor mijn omgeving. Mogelijk dat deze in de cloud is opgeslagen / in de Android Keystore staat. Hierin haakt de decompiler ook af, dus ik weet niet of het lukt hier goed achter te komen. De encryptie / decryptie routines heb ik al wel gevonden, evenals de routines die de payload genereren (JSON).

Anyway: ook zonder decryptie is er wel goed nieuws: door simpelweg losse commando's die lokaal vanuit de app zijn gestuurd op te vangen en deze in een nieuw UDP pakketje te gieten en te verzenden, is het mogelijk om lampen aan te sturen. Hiervoor mirror ik de poort van de switch waar de ICS-2000 op is aangesloten en gebruik ik WireShark om het verkeer te analyseren. Door bijvoorbeeld een lamp uit te schakelen, dit pakket op te vangen (udp.dstport == 2012) en vervolgend de gehele UDP payload opnieuw te versturen, wordt steeds de betreffende lamp uitgeschakeld. Dit kan ook door bijvoorbeeld een dimmer op 0,20,40,60,80 en 100% in te stellen en de 5 commando's op te vangen. Door de betreffende commando's opnieuw te verzenden, kun je je lampen op een bepaalde waarde krijgen. Traploos dimmen vanaf Domotics/OpenHAB kan dus helaas niet.

Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Vanochtend maar even proberen de app te reverse engineren, en met succes!

https://documenter.getpostman.com/view/10414265/SzzheeBJ?version=latest

https://github.com/Stijn-Jacobs/ICS2000

Op mijn github vind je de tool waarmee je de encryptie kan decrypten als je je eigen AES token hebt gekregen via postman.

Ook kan je met die java tool commands maken, om je lampen aan of uit te zetten.

Om een simpel voorbeeld werken te krijgen moet je het volgende doen:
- Create account for uuid request, hiermee maak je een user aan vul een random uuid in
- Inloggen request, hiermee krijg je jou AES token, die je kan gebruiken om te decrypten of je eigen command te encrypten.
- Get devices request, hiermee krijg je een lijst van al jou apparaten. Hier staan nog geen namen oid bij, door hem in de printDevices methode te stoppen decrypt hij alle namenen info, en krijg je te zien welk apparaat bij welk id hoort.
- generateMessage aanpassen zodat er een kloppen mac adres, AES key en lamp id in zit. Als je die runt krijg je een command string.
- Verstuur een request send command, met jou gegenereerde command en als alles goed is gegaan moet je lamp oid aan gaan.

Nu ook simpelere in simpelere Python vorm: https://github.com/Stijn-Jacobs/ICS2000-Python

[ Voor 6% gewijzigd door ThunderTNT op 18-06-2020 23:19 ]


Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
rutgerdegraaf schreef op maandag 1 januari 2018 @ 22:55:
Voor iedereen die het leuk vindt om met de P1 port van de ICS-2000 te spelen heb ik een Git repo (https://github.com/rdegraafwhizzkit/ics2000) aangemaakt met code die deze via de TrustSmartCloud2 API kan uitlezen. De huidige commit schrijft naar ElasticSearch en MySQL weg. Documentatie volgt!
Is er al ergens documentatie? Kan ik hiermee opdrachten geven aan de ics-2000 of hem allleen uitlezen?

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ThunderTNT schreef op zondag 14 juni 2020 @ 20:59:
Ook kan je met die java tool commands maken, om je lampen aan of uit te zetten.

Nu ook simpelere in simpelere Python vorm: https://github.com/Stijn-Jacobs/ICS2000-Python
Is het ook mogelijk om hiermee (zigbee) lampen te dimmen, van kleur te veranderen en de status uit te lezen van de water-, de rook-, de koolmonoxide-, temperatuurmelder? Ook voor de beveiligings-onderdelen?
En zou het mogelijk zijn de status van de verlichting uit te lezen (Google Home kan dit doen bij de ICS-2000, vraag maar eens "is de ruimte aan?" (Ipv ruimte zeg je bv huiskamer)

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 2 juli 2020 @ 22:57:
[...]


Is het ook mogelijk om hiermee (zigbee) lampen te dimmen, van kleur te veranderen en de status uit te lezen van de water-, de rook-, de koolmonoxide-, temperatuurmelder? Ook voor de beveiligings-onderdelen?
En zou het mogelijk zijn de status van de verlichting uit te lezen (Google Home kan dit doen bij de ICS-2000, vraag maar eens "is de ruimte aan?" (Ipv ruimte zeg je bv huiskamer)
Ik heb zelf alleen wat simpele dimmers en schakelaars tot mijn beschikking. Ik weet niet of zigbee wel feedback leverd. Maar met de gewone schakelaars kan je volgensmij geen feedback uitlezen. Voorderest kan je alles wat via de app kan reverse engineeren. Ik kan je in dm wel verder helpen met het verder reversen van bijv koolstofmonoxide melder.
Verder kan je zigbee lampen inderdaad van kleur veranderen en dimmen hoe je wilt, ik bezit ze zelf alleen niet. Dus kan het niet testen.
Maar als Google Home de status kan uitlezen, moet het ook te reversen zijn.

Het enige wat je eigenlijk hoeft te doen is achter de json payload te komen waarmee je bijv kleur veranderd. Door bijvoorbeeld de app te reverse engineeren. Of een request opvangen en die te decrypten via mijn library.
Als je daar eenmaal achter bent is het makkelijk een command te versturen naar de ics 2000 met bijv mijn library.

[ Voor 13% gewijzigd door ThunderTNT op 03-07-2020 00:59 ]


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 2 juli 2020 @ 22:57:
[...]


Is het ook mogelijk om hiermee (zigbee) lampen te dimmen, van kleur te veranderen en de status uit te lezen van de water-, de rook-, de koolmonoxide-, temperatuurmelder? Ook voor de beveiligings-onderdelen?
En zou het mogelijk zijn de status van de verlichting uit te lezen (Google Home kan dit doen bij de ICS-2000, vraag maar eens "is de ruimte aan?" (Ipv ruimte zeg je bv huiskamer)
Heb nu ook status pakken van lampen status geimplementeerd in mijn library
https://github.com/Stijn-Jacobs/ICS2000-Python :)

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ThunderTNT schreef op zaterdag 4 juli 2020 @ 01:06:
[...]


Heb nu ook status pakken van lampen status geimplementeerd in mijn library
https://github.com/Stijn-Jacobs/ICS2000-Python :)
Heb je misschien een voorbeeld (programmaatje) hoe met jouw library om kan gaan, als in ket probeer krijg ik alleen "NameError: name 'hub' is not defind" :?

Problems don't exist, only challenges


Acties:
  • +1 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op woensdag 22 juli 2020 @ 18:49:
[...]


Heb je misschien een voorbeeld (programmaatje) hoe met jouw library om kan gaan, als in ket probeer krijg ik alleen "NameError: name 'hub' is not defind" :?
Makkelijkste is het openen in pycharm, en dan onderaan de Core.py je eigen code even tijdelijk erneer te zetten.

code:
1
hub = hub("Mac address of ics2000", "email", "password")


dan krijg je lijst te zien van alle apparaten aangesloten met id's

code:
1
hub.turnon(<id of device to turn on>)



Of in Python console in pycharm gaan

code:
1
from Core import *


En dan dezelfde 2 bovenstaande commands

[ Voor 11% gewijzigd door ThunderTNT op 22-07-2020 19:01 ]


Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Dank je, ik heb het nu aan het werk, moest nog even wat modules installeren.
En in Python3 zelf moet je je het volgende doen om het werkend te maken
In de map met gedownloade code:
code:
1
python3 ./setup.py install


Daarna kan je het uitvoeren op de volgende manier:
code:
1
2
3
4
5
python3
from ics2000.Core import *
hub = hub("Mac address of ics2000", "email", "password")
hub.turnon(<id of device to turn on>)
hub.turnoff(<id of device to turn on>)


Krijg alleen op dit moment de Status-vraag en de dim-waarde nog niet aan de praat.

Hoe ben je trouwens achter de juiste url's gekomen om een lamp aan/uit te zetten en hoe de status op te vragen?

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 20:15:
Dank je, ik heb het nu aan het werk, moest nog even wat modules installeren.
En in Python3 zelf moet je je het volgende doen om het werkend te maken
In de map met gedownloade code:
code:
1
python3 ./setup.py install


Daarna kan je het uitvoeren op de volgende manier:
code:
1
2
3
4
5
python3
from ics2000.Core import *
hub = hub("Mac address of ics2000", "email", "password")
hub.turnon(<id of device to turn on>)
hub.turnoff(<id of device to turn on>)


Krijg alleen op dit moment de Status-vraag en de dim-waarde nog niet aan de praat.

Hoe ben je trouwens achter de juiste url's gekomen om een lamp aan/uit te zetten en hoe de status op te vragen?
Eerst met proxy geprobeerd maar dat wilde niet echt vlotten, toen maar de app gedecompiled. Daarin waren ze makkelijk te vinden. Dim waarde is tussen de 1 en 15, misschien dat je daar geen rekening mee hebt gehouden?

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ThunderTNT schreef op donderdag 23 juli 2020 @ 20:22:
[...]


Eerst met proxy geprobeerd maar dat wilde niet echt vlotten, toen maar de app gedecompiled. Daarin waren ze makkelijk te vinden. Dim waarde is tussen de 1 en 15, misschien dat je daar geen rekening mee hebt gehouden?
Dat deed ik inderdaad fout, als ik het echter probeer nu met een waarde van 10, lukt het nog niet krijg de volgende error:

code:
1
2
3
4
>>> hub.dim(30764413,10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Hub' object has no attribute 'dim'


En die fout krijg ik ook bij de status:
code:
1
2
3
4
>>> hub.getlampstatus(21149486)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Hub' object has no attribute 'getlampstatus'


En is het mogelijk het type in de lijst erbij te zetten?
bv zo:
code:
1
Spot Foto's : 21149486 [Dim]

Voor een dimbare lamp?

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 20:28:
[...]


Dat deed ik inderdaad fout, als ik het echter probeer nu met een waarde van 10, lukt het nog niet krijg de volgende error:

code:
1
2
3
4
>>> hub.dim(30764413,10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Hub' object has no attribute 'dim'


En die fout krijg ik ook bij de status:
code:
1
2
3
4
>>> hub.getlampstatus(21149486)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Hub' object has no attribute 'getlampstatus'


En is het mogelijk het type in de lijst erbij te zetten?
bv zo:
code:
1
Spot Foto's : 21149486 [Dim]

Voor een dimbare lamp?
Ik denk dat python de hub methode pakt ipv je variable. Ik zal die methode even renamen naar get_hub haha.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ThunderTNT schreef op donderdag 23 juli 2020 @ 20:36:
[...]


Ik denk dat python de hub methode pakt ipv je variable. Ik zal die methode even renamen naar get_hub haha.
Ik heb het al even anders geprobeerd, maar helaas

code:
1
2
3
4
5
6
kaku = hub("MA:C0:AD:RE:S0:00", "mijn@ema.il", "Pa55W0rd")

>>> kaku.dim(30764413,10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Hub' object has no attribute 'dim'

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 20:42:
[...]


Ik heb het al even anders geprobeerd, maar helaas

code:
1
2
3
4
5
6
kaku = hub("MA:C0:AD:RE:S0:00", "mijn@ema.il", "Pa55W0rd")

>>> kaku.dim(30764413,10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Hub' object has no attribute 'dim'
Hm dit is heel raar heb het nog even locaal getest en daar werkt het gewoon. Precies zoals jij het hebt gedaan. Heb je Python 3?

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ja,
code:
1
2
3
4
>>> import sys
>>> print(sys.version)
3.8.2 (default, Apr 27 2020, 15:53:34) 
[GCC 9.3.0]

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Ik denk dat ik er morgen of na het weekend maar weer eens rustig naar ga kijken, krijg nu steeds errors.
Kan nu de lijst niet eens meer laden (ics2000 0.0.8)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Logging in user
Succesfully got AES key
ValueError: 35 is not a valid DeviceType
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.8/code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 165, in get_hub
    return Hub(mac, email, password)
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 25, in __init__
    self.pulldevices()
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 54, in pulldevices
    dev = DeviceType(decrypted["device"])
  File "/usr/lib/python3.8/enum.py", line 304, in __call__
    return cls.__new__(cls, value)
  File "/usr/lib/python3.8/enum.py", line 595, in __new__
    raise exc
  File "/usr/lib/python3.8/enum.py", line 579, in __new__
    result = cls._missing_(value)
  File "/usr/lib/python3.8/enum.py", line 608, in _missing_
    raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 35 is not a valid DeviceType

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 21:18:
Ik denk dat ik er morgen of na het weekend maar weer eens rustig naar ga kijken, krijg nu steeds errors.
Kan nu de lijst niet eens meer laden (ics2000 0.0.8)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Logging in user
Succesfully got AES key
ValueError: 35 is not a valid DeviceType
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.8/code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 165, in get_hub
    return Hub(mac, email, password)
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 25, in __init__
    self.pulldevices()
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 54, in pulldevices
    dev = DeviceType(decrypted["device"])
  File "/usr/lib/python3.8/enum.py", line 304, in __call__
    return cls.__new__(cls, value)
  File "/usr/lib/python3.8/enum.py", line 595, in __new__
    raise exc
  File "/usr/lib/python3.8/enum.py", line 579, in __new__
    result = cls._missing_(value)
  File "/usr/lib/python3.8/enum.py", line 608, in _missing_
    raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 35 is not a valid DeviceType
Het kan een 35 een device id is maar dat ik die niet geimplementeerd heb, heb alleen dimmer switch en lamp geimplementeerd omdat ik die aan mijn kaku systeem heb hangen. Als je een beetje ervaring hebt met python kan je het beste zelf even kijken hoe het allemaal in elkaar zit, en zelf wat dingen aanpassen.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Ik heb wel een beetje ervaring met Python, maar dat het is al een tijd terug dat ik er actief mee bezig ben geweest, zal er dan weer eens in moeten duiken.

Ik heb inderdaad welk wat meer dingen aan mijn ICS2000 hangen:
  • Hue lampen (warm-koud wit/kleur)
  • Schemerschakelaars
  • Zigbee temperatuur/luchtvochtigheidsmeters
  • Gewone schakelaars (433Mhz)
  • Zigbee afstandsbedieningen
Het vage is dat hij het eerst wel deed en netjes alles in de lijst toonde wat ik heb hangen.

Hoe zou ik trouwens het makkelijkst de juiste url's (en antwoord) kunnen achterhalen voor bv de temperatuursensors?

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 21:45:
Ik heb wel een beetje ervaring met Python, maar dat het is al een tijd terug dat ik er actief mee bezig ben geweest, zal er dan weer eens in moeten duiken.

Ik heb inderdaad welk wat meer dingen aan mijn ICS2000 hangen:
  • Hue lampen (warm-koud wit/kleur)
  • Schemerschakelaars
  • Zigbee temperatuur/luchtvochtigheidsmeters
  • Gewone schakelaars (433Mhz)
  • Zigbee afstandsbedieningen
Het vage is dat hij het eerst wel deed en netjes alles in de lijst toonde wat ik heb hangen.

Hoe zou ik trouwens het makkelijkst de juiste url's (en antwoord) kunnen achterhalen voor bv de temperatuursensors?
Het is allemaal wss dezelfde url's, ik gok dat je de kleur status ook met dezelfde call kan krijgen als dat ik nu voor lamp status gebruik. Moet je even de hele gedecrypte output printen die je krijgt van de status call.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
zoiets:

code:
1
{'module': {'id': 16824175, 'version': 133, 'name': 'Zigbee lamp RGB (kleuren)', 'device': 35, 'info': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'smd_info': {'group': 0, 'group-type': 0, 'hidden': False, 'disabled': False, 'smd_version': 0}}}


Het aparte is dat ik in de app nergens een lamp met de naam "Zibee lamp RGB (kleuren)" tegenkom.

[ Voor 15% gewijzigd door Joop Visstick op 23-07-2020 22:01 ]

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 21:57:
zoiets:

code:
1
{'module': {'id': 16824175, 'version': 133, 'name': 'Zigbee lamp RGB (kleuren)', 'device': 35, 'info': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'smd_info': {'group': 0, 'group-type': 0, 'hidden': False, 'disabled': False, 'smd_version': 0}}}
Dat is niet de raw response toch?
Probeer het eens hier te printen https://i.imgur.com/0a24HjC.png

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ThunderTNT schreef op donderdag 23 juli 2020 @ 22:02:
[...]

Dat is niet de raw response toch?
Probeer het eens hier te printen https://i.imgur.com/0a24HjC.png
Dat werkt helaas niet, krijg dan de een andere error:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Succesfully got AES key
ValueError: 35 is not a valid DeviceType

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 168, in get_hub
    return Hub(mac, email, password)
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 25, in __init__
    self.pulldevices()
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 56, in pulldevices
    dev = DeviceType(decrypted["device"])
  File "/usr/lib/python3.8/enum.py", line 304, in __call__
    return cls.__new__(cls, value)
  File "/usr/lib/python3.8/enum.py", line 595, in __new__
    raise exc
  File "/usr/lib/python3.8/enum.py", line 579, in __new__
    result = cls._missing_(value)
  File "/usr/lib/python3.8/enum.py", line 608, in _missing_
    raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 35 is not a valid DeviceType


Regel 4 is er nu bijgekomen :'(

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 22:10:
[...]


Dat werkt helaas niet, krijg dan de een andere error:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Succesfully got AES key
ValueError: 35 is not a valid DeviceType

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 168, in get_hub
    return Hub(mac, email, password)
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 25, in __init__
    self.pulldevices()
  File "/home/pi/KaKu-Python/ICS2000-Python-master/ics2000/Core.py", line 56, in pulldevices
    dev = DeviceType(decrypted["device"])
  File "/usr/lib/python3.8/enum.py", line 304, in __call__
    return cls.__new__(cls, value)
  File "/usr/lib/python3.8/enum.py", line 595, in __new__
    raise exc
  File "/usr/lib/python3.8/enum.py", line 579, in __new__
    result = cls._missing_(value)
  File "/usr/lib/python3.8/enum.py", line 608, in _missing_
    raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 35 is not a valid DeviceType


Regel 4 is er nu bijgekomen :'(
Je kan de pulldevices call vanuit de constructor van hub er even uithalen, dan krijg je die error iig niet meer.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Gelukt :)

code:
1
2
3
>>> hub.getlampstatus(16824175)

[{"id":16824175,"data_version":133,"data":"Va7hT88zY1dMNkwUNaIqVmL174nvK4pNom1VyGPZKzlckbUOAyxZlTPihmQo7p458BRNPpgGpjB2PlaKiOv0HWtjJZJDGhaCMeugSZd1a6uFGrMYe6bfN6auBFWUPGxsZHIFPBZ2MnwNpcdUY7+eOJhMYn1RY7YRd2zCyGQjkObCdgjKAqAn3Zh0IK\/8mHM85QL0v\/fl6ozCnw1qGDWpTJ6HNmz3swkDHTwUa0GQS9Mcoe+ZSsHskgI9mr1d057QMHuKP4UVa8m8fbThPLKPHNtzoP+iwqeSVjqKQ4mmjDFfDmyu1cs6ACfByBuMPSxd","status_version":0,"status":null}]

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 22:17:
Gelukt :)

code:
1
2
3
>>> hub.getlampstatus(16824175)

[{"id":16824175,"data_version":133,"data":"Va7hT88zY1dMNkwUNaIqVmL174nvK4pNom1VyGPZKzlckbUOAyxZlTPihmQo7p458BRNPpgGpjB2PlaKiOv0HWtjJZJDGhaCMeugSZd1a6uFGrMYe6bfN6auBFWUPGxsZHIFPBZ2MnwNpcdUY7+eOJhMYn1RY7YRd2zCyGQjkObCdgjKAqAn3Zh0IK\/8mHM85QL0v\/fl6ozCnw1qGDWpTJ6HNmz3swkDHTwUa0GQS9Mcoe+ZSsHskgI9mr1d057QMHuKP4UVa8m8fbThPLKPHNtzoP+iwqeSVjqKQ4mmjDFfDmyu1cs6ACfByBuMPSxd","status_version":0,"status":null}]
Hm, het gebruikt dus niet dezelfde soort requests als normale lamp. Normaal staat de info in status maar die is in dit geval null. Ik zal binnenkort even kijken of ik achter de juiste url en request kan komen.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Ok alvast bedankt voor alle hulp.

Is het niet mogelijk om de pulldevices aan te passen zodat hij onbekende DeviceTypes niet probeerd te linken aan een bekende soort, maar in plaats daarvan print met de code van DeviceType (nu hier 35)

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op donderdag 23 juli 2020 @ 22:23:
Ok alvast bedankt voor alle hulp.

Is het niet mogelijk om de pulldevices aan te passen zodat hij onbekende DeviceTypes niet probeerd te linken aan een bekende soort, maar in plaats daarvan print met de code van DeviceType (nu hier 35)
Heb het geupdate

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Ik had even tijd om weer eens verder te stoeien nadat ik je geupdate code niet aan de praat kreeg, hij bleef zeuren over value2member_map_, maar ik heb het gevonden, denk dat je de aanpassing even snel online hebt gedaan in git?
regel 56 in Core is:
code:
1
                if decrypted["device"] not in DeviceType.value2member_map_:

dit zou moeten zijn:
code:
1
                if decrypted["device"] not in DeviceType._value2member_map_:

Je bent de underscore aan het begin van value2member_map_ vergeten ;)

Tevens heb ik wat verder lopen stoeien in de code en ik krijg nu de volgende lijst eruit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
35
Zigbee lamp RGB (kleuren) : 16824175
Kerstverlichting : 17114994
14
Schemer Huiskamer : 17735318
26
Schakelaar Jacuzzi : 17781218
35
Ventilatorlamp : 18661654
Verlichting Jacuzzi : 18752779
Lamp Computerhoek : 18869727
TL Links : 18879123
25
Dimmer Verlichting Jacuzzi : 18996391
Telefoonlader : 19018854
Jacuzzi : 19487270
Spot Eettafel : 19676487
46
Vriezer tuinkast  : 20931626
46
Zigbee temperatuur- en luchtvochtigheidssensor : 21003129
Spot Foto's : 21149486
Ledstrip Boekenplank : 21741614
Ruimte verlichting : 21814777
TL Rechts : 23038305
15
Afstandsbediening Slaapkamer : 23423246
Pomp Zonnewarmte : 24258225
14
Schemersensor : 24301502
Wereldbol : 24331641
Lamp Voordeur : 24582711
7
Lichtschakelaar Huiskamer : 24670878
22
Wandschakelaar Slaapkamer : 25192425
Sprookjestuin : 25742871
Ozon Generator : 25855660
Plafonnière : 27729410
46
Keuken Temperatuur & luchtvochtigheid : 28282510
35
Spot1 Ventilator : 28440877
Terrasverlichting : 28448881
35
Spot2 Ventilator : 28642890
Kerstster : 29285281
35
Spot3 Ventilator : 30696579
39
ZigBee Slaapkamer : 30764413
22
Spots Ventilator & Eettafel : 32482899
7
Schakelaar Plafonnière : 32646077
46
Badkamer temperatuur & luchtvochtigheid : 33124133
46
Koelkast temperatuursensor : 33415166


van de onbekende codes print hij eerst de code en daaronder de data,
hieruit kan ik het volgende herleiden:
CodeOmschrijvingKaku apparaat
7opbouw schakelaar (enkel) (433 MHz)AWST-8800
14Schemersensor (433 MHz)ABST-604
15Afstandsbediening meerkanaals met dimmer (433 MHz)AYCT-202
22Inbouw schakelaar (dubbel) (433 MHz)AWMT-003
25Enkele (Buiten) schakelaar (433 MHz)AGST-8800
26Dubbele (buiten) schakelaar (433 MHz)AGST-8802
35Kleuren lamp (RGB) (Zigbee)Philips Hue
46temperatuur- en luchtvochtigheidssensor (Zigbee)ZTHS-100


Waarbij het lijkt dat de 1e keer dat een Zigbee device voorbij komt het een algemene initialisatie is gezien de Zigbee blabla omschrijving, welke ik nergens gebruik.

Nu nog uitzoeken wat en hoe ze werken (vooral de temperatuur sensors)

Hierbij de output van een temperatuur-sensor en kleurenlamp (de algemene code en een apparaat zoals ik die geplaatst heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> hub.getlampstatus(21003129)

[{"id":21003129,"data_version":185,"data":"HFpU84jalZkzaSaSuDUIRAyt\/uCRsaC514V7GFcme6hT0sqiU5H4371GcqFwVny0GHkXEzjedFMUZO3aDwXO7jU3De2Pv2rRRcU+z4+tor1jeChFmocilasvLS5fX8DzPgCGrLxG18lX8nKsX+804JGBVbiC1xbykFcRJItiA\/1Mw0UBQnYIHVKuQh2GqPo+eXyvaovxEcnZjqS269lf0cnqi6R\/yaMAcrhfTs1TYb4S\/jchh\/gQIvqS1e0dl43oIBAbrayVdUNBNkP7y2LC3Zjjws1Ql\/1N+WYTeiPZB4oKmTJbDC9Q7SdYuLTYqtTfZsQ5XC2IImRMysXM3pvM2g==","status_version":0,"status":null}]
>>> hub.getlampstatus(20931626)

[{"id":20931626,"data_version":312,"data":"GlqspVOStwjHf54c2CZBkzybOzhXpwpvcz1CTjX3BdKP6aTVDsl3mKrh6bPyoUvIOSeCbTG8H0oZa5ESTWYBMvpWNTJCpQGapqqYuR8hm9\/2QTrvv2GROD4LAK5B09DEZ0nzdgmzT6PQcaD80F\/XroiuJWHpuNqF4Gby\/qWH5DLSi1spwhFLyC6HDXNP8SOaaWC\/Asa9EfuA9A2Mw7r5DDqRvGUipZyWOOsH7bCaVJcU70M9bL7f1CWUXhAnSIG9P30bDVQ2+Fbe8oKVMRfgdTZ65ldC7IJIsDMeNNIBoy58qw\/MGgcsqu1YEkcPFdqsFSgroc1LL6wQWXT9txCObmRKqY71YsHRm8sdNPHiIJjvbUeBSkGizHBTtnU\/1eQIln47ej3DsYtbGWobPsXHhYk61XAKojrejYL\/prvOLm6f7idP6+3oG47S2Zd9RMoudatCz9BqLRpYpu\/+8ruQ1yjUzjBNo1XQVnx4N2Zrq6n7yfZ5Tox+Gsaz4L1q2dDW8RJ+5XcmDei4IuWDL6jIYpMDCo\/r+Uys0VZrLSaspiIIf2KIqhM1iG4ZISMpryS+4WIcbupb7xpI1atIhkPVLCfNQzpPQKxTDXwdrYzAelPSDlmV3P7PCmpQHJy4g9ngfsSGQEzUalNsX8+5S9gtyas7dxRkwObKYvI2VBt1IbtT9tj+WlyrxaFO5W9zXOpy","status_version":14169,"status":"Qtb8swPsMOh+afIPZ45t2c+Dx4PnIUYUCPACXktTntMByl1c6w9aQZXCmsub\/QttJT0\/SruPPBjZDCcAEuf7YBMGX3K2ANCBCHrLXMNx9y8BNKVR4p5M+XVXVridAjm\/"}]
True
>>> hub.getlampstatus(16824175)

[{"id":16824175,"data_version":133,"data":"Va7hT88zY1dMNkwUNaIqVmL174nvK4pNom1VyGPZKzlckbUOAyxZlTPihmQo7p458BRNPpgGpjB2PlaKiOv0HWtjJZJDGhaCMeugSZd1a6uFGrMYe6bfN6auBFWUPGxsZHIFPBZ2MnwNpcdUY7+eOJhMYn1RY7YRd2zCyGQjkObCdgjKAqAn3Zh0IK\/8mHM85QL0v\/fl6ozCnw1qGDWpTJ6HNmz3swkDHTwUa0GQS9Mcoe+ZSsHskgI9mr1d057QMHuKP4UVa8m8fbThPLKPHNtzoP+iwqeSVjqKQ4mmjDFfDmyu1cs6ACfByBuMPSxd","status_version":0,"status":null}]
>>> hub.getlampstatus(28440877)

[{"id":28440877,"data_version":261,"data":"jDXgB\/LEvYhmwYwBFTXc2o+XzCyZ9pOx3tYT0ePdX9VME9wIBth7iEq3ySrhBHweihYh6R5OplAyHRefg\/vjE3OXxWCGwdeyv9H80ro0Dv7rv+BHu+IQr9M5bEkQF38j0ruY4RJh5u\/oBwd1UTxPRYSKmvip\/RNhF35YnIECXVRcxsY5Q6M9ySBs3t3dyfyG1HDf4RHCkEh3HOnPUd31NUs4EklZEh1bUuaab4QeW6nNgtU4fgxqI5Wd5vxHaCBom\/sWAgGn+obWGOd\/tOWF1ftiJUrdIvRsZ1A6x1YVq7feWu5+7ArHSSO5g1EzTtdFXJ3IMR+LeqKyVKDBeftUQqK+BFqUVOGnkixvBHwv4LlbejJbrW3YZWJNTPfhVVs4qW2Ev3LkWRcAZr01OFkiB16QcTky5IVTxSlUSl3XC6Z0nvQNzG10XRdZk+PyvqnKBr88b2kPanOzaXEU5FsQ0o\/dsyO2o8Y5AlPRqHHTdNz26mdEtwlw1weMKGiFAuVAjARNeXIgK2oZsBrQ2ZF0h9Yu8YHx3hpb71p1Z3La8J0yKb6weWp35Tj+0R2HTMNu92bQI\/B2OFVJV8UPWxfSfi7yKmkL6tASUyuyUN9dG8lQs7nlbC4r3wh3kyDygzO1nvyh00fldFdMBRw+iL6+BOvSnOVaBdmU75VOUB2KoMlD\/HYHX\/QWys7jSpuuyOnYZ0QLMR303RtzkNcBm3LhWlkv\/Fr05px4VaDyf+acYiuhctubsGA0wK09OZb5LkNDg74uqn3HO7e8jPvRwYuOa+RkJmWMKErJQsxQ596q5HxtiY37pAHCQR0k8cwmJVGZ","status_version":14174,"status":"tub45JUcr9iEvctERl2SMrQMdd4DYXfPQ88hNMCCg51JKjtWbHcofpnfOqzT8ZcavuXbeYTCKBurjb9CtB8vMwcKMHOExOAbvwqp4EM9ASz08bWuoL63I8+bsywuMW8d"}]
True


De temperatuur-sensor is uiteraard aan, maar daar moet als het goed is een temperatuur, luchtvochtigheid en batterijstatus uit komen.
De lamp is uit (en is niet met turnon en turnoff te bedienen), ook al meld jouw code true.

[ Voor 37% gewijzigd door Joop Visstick op 25-07-2020 11:46 . Reden: KlikAanKlikUit apparaat Types toegevoegd. output zigbee device toegevoegd ]

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Joop Visstick schreef op zaterdag 25 juli 2020 @ 11:18:
Ik had even tijd om weer eens verder te stoeien nadat ik je geupdate code niet aan de praat kreeg, hij bleef zeuren over value2member_map_, maar ik heb het gevonden, denk dat je de aanpassing even snel online hebt gedaan in git?
regel 56 in Core is:
code:
1
                if decrypted["device"] not in DeviceType.value2member_map_:

dit zou moeten zijn:
code:
1
                if decrypted["device"] not in DeviceType._value2member_map_:

Je bent de underscore aan het begin van value2member_map_ vergeten ;)

Tevens heb ik wat verder lopen stoeien in de code en ik krijg nu de volgende lijst eruit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
35
Zigbee lamp RGB (kleuren) : 16824175
Kerstverlichting : 17114994
14
Schemer Huiskamer : 17735318
26
Schakelaar Jacuzzi : 17781218
35
Ventilatorlamp : 18661654
Verlichting Jacuzzi : 18752779
Lamp Computerhoek : 18869727
TL Links : 18879123
25
Dimmer Verlichting Jacuzzi : 18996391
Telefoonlader : 19018854
Jacuzzi : 19487270
Spot Eettafel : 19676487
46
Vriezer tuinkast  : 20931626
46
Zigbee temperatuur- en luchtvochtigheidssensor : 21003129
Spot Foto's : 21149486
Ledstrip Boekenplank : 21741614
Ruimte verlichting : 21814777
TL Rechts : 23038305
15
Afstandsbediening Slaapkamer : 23423246
Pomp Zonnewarmte : 24258225
14
Schemersensor : 24301502
Wereldbol : 24331641
Lamp Voordeur : 24582711
7
Lichtschakelaar Huiskamer : 24670878
22
Wandschakelaar Slaapkamer : 25192425
Sprookjestuin : 25742871
Ozon Generator : 25855660
Plafonnière : 27729410
46
Keuken Temperatuur & luchtvochtigheid : 28282510
35
Spot1 Ventilator : 28440877
Terrasverlichting : 28448881
35
Spot2 Ventilator : 28642890
Kerstster : 29285281
35
Spot3 Ventilator : 30696579
39
ZigBee Slaapkamer : 30764413
22
Spots Ventilator & Eettafel : 32482899
7
Schakelaar Plafonnière : 32646077
46
Badkamer temperatuur & luchtvochtigheid : 33124133
46
Koelkast temperatuursensor : 33415166


van de onbekende codes print hij eerst de code en daaronder de data,
hieruit kan ik het volgende herleiden:
CodeOmschrijvingKaku apparaat
7opbouw schakelaar (enkel) (433 MHz)AWST-8800
14Schemersensor (433 MHz)ABST-604
15Afstandsbediening meerkanaals met dimmer (433 MHz)AYCT-202
22Inbouw schakelaar (dubbel) (433 MHz)AWMT-003
25Enkele (Buiten) schakelaar (433 MHz)AGST-8800
26Dubbele (buiten) schakelaar (433 MHz)AGST-8802
35Kleuren lamp (RGB) (Zigbee)Philips Hue
46temperatuur- en luchtvochtigheidssensor (Zigbee)ZTHS-100


Waarbij het lijkt dat de 1e keer dat een Zigbee device voorbij komt het een algemene initialisatie is gezien de Zigbee blabla omschrijving, welke ik nergens gebruik.

Nu nog uitzoeken wat en hoe ze werken (vooral de temperatuur sensors)

Hierbij de output van een temperatuur-sensor en kleurenlamp (de algemene code en een apparaat zoals ik die geplaatst heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> hub.getlampstatus(21003129)

[{"id":21003129,"data_version":185,"data":"HFpU84jalZkzaSaSuDUIRAyt\/uCRsaC514V7GFcme6hT0sqiU5H4371GcqFwVny0GHkXEzjedFMUZO3aDwXO7jU3De2Pv2rRRcU+z4+tor1jeChFmocilasvLS5fX8DzPgCGrLxG18lX8nKsX+804JGBVbiC1xbykFcRJItiA\/1Mw0UBQnYIHVKuQh2GqPo+eXyvaovxEcnZjqS269lf0cnqi6R\/yaMAcrhfTs1TYb4S\/jchh\/gQIvqS1e0dl43oIBAbrayVdUNBNkP7y2LC3Zjjws1Ql\/1N+WYTeiPZB4oKmTJbDC9Q7SdYuLTYqtTfZsQ5XC2IImRMysXM3pvM2g==","status_version":0,"status":null}]
>>> hub.getlampstatus(20931626)

[{"id":20931626,"data_version":312,"data":"GlqspVOStwjHf54c2CZBkzybOzhXpwpvcz1CTjX3BdKP6aTVDsl3mKrh6bPyoUvIOSeCbTG8H0oZa5ESTWYBMvpWNTJCpQGapqqYuR8hm9\/2QTrvv2GROD4LAK5B09DEZ0nzdgmzT6PQcaD80F\/XroiuJWHpuNqF4Gby\/qWH5DLSi1spwhFLyC6HDXNP8SOaaWC\/Asa9EfuA9A2Mw7r5DDqRvGUipZyWOOsH7bCaVJcU70M9bL7f1CWUXhAnSIG9P30bDVQ2+Fbe8oKVMRfgdTZ65ldC7IJIsDMeNNIBoy58qw\/MGgcsqu1YEkcPFdqsFSgroc1LL6wQWXT9txCObmRKqY71YsHRm8sdNPHiIJjvbUeBSkGizHBTtnU\/1eQIln47ej3DsYtbGWobPsXHhYk61XAKojrejYL\/prvOLm6f7idP6+3oG47S2Zd9RMoudatCz9BqLRpYpu\/+8ruQ1yjUzjBNo1XQVnx4N2Zrq6n7yfZ5Tox+Gsaz4L1q2dDW8RJ+5XcmDei4IuWDL6jIYpMDCo\/r+Uys0VZrLSaspiIIf2KIqhM1iG4ZISMpryS+4WIcbupb7xpI1atIhkPVLCfNQzpPQKxTDXwdrYzAelPSDlmV3P7PCmpQHJy4g9ngfsSGQEzUalNsX8+5S9gtyas7dxRkwObKYvI2VBt1IbtT9tj+WlyrxaFO5W9zXOpy","status_version":14169,"status":"Qtb8swPsMOh+afIPZ45t2c+Dx4PnIUYUCPACXktTntMByl1c6w9aQZXCmsub\/QttJT0\/SruPPBjZDCcAEuf7YBMGX3K2ANCBCHrLXMNx9y8BNKVR4p5M+XVXVridAjm\/"}]
True
>>> hub.getlampstatus(16824175)

[{"id":16824175,"data_version":133,"data":"Va7hT88zY1dMNkwUNaIqVmL174nvK4pNom1VyGPZKzlckbUOAyxZlTPihmQo7p458BRNPpgGpjB2PlaKiOv0HWtjJZJDGhaCMeugSZd1a6uFGrMYe6bfN6auBFWUPGxsZHIFPBZ2MnwNpcdUY7+eOJhMYn1RY7YRd2zCyGQjkObCdgjKAqAn3Zh0IK\/8mHM85QL0v\/fl6ozCnw1qGDWpTJ6HNmz3swkDHTwUa0GQS9Mcoe+ZSsHskgI9mr1d057QMHuKP4UVa8m8fbThPLKPHNtzoP+iwqeSVjqKQ4mmjDFfDmyu1cs6ACfByBuMPSxd","status_version":0,"status":null}]
>>> hub.getlampstatus(28440877)

[{"id":28440877,"data_version":261,"data":"jDXgB\/LEvYhmwYwBFTXc2o+XzCyZ9pOx3tYT0ePdX9VME9wIBth7iEq3ySrhBHweihYh6R5OplAyHRefg\/vjE3OXxWCGwdeyv9H80ro0Dv7rv+BHu+IQr9M5bEkQF38j0ruY4RJh5u\/oBwd1UTxPRYSKmvip\/RNhF35YnIECXVRcxsY5Q6M9ySBs3t3dyfyG1HDf4RHCkEh3HOnPUd31NUs4EklZEh1bUuaab4QeW6nNgtU4fgxqI5Wd5vxHaCBom\/sWAgGn+obWGOd\/tOWF1ftiJUrdIvRsZ1A6x1YVq7feWu5+7ArHSSO5g1EzTtdFXJ3IMR+LeqKyVKDBeftUQqK+BFqUVOGnkixvBHwv4LlbejJbrW3YZWJNTPfhVVs4qW2Ev3LkWRcAZr01OFkiB16QcTky5IVTxSlUSl3XC6Z0nvQNzG10XRdZk+PyvqnKBr88b2kPanOzaXEU5FsQ0o\/dsyO2o8Y5AlPRqHHTdNz26mdEtwlw1weMKGiFAuVAjARNeXIgK2oZsBrQ2ZF0h9Yu8YHx3hpb71p1Z3La8J0yKb6weWp35Tj+0R2HTMNu92bQI\/B2OFVJV8UPWxfSfi7yKmkL6tASUyuyUN9dG8lQs7nlbC4r3wh3kyDygzO1nvyh00fldFdMBRw+iL6+BOvSnOVaBdmU75VOUB2KoMlD\/HYHX\/QWys7jSpuuyOnYZ0QLMR303RtzkNcBm3LhWlkv\/Fr05px4VaDyf+acYiuhctubsGA0wK09OZb5LkNDg74uqn3HO7e8jPvRwYuOa+RkJmWMKErJQsxQ596q5HxtiY37pAHCQR0k8cwmJVGZ","status_version":14174,"status":"tub45JUcr9iEvctERl2SMrQMdd4DYXfPQ88hNMCCg51JKjtWbHcofpnfOqzT8ZcavuXbeYTCKBurjb9CtB8vMwcKMHOExOAbvwqp4EM9ASz08bWuoL63I8+bsywuMW8d"}]
True


De temperatuur-sensor is uiteraard aan, maar daar moet als het goed is een temperatuur, luchtvochtigheid en batterijstatus uit komen.
De lamp is uit (en is niet met turnon en turnoff te bedienen), ook al meld jouw code true.
Hmm zou je de data en status string kunnen decrypten met de decrypt functie in Cryptographer class. Je aes key zit in hub (hub.aes), ik kan dit niet voor je doen omdat je aes key natuurlijk persoonlijk is.

En ja haha je hebt inderdaad gelijk dat ik dit zonder te testen in git had gezet.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Ben lekker bezig nu even:
De Slaapkamer lamp (Zigbee, Warm-koud-wit en rgb) de output van dcrpt:

Status lampdcrpt
Uit{'module': {'id': 18661654, 'functions': [1, 0, 0, 0, 254, 703402547, 0, 0, 0, 418, 9, 0, 0]}}
Aan (in laatst bekende stand){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 254, 703402547, 0, 0, 0, 418, 9, 0, 0]}}
Aan (Rood){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 254, 2737263879, 0, 0, 0, 418, 5, 0, 0]}}
Aan (Blauw){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 254, 666636441, 0, 0, 0, 418, 5, 0, 0]}}
Aan (Groen){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 254, 1287297368, 0, 0, 0, 418, 5, 0, 0]}}
Aan (Warmwit){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 254, 1287297368, 0, 0, 0, 600, 9, 0, 0]}}
Aan (KoudWit){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 254, 1287297368, 0, 0, 0, 0, 9, 0, 0]}}
Aan (ongeveer 25% aan){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 70, 1287297368, 0, 0, 0, 0, 9, 0, 0]}}
Aan (ongeveer 50% aan){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 139, 1287297368, 0, 0, 0, 0, 9, 0, 0]}}
Aan (ongeveer 75% aan){'module': {'id': 18661654, 'functions': [1, 0, 0, 1, 195, 1287297368, 0, 0, 0, 0, 9, 0, 0]}}

Er zijn ook nog effecten bescikbaar maar heb nu helaas geen tijd meer om deze verder uit zoeken.

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Ik ben weer even in de source gedoken en vond dit, erg handig https://i.imgur.com/r0eQkiN.png . Zegt precies welke index van functions aan wat gekoppeld is.

Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
De kleuren worden helaas niet ingesteld door simpel RGB, maar door Hsv of Yxy waarden.

Voorbeeld:
code:
1
COLOR_WARM_WHITE_YXY = new Yxy(0.9167654F, 0.34271383F, 0.36765102F);

Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Heb er vandaag weer wat tijd aan besteed. Ik heb het nu voor elkaar dat ik de kleuren values van hun kan omzetten van Yxy naar RGB. Andersom is me nog niet gelukt, dat is de volgende stap om het custom kleuren in te kunnnen stellen. Verder heb ik wel al zigbee dim, aan uit en kleur temperatuur toegevoegd.

In de Util class zit nu een methode deserialize_yxy_to_rgb, als je daar dus dan bijvoorbeeld:
  • 2737263879 - voor rood
  • 666636441 - voor blauw
  • 1287297368 - voor groen
in stoppen om de rgb waarde ervan te krijgen.


https://github.com/Stijn-...98ab2c11d2f2204a59fd3aed1

[ Voor 23% gewijzigd door ThunderTNT op 25-07-2020 19:59 ]


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Ook heb ik voor temperatuur en humidity sensors de function indexen gevonden. https://i.imgur.com/krAB0rG.png

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Dank voor het werk weer.

Hier is de output van een temp-sensor:
code:
1
2
3
4
5
6
7
>>> hub.getlampstatus(33415166)
resp.text: 

[{"id":33415166,"data_version":311,"data":"q+At7\/K73tJrpJy+SHycpn1meyck2cAqjTQRM6PUdsW5jmg\/G8aDjdF+101NRfVwqlYY0kEF\/8qrmJ3hzfRvPpYM9f43gdrMWhk8gvOkthdDxGCfRe538KptkPQEQtx8i1dOuFZlgvNOvU7YkJ1ez49mPg0P2S6yIARuEyBvkAe+nGWXt7+4rhzVI7vIpZcuRDLIuGk5XI3B8tt3NvdgbbL7ooy9GM7mNT3LLwgIbjKR6BgWCCHn93Uen6eqM2YQvQR+zgz5dBmeakO+NFr3v0X09CUM3phf7lKfYJZl8Jp2CDtJ7nracqg3lgWDAaGgKEoheUVNJssLHoF8jtx\/WPA1ZP2BGlnGuoH0kGiJlBaIF6Wg5BFQGVJyhIwgC7xbQZql3yi3yhzb+tXuGrmM6JHWUBQs4H5pLQANMffJYwOku3dxyWbxXFsKxfs01kStfz0MfegrbCVuhZDj9UIbGUXzRyX8rufLq4KXLsY4bvdfxnfY87K1CylG6vpnx4Pa+uPT60boBeu7J0\/nu9HL8i4aN92IVZXObLc8Ws6G0+JPKvsfjFu5EUtFK8qEB\/XxqwOh7vO8BQuPFXywxSvtiamc7gm9gHFZ6YeyMuUQ6m0nRuzQJ3LsH3fC+6wPamrES1LaK0I0siblmhcmUKDzOX0dP1h0FC0JlM\/v7s\/ZHO0\/\/W9sxjH\/K6JOh3vAw6GvAottz3DLoOD9S7caoa8B5RI0JMBMWDvimRlEE7l4lFFTQuzipPYvzEZyy10AhbxS016l9d5WZCjCbMxZt5Isf3w5TXshavEWSTx32sU9jmM=","status_version":17506,"status":"1RMH14MR9RUMFdybf9RNoVrm6\/xhMSOh17cBGofO8lzLbPls4VYb5\/kDW3eQaWXKMHY\/4a3aShm4bX9tVEERhGFDKfyX+ukPGd8QRHRiwMrU+JfiX+fKHjKNLjEiODEd"}]
dcrpt: 
{'module': {'id': 33415166, 'functions': [1, 0, 0, 117, 300, 0, 0, 0, 0, 0, 0, 7426, 0, 0]}}
True

code:
1
2
dcrpt: 
{'module': {'id': 33415166, 'functions': [1, 0, 0, 116, 368, 0, 0, 0, 0, 0, 0, 7712, 0, 0]}}


De bijbehorende data zou (ongeveer)
Temperatuur3,0 Celcius3,7 Celcius
Luchtvochtigheid74%77%
Batterij~60%~60%

moeten zijn. (2e kolom data, is 2e dcrpt-regel)

En van een andere sensor:
code:
1
2
3
4
5
6
7
>>> hub.getlampstatus(20931626)
resp.text: 

[{"id":20931626,"data_version":312,"data":"GlqspVOStwjHf54c2CZBkzybOzhXpwpvcz1CTjX3BdKP6aTVDsl3mKrh6bPyoUvIOSeCbTG8H0oZa5ESTWYBMvpWNTJCpQGapqqYuR8hm9\/2QTrvv2GROD4LAK5B09DEZ0nzdgmzT6PQcaD80F\/XroiuJWHpuNqF4Gby\/qWH5DLSi1spwhFLyC6HDXNP8SOaaWC\/Asa9EfuA9A2Mw7r5DDqRvGUipZyWOOsH7bCaVJcU70M9bL7f1CWUXhAnSIG9P30bDVQ2+Fbe8oKVMRfgdTZ65ldC7IJIsDMeNNIBoy58qw\/MGgcsqu1YEkcPFdqsFSgroc1LL6wQWXT9txCObmRKqY71YsHRm8sdNPHiIJjvbUeBSkGizHBTtnU\/1eQIln47ej3DsYtbGWobPsXHhYk61XAKojrejYL\/prvOLm6f7idP6+3oG47S2Zd9RMoudatCz9BqLRpYpu\/+8ruQ1yjUzjBNo1XQVnx4N2Zrq6n7yfZ5Tox+Gsaz4L1q2dDW8RJ+5XcmDei4IuWDL6jIYpMDCo\/r+Uys0VZrLSaspiIIf2KIqhM1iG4ZISMpryS+4WIcbupb7xpI1atIhkPVLCfNQzpPQKxTDXwdrYzAelPSDlmV3P7PCmpQHJy4g9ngfsSGQEzUalNsX8+5S9gtyas7dxRkwObKYvI2VBt1IbtT9tj+WlyrxaFO5W9zXOpy","status_version":17526,"status":"DhjS\/tTrxUCJu8VDjxmhqfGo0tL8FCTdM+T6P7S1c4TNZfeKNzwbs4kpSaQaGpjbN1sjg9vHfGYNmpHQ8PGlCDiHSlOQbcMj9wv3qvcOEf1bOSxip5rZMguULng41EEg"}]
dcrpt: 
{'module': {'id': 20931626, 'functions': [1, 0, 0, 0, 63536, 0, 0, 0, 0, 0, 0, 6638, 0, 0]}}
True

Temperatuur-20,0 Celcius
Luchtvochtigheid66%
Batterij~100%



BTW, klopt deze output:
code:
1
2
3
4
>>> deserialize_yxy_to_rgb(2737263879)
<ics2000.Color.rgb object at 0x7ff33c0f9dc0>
>>> deserialize_yxy_to_rgb(666636441)
<ics2000.Color.rgb object at 0x7ff33c0f9550>

[ Voor 30% gewijzigd door Joop Visstick op 27-07-2020 20:07 ]

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Je moet even die deserialize output in str() zetten, dan krijg je rgb waardes te zien.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ThunderTNT schreef op maandag 27 juli 2020 @ 20:48:
Je moet even die deserialize output in str() zetten, dan krijg je rgb waardes te zien.
Dan krijg ik dit:
Rood:
code:
1
2
3
>>> str(deserialize_yxy_to_rgb(2737263879))
'[255.0, 19.34400757401941, 0.20944011076443503]'
=> 255, 19, 0


Blauw:
code:
1
2
3
>>> str(deserialize_yxy_to_rgb(666636441))
'[42.97571043790306, 21.73273964371428, 255.0]' 
=> 43, 22, 255


Groen:
code:
1
2
3
>>> str(deserialize_yxy_to_rgb(1287297368))
'[0, 255.0, 7.357461159555495]'
=> 0, 255, 7


Alleen nog de getallen afronden op hele getallen, anders is het volgens mij niet volledig rgb.

[ Voor 4% gewijzigd door Joop Visstick op 27-07-2020 21:48 ]

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Misschien is het handig de Zigbee commando's niet get maar set te noemen, je zet immers de de lamp aan/uit, zet de kleurtemperatuur en dimwaarde en get is meer voor opvragen wat de waardes zijn.

Dan zal ik vandeweek eens kijken of ik wat waardes uit kan lezen van de Zigbee lamp (en eventueel de temperatuursensor).

Is het mogelijk dat ik code toevoeg (in een aparte branch) ?

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Die get was meer omdat ik in de methode een command class aanmaak en die returnde. Heb het nu aagepast. Zal straks wel even een aparte branch maken waarin je kan pushen. Heb ook nieuwe functie die alle status waarde returned in een array (get_device_status). Als je naar de screenshots kijkt die ik heb gestuurd kan je de indexen zien van die temperatuur en humidity sensor. En die moeten overeenkomen met de waardes die get_device_status returned.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
code:
1
[1, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 4569, 0, 0]

EenheidWaarde Kaku AppWaarde status
Batterij100 %0
Temperatuur3,9 Celcius394
Luchtvochtigheid46%4569

code:
1
[1, 0, 0, 0, 2431, 0, 0, 0, 0, 0, 0, 5131, 0, 0]

EenheidWaarde Kaku AppWaarde status
Batterij0 %*0
Temperatuur24,3 Celcius2431
Luchtvochtigheid51%5131

* Deze sensor is een Aquara Temp- & Luchtvochtigheidssensor en geen Kaku versie, waaromde Kaku app geen (lege) batterij-info geeft is vreemd daar de andere wel Kaku sensoren, met diezelfde 0 wel batterij-info (100%) geven.
code:
1
[1, 0, 0, 0, 63536, 0, 0, 0, 0, 0, 0, 5064, 0, 0]

EenheidWaarde Kaku AppWaarde status
Batterij100 %*0
Temperatuur-20,0 Celcius63536*
Luchtvochtigheid51%5064

* Waarom een negatieve temperatuur ineens zo een hoog getal geeft, ben ik nog niet achter, zal het eens uitzoeken.

Zal kijken of ik hier een get_sensor_data van kan maken binnenkort.

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Ik heb misschien een verklaring voor de 63536 waarde, de maximale 16bit integer waarde is 65,536

65.536 - 2.000 = 63.536

2.000 = 20 graden

Waarschijnlijk worden - waardes zo opgeslagen. Ik zie dat de maximale meetbare temperatuur 60 graden is. Dus kan je makkelijk een berekeing maken, als de waarde meer dan 6.000 is. Het als negatieve meting gezien moet worden.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
ThunderTNT schreef op dinsdag 28 juli 2020 @ 23:28:
Ik heb misschien een verklaring voor de 63536 waarde, de maximale 16bit integer waarde is 65,536

65.536 - 2.000 = 63.536

2.000 = 20 graden

Waarschijnlijk worden - waardes zo opgeslagen. Ik zie dat de maximale meetbare temperatuur 60 graden is. Dus kan je makkelijk een berekeing maken, als de waarde meer dan 6.000 is. Het als negatieve meting gezien moet worden.
Dat zou inderdaad kunnen dat 60 de max waarde is, ik zie echter ook in de code een minimum_temp staan (0 graden) :?

En zat in ieder geval met mijn gedachte niet helemaal verkeerd, het getal kwam me al zo bekend voor (vanuit programmeren in Delphi (word = max 65536)) (zat er alleen 2000 naast O-) )

[ Voor 13% gewijzigd door Joop Visstick op 28-07-2020 23:34 ]

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Ik vond deze lijst in DeviceType.class (com -> trust.smarthome -> commons -> models -> devices

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
   SWITCH = new DeviceType("SWITCH", 1, 1, 2131165480);
    DIMMER = new DeviceType("DIMMER", 2, 2, 2131165440);
    ACTUATOR = new DeviceType("ACTUATOR", 3, 3, 2131165426);
    MOTION_SENSOR = new DeviceType("MOTION_SENSOR", 4, 4, 2131165466);
    CONTACT_SENSOR = new DeviceType("CONTACT_SENSOR", 5, 5, 2131165439);
    DOORBELL_ACDB_7000A = new DeviceType("DOORBELL_ACDB_7000A", 6, 6, 2131165443);
    WALL_CONTROL_1_CHANNEL = new DeviceType("WALL_CONTROL_1_CHANNEL", 7, 7, 2131165486);
    WALL_CONTROL_2_CHANNEL = new DeviceType("WALL_CONTROL_2_CHANNEL", 8, 8, 2131165485);
    REMOTE_CONTROL_1_CHANNEL = new DeviceType("REMOTE_CONTROL_1_CHANNEL", 9, 9, 2131165472);
    REMOTE_CONTROL_2_CHANNEL = new DeviceType("REMOTE_CONTROL_2_CHANNEL", 10, 10, 2131165472);
    REMOTE_CONTROL_3_CHANNEL = new DeviceType("REMOTE_CONTROL_3_CHANNEL", 11, 11, 2131165472);
    REMOTE_CONTROL_16_CHANNEL = new DeviceType("REMOTE_CONTROL_16_CHANNEL", 12, 12, 2131165472);
    REMOTE_CONTROL_AYCT_202 = new DeviceType("REMOTE_CONTROL_AYCT_202", 13, 15, 2131165472);
    CHIME = new DeviceType("CHIME", 14, 13, 2131165435);
    DUSK_SENSOR = new DeviceType("DUSK_SENSOR", 15, 14, 2131165445);
    ARC_REMOTE = new DeviceType("ARC_REMOTE", 16, 16, 2131165472);
    ARC_CONTACT_SENSOR = new DeviceType("ARC_CONTACT_SENSOR", 17, 17, 2131165439);
    ARC_MOTION_SENSOR = new DeviceType("ARC_MOTION_SENSOR", 18, 18, 2131165466);
    ARC_SMOKE_SENSOR = new DeviceType("ARC_SMOKE_SENSOR", 19, 19, 2131165466);
    ARC_SIREN = new DeviceType("ARC_SIREN", 20, 20, 2131165478);
    DOORBELL_ACDB_7000B = new DeviceType("DOORBELL_ACDB_7000B", 21, 21, 2131165429);
    AWMT = new DeviceType("AWMT", 22, 22, 2131165429);
    SOMFY_ACTUATOR = new DeviceType("SOMFY_ACTUATOR", 23, 23, 2131165426);
    LIGHT = new DeviceType("LIGHT", 24, 24, 2131165432);
    WALL_SWITCH_AGST_8800 = new DeviceType("WALL_SWITCH_AGST_8800", 25, 25, 2131165486);
    WALL_SWITCH_AGST_8802 = new DeviceType("WALL_SWITCH_AGST_8802", 26, 26, 2131165485);
    BREL_ACTUATOR = new DeviceType("BREL_ACTUATOR", 27, 27, 2131165426);
    CONTACT_SENSOR_2 = new DeviceType("CONTACT_SENSOR_2", 28, 28, 2131165439);
    ARC_KEYCHAIN_REMOTE = new DeviceType("ARC_KEYCHAIN_REMOTE", 29, 29, 2131165472);
    ARC_ACTION_BUTTON = new DeviceType("ARC_ACTION_BUTTON", 30, 30, 2131165425);
    ARC_ROTARY_DIMMER = new DeviceType("ARC_ROTARY_DIMMER", 31, 31, 2131165473);
    ZIGBEE_UNKNOWN_DEVICE = new DeviceType("ZIGBEE_UNKNOWN_DEVICE", 32, 32, 2131165484);
    ZIGBEE_SWITCH = new DeviceType("ZIGBEE_SWITCH", 33, 33, 2131165432);
    ZIGBEE_DIMMER = new DeviceType("ZIGBEE_DIMMER", 34, 34, 2131165432);
    ZIGBEE_RGB = new DeviceType("ZIGBEE_RGB", 35, 35, 2131165432);
    ZIGBEE_TUNABLE = new DeviceType("ZIGBEE_TUNABLE", 36, 36, 2131165432);
    ZIGBEE_MULTI_PURPOSE_SENSOR = new DeviceType("ZIGBEE_MULTI_PURPOSE_SENSOR", 37, 37, 2131165484);
    ZIGBEE_LOCK = new DeviceType("ZIGBEE_LOCK", 38, 38, 2131165439);
    ZIGBEE_LIGHT_LINK_REMOTE = new DeviceType("ZIGBEE_LIGHT_LINK_REMOTE", 39, 39, 2131165472);
    ZIGBEE_LIGHT = new DeviceType("ZIGBEE_LIGHT", 40, 40, 2131165432);
    ZIGBEE_SOCKET = new DeviceType("ZIGBEE_SOCKET", 41, 41, 2131165490);
    ZIGBEE_LEAKAGE_SENSOR = new DeviceType("ZIGBEE_LEAKAGE_SENSOR", 42, 42, 2131165459);
    ZIGBEE_SMOKE_SENSOR = new DeviceType("ZIGBEE_SMOKE_SENSOR", 43, 43, 2131165479);
    ZIGBEE_CARBON_MONOXIDE_SENSOR = new DeviceType("ZIGBEE_CARBON_MONOXIDE_SENSOR", 44, 47, 2131165434);
    ZIGBEE_TEMPERATURE_AND_HUMIDITY_SENSOR = new DeviceType("ZIGBEE_TEMPERATURE_AND_HUMIDITY_SENSOR", 45, 46, 2131165479);
    ZIGBEE_LIGHT_GROUP = new DeviceType("ZIGBEE_LIGHT_GROUP", 46, 48, 2131165433);
    ZIGBEE_FIREANGEL_SENSOR = new DeviceType("ZIGBEE_FIREANGEL_SENSOR", 47, 49, 2131165425);
    CAMERA_MODULE = new DeviceType("CAMERA_MODULE", 48, 241, 2131165478);
    LOCATION_MODULE = new DeviceType("LOCATION_MODULE", 49, 242, 2131165478);
    SYSTEM_MODULE = new DeviceType("SYSTEM_MODULE", 50, 243, 2131165478);
    ENERGY_MODULE = new DeviceType("ENERGY_MODULE", 51, 238, 2131165620);
    WEATHER_MODULE = new DeviceType("WEATHER_MODULE", 52, 244, 2131165648);
    DeviceType deviceType = new DeviceType("SECURITY_MODULE", 53, 240, 2131165478);

het 2e getal (3e variable van devicetype) lijkt overeen te komen met de codes die ik in een eerdere post ook al gaf, dus dit zal een (comlete?) lijst zijn met ondersteunde modules.

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Inderdaad dat lijkt me lijst met correcte devices. Heb het denk ik gevonden.
De minimum waarde in code klopt volgensmij gewoon niet.

https://i.imgur.com/QBesIaH.png
Dit is het trucje.
https://i.imgur.com/5EyV6Q8.png

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
Ben niet thuis in Java, maar als ik heb wat geGoogled en als ik het goed begrijp is de gegeven waarde een Long en zetten ze die om in een Short en omdat de waarde van de Long te hoog is wordt de Short Negatief.

Dus 63536 Long = -2000 Short

Heb ik dat zo goed begrepen?

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
Correct, is gewoon een trucje om ook negatieve waardes op te slaan, maar dat is wel zeker de temperatuur.

Acties:
  • 0 Henk 'm!

  • deldens
  • Registratie: Mei 2002
  • Laatst online: 26-01 08:36
Super gaaf dat jullie dit gebouwd hebben. Het lukt me om met:

hub = get_hub("Mac address", "email", "password")

de volgende output te krijgen:

Logging in user
Succesfully got AES key
Remote : 17188403

Maar ik had verwacht dat ik een hele lange lijst met al mijn KAKU apparaten zou krijgen?
"Remote" is denk ik een apperaat....maar dat is er maar 1 van 10 tallen.

Wat kan er hier mis zijn gegaan?

Acties:
  • 0 Henk 'm!

  • ErichRadstake
  • Registratie: Augustus 2015
  • Laatst online: 10-01-2022
Gaaf, dat jullie het werkend hebben gekregen. Weten jullie misschien of er iemand bezig is deze library om zet zetten / te gebruiken voor een HomeBridge plugin?

Acties:
  • +1 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
@deldens Dat is inderdaad hoe @ThunderTNT het gemaakt heeft, gebeeurde mij ook, heb ergens iets gewijzigd waardoor ik de hee lijst kreeg, moet alleen weer eens opzoeken wat ik heb veranderd.

@ErichRadstake Geen idee of iemand een HomeBridge plugin aan het bouwen is, ik zelf wil wel proberen een Home Assistant plugin te bouwen (als ik de tijd en ervaring ;) kan vinden (nog geen ervaring met het maken van plugins voor HA, tevens nog niet heel ervaren met Python.)

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
@Joop Visstick heb het al snel een keer in Home Assistant gezet. Als ik die code nog een keer vind zal ik hem hier neerzetten.
Dit omzetten naar een HomeBridge plugin lijkt me niet heel lastig. Heb zelf alleen weinig tijd op het moment.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
@ThunderTNT Als je die code nog kan vinden graag.

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • ErichRadstake
  • Registratie: Augustus 2015
  • Laatst online: 10-01-2022
@ThunderTNT @Joop Visstick Dan ga ik mezelf er binnenkort maar eens aan wagen :X , zit nog midden in een verhuizing, dus zal begin volgend jaar worden.

Acties:
  • 0 Henk 'm!

  • BJD
  • Registratie: Februari 2003
  • Laatst online: 06-03 16:56

BJD

Dankzij het werk van ThunderTNT ben ik ook weer een stapje verder gekomen. Ik geef er voor mijn domotica de voorkeur aan om alles lokaal aan te sturen. Hierdoor ben ik niet afhankelijk van een internet dienst/verbinding om alles te laten werken. Ik heb een Node RED library gemaakt om kaku berichten te kunnen coderen en decoderen (het AES deel). Ik ben nu in staat om met een flow info uit de trust cloud te halen en met een andere flow lokaal commando's door te sturen naar mijn ICS2000.

Linkje naar GitHub: https://github.com/bjdikken/node-red-contrib-kaku-aes

Foto van de flow:

Afbeeldingslocatie: https://tweakers.net/i/xxQIWvmBV7w4O_CZzWWfK0WyLM8=/800x/filters:strip_exif()/f/image/H1R97U4ZwMTCoY0T1xrArJVI.png?f=fotoalbum_large

Een aantal parameters van de message header voor UDP berichten heb ik overgenomen van pakketten die ik eerder heb afgeluisterd van de ICS2000 (switch in mirror mode + wireshark). Hopelijk werken deze voor iedereen.

  • Illusion
  • Registratie: November 2000
  • Laatst online: 00:04

Illusion

(the art of)

ThunderTNT schreef op zaterdag 5 december 2020 @ 22:53:
@Joop Visstick heb het al snel een keer in Home Assistant gezet. Als ik die code nog een keer vind zal ik hem hier neerzetten.
Dit omzetten naar een HomeBridge plugin lijkt me niet heel lastig. Heb zelf alleen weinig tijd op het moment.
Als je home-assistant code hebt, dan graag.
Heb net je code van github getrokken, maar die liet niet alle devices zien. Dus heb een wijziging gemaakt in pulldevices. Regel 20 "return" veranderd in "else" en rest geindent, omdat hij anders na het eerste non-conform device stopt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    def pulldevices(self):
        url = base_url + "/gateway.php"
        params = {"action": "sync", "email": self._email, "mac": self.mac.replace(":", ""),
                  "password_hash": self._password, "home_id": self._homeId}
        resp = requests.get(url, params=params)
        self._devices = []
        #print(resp.text)
        for device in json.loads(resp.text):
            decrypted = json.loads(decrypt(device["data"], self.aes))
            
            #print(decrypted)
            if "module" in decrypted and "info" in decrypted["module"]:
                decrypted = decrypted["module"]
                name = decrypted["name"]
                entityid = decrypted["id"]

                devices = [item.value for item in DeviceType]
                if decrypted["device"] not in devices:
                    self._devices.append(Device(name, entityid, self))
                else:
                    dev = DeviceType(decrypted["device"])
                    if dev == DeviceType.LAMP:
                        self._devices.append(Device(name, entityid, self))
                    if dev == DeviceType.DIMMER:
                        self._devices.append(Dimmer(name, entityid, self))
                    if dev == DeviceType.OPENCLOSE:
                        self._devices.append(Device(name, entityid, self))

Uiteindelijk wil ik alleen een paar scenes triggeren vanuit HASS, dus ik heb nog wel wat te knutselen.

Soms ben ik er wel, en soms ook weer niet.


Acties:
  • 0 Henk 'm!

  • DelanoRochan
  • Registratie: Maart 2015
  • Laatst online: 03-03-2024
Dank voor de Python code, werkt uitstekend _/-\o_

Ik kan nu luisteren naar wijzigingen in sensor state met hub.get_device_status (bijv. een bewegingssensor of hall sensor), maar is er ook een manier om te 'luisteren' naar events van bijv. een Zigbee kaku afstandsbediening? Wat ik mis is een eenvoudig manier om scenes te schakelen middels de afstandsbediening... Met hub.get_device_status krijg ik een array zoals [1, 0, 0, 0, 0, 0], maar die wijzigt in geen geval. De remote is wel geconnect via de kaku app. Tips?

Acties:
  • 0 Henk 'm!

  • Illusion
  • Registratie: November 2000
  • Laatst online: 00:04

Illusion

(the art of)

@DelanoRochan
Volgens kan je dat niet pushen, maar misschien kan je elke knop van de remote een unieke (lege) scene laten triggeren. Die scenes uitlezen en zodra je een actieve scene gevonden hebt, je acties uitvoeren en daarna de scene weer stoppen.

Soms ben ik er wel, en soms ook weer niet.


Acties:
  • 0 Henk 'm!

  • vromanr
  • Registratie: Juni 2018
  • Laatst online: 14-05-2024
Is er iemand die het al voor elkaar gekregen heeft om de stroom en gas gegevens heeft uit kunnen lezen van de ICS-2000 ? Ik ben al een poosje aan het proberen om dit eruit te krijgen aan de hand van die info die ThunderTNThier gepost heeft, maar krijg het niet voor elkaar.

Acties:
  • 0 Henk 'm!

  • JohnyTheCarrot
  • Registratie: Februari 2021
  • Laatst online: 14-02-2021
@ThunderTNT Heb jij toevallig al een serializer in elkaar kunnen steken voor de kleuren?
By the way, heb ontdekt dat functie 5 een zet kleuren functie is, je moet gewoon een geserializede kleur erin steken.

Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
JohnyTheCarrot schreef op woensdag 10 februari 2021 @ 09:32:
@ThunderTNT Heb jij toevallig al een serializer in elkaar kunnen steken voor de kleuren?
By the way, heb ontdekt dat functie 5 een zet kleuren functie is, je moet gewoon een geserializede kleur erin steken.
Is mij toen niet geluk. Heb er wel een begin aan gemaak en dat staat ook op github. Heb zelf geen RGB lamp dus word het lastig testen voor mij. Hier had ik een begin gemaakt aan het deserializen ervan.

Acties:
  • 0 Henk 'm!

  • JohnyTheCarrot
  • Registratie: Februari 2021
  • Laatst online: 14-02-2021
ThunderTNT schreef op woensdag 10 februari 2021 @ 12:07:
[...]

Is mij toen niet geluk. Heb er wel een begin aan gemaak en dat staat ook op github. Heb zelf geen RGB lamp dus word het lastig testen voor mij. Hier had ik een begin gemaakt aan het deserializen ervan.
Ah, jammer. Geen probleem, maar weet je toevallig wat het 'info' & 'additional_info' veld is op modules.

Acties:
  • 0 Henk 'm!

  • JohnyTheCarrot
  • Registratie: Februari 2021
  • Laatst online: 14-02-2021
Ladies and gentlemen, we got him. Ik denk dat het me gelukt is om RGB waardes om te zetten naar dat rare formaatje, na meerdere uren REing. Ik zal mijn bevindingen binnenkort posten.

  • JohnyTheCarrot
  • Registratie: Februari 2021
  • Laatst online: 14-02-2021
JohnyTheCarrot schreef op woensdag 10 februari 2021 @ 16:36:
Ladies and gentlemen, we got him. Ik denk dat het me gelukt is om RGB waardes om te zetten naar dat rare formaatje, na meerdere uren REing. Ik zal mijn bevindingen binnenkort posten.
Afbeeldingslocatie: https://tweakers.net/i/WIJwcLt16lPIBhnaepG4Vi8qJaE=/x800/filters:strip_exif()/f/image/2PcM2k7dA2c1eQxdUzfVhqmS.png?f=fotoalbum_large
Slechte foto, zal binnenkort mijn code volledig op github plaatsen. Hopelijk helpt dit toch een beetje.@ThunderTNT

Acties:
  • +5 Henk 'm!

  • JohnyTheCarrot
  • Registratie: Februari 2021
  • Laatst online: 14-02-2021

Acties:
  • 0 Henk 'm!

  • hvdkooij
  • Registratie: November 2017
  • Laatst online: 30-04 14:55
ThunderTNT schreef op dinsdag 28 juli 2020 @ 23:28:
Ik heb misschien een verklaring voor de 63536 waarde, de maximale 16bit integer waarde is 65,536

65.536 - 2.000 = 63.536

2.000 = 20 graden

Waarschijnlijk worden - waardes zo opgeslagen. Ik zie dat de maximale meetbare temperatuur 60 graden is. Dus kan je makkelijk een berekeing maken, als de waarde meer dan 6.000 is. Het als negatieve meting gezien moet worden.
Ik heb het gevoel dat jullie niet bekend zijn met termen als signed integer.

Echt wel oldschool programmeren wat ik de laatste 40 jaren bij vlagen doe.

Acties:
  • 0 Henk 'm!

  • hvdkooij
  • Registratie: November 2017
  • Laatst online: 30-04 14:55
Ik had de discussie een tijd geleden gevold en wil het weer gaan op pakken na mijn verhuizing.

De ICS-2000 draait en de P1 data is er.
Daarnaast heb ik nu ook de Somfy RTS screens gekoppeld (zo makkelijk kan het dus ook Ikea ;-)

Daarnaast had ik tot nu toe weinig anders gekoppeld. Alleen wat buiten verlichting op wat schakelaars.

Maar het gaat wel weer kriebelen om er wat meer mee te gaan prutsen.

Groet, Hugo.

Acties:
  • 0 Henk 'm!

  • Joop Visstick
  • Registratie: September 2002
  • Laatst online: 16-07 12:18
hvdkooij schreef op maandag 19 april 2021 @ 20:21:
[...]


Ik heb het gevoel dat jullie niet bekend zijn met termen als signed integer.

Echt wel oldschool programmeren wat ik de laatste 40 jaren bij vlagen doe.
Ik heb daar ooit wel van gehoord, maar inderdaad (te) weinig mee gedaan, zou je kort? kunnen uitleggen hoe dat hier zit ? (heb al wat gegoogled, maar wanneer is het getal positief en wanneer is het negatief?)

Problems don't exist, only challenges


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

Dag iedereen,

ik ben op deze topic gekomen door te zoeken op een API, liefst iets zoals python, om mijn ICS-2000 aan te sturen.

Doel: gebruikers aansturen wanneer ik overschot aan productie uit mijn zonnepanelen heb.

Gewenste zaken:
- P1 poort digitale meter uitlezen (lijkt mogelijk als ik hierboven lees)
- smart-plugs aansturen (bijvoorbeeld die van IKEA - lijk zich als een 'lamp' te gedragen - dus mogelijk)

Welk project start ik het best van? (welke github).

Nota: ik kan programmeren. Python omdat het ook op een Raspberry Pi kan (ik heb er een paar always-on), en ik het al ken :)

Ik heb ook een alarmsysteem van KaKu. Hier zou het uitlezen van sommige sensoren ook handig zijn.

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

ik ben begonnen met dit: https://github.com/Stijn-Jacobs/ICS2000-Python


Dan de nodige python package installeren :
code:
1
pip3 install pycryptodome


En daarna begonnen: hub aanmaken ging vlot (opgepast hub = Hub(...) met uppercase voor de 2de tegenwoordig).

Nota: wel de fix hierboven moeten doen om de 'return' om te zetten in een 'else'.

En dan krijg ik idd alle devices te zien in mijn alarmsysteem :)

Goed werk mannen!

Ik ga zien of ik kan bijdragen i.v.m. Alarm sensoren en zo.

[ Voor 8% gewijzigd door bjp op 11-05-2021 17:04 ]

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

Dit is wat ik uit mijn systeem haal van type devices, een voorbeeld van elk:
code:
1
2
3
4
5
found device type {'id': 19636630, 'version': 35, 'name': 'Motion sensor hallway', 'device': 18, 'info': [160, 235, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'smd_info': {'group': 240, 'group-type': 0, 'hidden': True, 'disabled': False, 'smd_version': 0}}

found device type {'id': 21527802, 'version': 24, 'name': 'Remote control 1', 'device': 16, 'info': [160, 111, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'smd_info': {'group': 240, 'group-type': 0, 'hidden': True, 'disabled': False, 'smd_version': 0}}

found device type {'id': 23068849, 'version': 21, 'name': 'Contact sensor (garage)', 'device': 17, 'info': [161, 99, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'smd_info': {'group': 240, 'group-type': 0, 'hidden': True, 'disabled': False, 'smd_version': 0}}


de eerste: device 18 -> ARC_MOTION_SENSOR
de tweede: device 16 -> ARC_REMOTE
de derde: device 17 -> ARC_CONTACT_SENSOR

dat klopt alvast :)

Geen idee of ik hieruit batterijniveau of andere kan uitlezen. Ik zag dat voorbijkomen in vorige discussies, maar daar ging het om 'functions' waar ik hier niets van heb.

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

En nu heb ik ook een Ikea Tradfri Stopcontact aan de praat, device 33 -> ZIGBEE_SWITCH.

Wel verrassend dat je deze niet met turnon/turnoff kan sturen, maar met zigbee_switch(True) of (False).

Om deze te pairen met de ICS-2000 -> met naaldje onderaan drukken voor meerdere seconden, dan toevoegen in de app.

[ Voor 23% gewijzigd door bjp op 12-05-2021 00:43 ]

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

hey allemaal,

is er een manier om aan de digitale-meter (P1 poort) data te geraken buiten de app (wanneer aangesloten op de ICS-2000)?

webpagina, python, C++, ... iets?

[ Voor 11% gewijzigd door bjp op 20-05-2021 12:42 ]

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

ik zit het ding te proberen van ThunderTNT en zit wat vast met mijn python:
code:
1
2
3
4
5
6
7
8
9
10
import requests

url = "https://trustsmartcloud2.com/ics2000_api/p1.php?action=aggregated_reports&email=xxx@yyy.zzz&mac=001122334455&password_hash=magicpassword&device_unique_id=android&type=hours&start_date=2021-05-19 20:00:00&end_date=2021-05-20 20:00:00&precision=hours&differential=false&interpolate=true"

payload={}
headers = {}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)


maar dit geeft me:
code:
1
{"success":false,"error":"Reports not found, are all your parameters valid?"}



Het ding is aangesloten, in de Android App kan ik alles bekijken...


Hoe kan je weten hoe de parameters er exact uitzien?

zijn er andere "action" mogelijk dan aggregated_reports? Hoe kan je dat te weten komen?

[ Voor 9% gewijzigd door bjp op 20-05-2021 20:14 ]

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

dankzij de hulp van @ThunderTNT heb ik vandaag mits wat hacken, mijn P1 module kunnen uitlezen!

Ik kan dus live power-injectie en power-afname monitoren :) Leuk leuk :)

Ik push het binnenkort in mijn eigen fork van ICS2000-Python op GitHub.

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

extra referenties hier:
have fun: https://github.com/bp-ouhaha/ICS2000-Python

code:
code:
1
2
3
4
5
6
7
while(True):
  current = hub.get_device_check(p1_module)
  if len(current) > 5:
    print("Consumption ", int(current[4])," W - Production ", int(current[5]), " W")
  else:
    print("reply too short")
  time.sleep(10)

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • Amersfoort
  • Registratie: April 2009
  • Laatst online: 22:58
bjp schreef op dinsdag 25 mei 2021 @ 23:05:
extra referenties hier:
have fun: https://github.com/bp-ouhaha/ICS2000-Python

code:
code:
1
2
3
4
5
6
7
while(True):
  current = hub.get_device_check(p1_module)
  if len(current) > 5:
    print("Consumption ", int(current[4])," W - Production ", int(current[5]), " W")
  else:
    print("reply too short")
  time.sleep(10)
Interessant!
Doordat ik geen developer ben, maar wel graag de P1 module met de ICS2000 wil uitlezen, probeer ik de api via een URL uit te lezen en met json te ontrafelen.
De URL lukt al met https://trustsmartcloud2....assword_hash=jewachtwoord.
Wat kan ik met het json resultaat doen met versleutelde data? Ik ken/heb Python niet, maar ken PowerApps wel.

Acties:
  • 0 Henk 'm!

  • Amersfoort
  • Registratie: April 2009
  • Laatst online: 22:58
[{"home_id":"11111","id":"17087827","version_status":"0","version_data":"29","status":null,"data":"0\/Yrf3IjgfSi4k7Qlg1tI8Tve5ULiYrjpnAkCTqWYLi4YMToB9eEJWqAf9bM0x3QnGCWDlgpDC44mY1QiGYYxW9Er8XMJTmHssOElvxHOBVlNHvl11ytFujsWt5Hmgt8cgdAAWDAphV8JkZWTneO9bCcc9Jd2zfuGx6mviTAx50nWLmpjCnqi\/fhjCILxCMAOjUbjLMeSOiHe66D5ePiav5YI4\/+qTI7wpm6eydmWt8PG9VzY0UJ\/+dCsnT\/uet7QH9GaVkoS6T4QoqAnnOC5KMUA86jSz6VV1yokvtnm+0=","time_added":"2021-04-30 08:06:47"},{"home_id":"11111","id":"19672034","version_status":"28827","version_data":"13","status":"GXFIEiWEIeXhgXROpDk5IsdkvsyWq011+w2u8rIMRktoIjdjz1tlNec1GDiwwKVmCNF2t2iceiKe0S0g8DVPkw==","data":"0u0YHJ8O3XSaq\/vYP8KlxGiHm8oZc2aK\/FyhMO2xyzWYryHlbMfS0F+K7cNqvW2O0mu2nAgRxb1JJpQzuCkMJ02lZZFzvx8982985\/V6B8Fo59Drkj11P7T3jjZNuHqKZRFStMyWONsnGwrCvKApyh1QNQ8LeRRYbQdjgGKa5dfabjpkUvnlbTUqpw5AIacHWp9lEjL4uM1nyKaW22qv7gQwqhUUWNCTWNaHujqRrrVOoiToS+w1m8URxC3atvHt2adtYxhe\/YoRUE7ZedCz53TAHg\/qkBMxkZpBZu10YUY=","time_added":"2020-06-16 17:26:03"},{"home_id":"11111","id":"21744776","version_status":"28828","version_data":"16","status":"qmZ+upSBsuwACwSGny4HSU3aDArbs1tNAOCsFSegi3M\/\/IFyv2av5Uva14GDh9p90+7VE56kqAS3Rj6RSCqZrQ==","data":"bhByWoEwFGZObuiA7mFxywADA8JTN1Lbwku\/CV5uAQD7BCfeD0kxspgJaaTFZaRawAxKCnsAncdvsId9+FB+uQDdyMolF0ldIBgQaPSvm8R6dmnDjcdyKbQyjMywipwwcrNm7teCXk41rn+0ltFxw9pTvohOB8uTKkFyl+exThBv9FHvKghyC4aOAEQhaYur+NhQY8XXCRhe4Ox2Yzc5lSVpSCjU+QTnpClInAPK5yY7oUaIqtxPLt5\/SQs8Tllm+kISsLWix35Cz1x8Iw7NPCWb35veJ\/iWQV75r62z3wk=","time_added":"2020-06-16 17:26:51"},{"home_id":"11111","id":"30990135","version_status":"0","version_data":"29","status":null,"data":"6xw9x2wNBkJWIY6ZWhESbVTFYIrTsPGwazncaFdHf3lz+pzz0EX3Z0\/s1byxa9Ii3FWYr\/FarWQf8sbIeBmLn9lFqhc3Gkdin9b\/WROivQ96PfbiXshY31S+koRPx3wHcsrg4CAoAosgrONnnriizM4VP1xZasaB1TQfYWVQP\/HbVJLS5EzXcc4TDkpWl++ti6tKP7QEdEijYjO\/dJ+LV6f95+4F4F3ajUpMhr53iG4Nrh8EsTY0JwU632kxYTLrQ2Fvc9YqGLEpgrbBegrbO0AIhxhE\/bCqKQ5VPOrocR5O+FRzdySm+uzDfkY9qwBE","time_added":"2020-07-04 21:17:05"},{"home_id":"11111","id":"100663297","version_status":"34260","version_data":"0","status":"nVC0gzGdentCkPCicnSEPugizLQmgqTbQXVq5sldEzAuzqng9GrQIPg+T1O9T3KXGBH7UdKmq+GN9fDrj2yiu9HxEnbrVAMs7GIOysuLA5CQWpFlHtXhR9aOR5DqorfbyCIHM1eZcVkGliYFNYfAuIA7t3AIqlH8OkRrjKnMWRA=","data":"KboJHiggRc0oU9LDi2u5MHY5Bu6lMuy0aQexOCdn1\/7Sq\/bYBlr9iI3FERXY7Ive0vFkIQ7axv0OdT0Crze7K10D3P1CkyluwXmHCemTx94=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663299","version_status":"34279","version_data":"0","status":"eOsdAy9fvJqEocTfdQzfvRUimw8PGNAAvXK13rCbHfQJIW5atkJ0o+yi4GvEmiR4vtpT\/uZmiG2nZdxoElRdb9s1PiT1kr6ReyMrMwW0xw+GICSkRcfImwQAVBb9xyvn","data":"3iZwrvLyxWeIL9nvMrPw2\/EoD4uJDlDkLy2697uipT8qk7WnrIa95GCmawKtKWnyCQd7DJhWmHW4KsVPlrXXY\/iHa2HormSG0i6rA1YdKyk=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663300","version_status":"0","version_data":"0","status":null,"data":"HkwXQSNbOAUzGL5k7muRKrsFbGSZRGjVaDNtsJ4N8T9Sgp6Is5lEul00iDqqjfKtoqKyEdJ53McTI8JV8Up49WNbU8jO\/pTjRsoMj9O+jd4=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663301","version_status":"0","version_data":"0","status":null,"data":"EdVd5fU2dUdDgYDa+FEBCWq3fq7HUgw6fRIhEVqcZllVZ7RCh3RzquQ9s7t5QoPOkHTCdbBmeAhaNKGh1DIywpQCeKk7kOvYN6MUlGaRL4IyDCQwO3LT843FuFuqPUbM","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663302","version_status":"34279","version_data":"0","status":"v255ugn6duQiJ6UYbxO69uyH10Bbvj0E1uSdFj3fjVZ8Lk8AWkt9xXd6rdE2nCgJci+fQUhf5DlmDBh3SZHjgLhBro6xOIPm57KqzYssVfo1hqKCb+8kV4Hz+w5ArueZZ1kWQllKiSJFHP3heekcXg==","data":"BbJ3+pMq41IHhxkBVAFB7nNRz1AsEGGTghGGseVAXKZ1AsCJQnoLxnMOSlubcz+YKhiCj4YIfOlsdqXgn7C4wdjzK8aOlRHzDHBFwfejNTk=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"37921771","version_data":"30","version_status":"3319","data":"652u+8OR\/eWpEi7CvP9X396VZ12vie2lp8l03\/Gmf1poquv60rove0InYYKF\/1MzY37nrBNCWVF3rGnewWxGIxWuwvbN5h6LM8Kg2qhDleFKngV1CtTWUwzm99x2qrLmcJSopQqtLyOMunPRhBFSo9zs4wJ\/kMNHRfCgzQ3z91M5eue4DSrD34Q8xIO4oFIkgNXfTznhyPrWg6hvxBnH4DEJxrzq4BrxKxuhccMpgWh8ypgpjBu020fuLLiFwzCOIAGOvaCaVFQgKtReTB8poBRCPwc9+nuvC9kd3d9tMd396Bj\/DqHd1fAdxCEO4oDxdxHJDk8JnSU+7FnNmqIy2AvBBguBKSv36TLO9gRyylw=","status":"Ffl4tFA8xyCRi7r0\/N7jIXxONSIEaqBRd1\/+ztnVXdfgvsA6ZCO0Zgc6gTeOTqDaN7Z4ubflfvLxtiCg0Pa68Lyhk\/xdCmqgjxsz5JLf\/\/c="},{"home_id":"11111","id":"42188130","version_data":"30","version_status":"11472","data":"Xt5viRNpTXv9fZ3TD4rxlNtCElGMobHXwUBf2KnWk1o9k4s4er9s+217APdayzokqME6wSS1xdP+HvLkGCSyaOagBznveGZvo3vz41A60LZtccX20yUPWtiIUQESpLLDRSmWLDcjH4ZPCBZ5f56krhX1207P3MlPNa3dPSJ7ywzZBpP0a9P6AOatDBvAT+hwj9LPPxN0CajTEQSETQcbvjhohFbL4wK5H3hZMF\/qj6bbmg6hLA0zowLW3lWRqEDJnQsLMkuMkR9ii+AsVho0fKLzC49OR7cOVgbpR5koRHArBxhBYHdOG6sdmC3s+zr8o46f4f15RS5mpYPoMOnPIuAAGE5i3UwAVAuq2\/4uEjw=","status":"z4KJjzlRDwTIBIAxNIKX\/YMMIbQzbOcBvTTlBtNWJK8Ttog0nkFXAigMtZlceVf6rIY+jdUfpaRqWM\/barj3tyADoSDOaTxx3OMlX9WGcZM="},{"home_id":"11111","id":"44755901","version_data":"27","version_status":"11471","data":"kJ3LMzLS7R1PsTwzQBJTaOrl2A1YWcIsmzK2gB+oa+o1CNRQc1F33FT23HFWJyksjaj7T57mvpYyeFZ\/NevS4vpqUtjUL8LV3uH9uDCpNanRzm172JsESsU5EvD2jHg934GjQc1C6eDMuH\/sMpD1vJQ7wa2HgPFbrlaJ0XhUVj5sSH3UmzxS2GxVEsLq+HfR596FfI74rBaMxraUAl9Cg98AhwL+k\/e6fYAZ0+zof5dzQEKR1iynFJjABd0lq+Ud+ta\/60VGXL3iXJTnnnoIAHqHVcFoZlVYNZaa5uTQ+hivqWdvFuu9vyg4g30F71IJ4PGhKpWxKJ9NBXuih09BMw==","status":"Av\/DA3qAVAmpYTCMFBAPJ3fPjq6NYiJe0\/490SKCVl2Qxelf8KrTkXUXcrfSjCjM5LQ3dkHec+c5V1LIEPKHCh9ZbVhkoiCJ3N8Nsrj1UHU="},{"home_id":"11111","id":"72882030","version_data":"49","data":"TqgPvsUKmxbSXwgfgn4v8WfYk1icTm3WTLsI33\/cLqOGhfk8zq37FqxcB+ZmUXfd3rE4c1O3jbUuodGLuESmcQdg6pP4z+\/uyeCo0bzWRN0Phkju6VlFw22NmQtMEPqiH1DP+HRtmzO+RVdlgqYNDSVO6wdoPrj5Ar06j3+zX6sSYmPQXUypIr65m+ujmfKUZAoGkLsQjsynJBds2pe8q+HLXLxBp5\/pA02efEgU7a3RTNBcqvyRC7b6za8yNgX2","created":"2020-06-16 17:25:43"},{"home_id":"11111","id":"79822951","version_data":"42","data":"78gNtVUILJ8lOtdISY+ctpdrOyUonWzN2Wg2TvJITjtCzt55xD99H0IsGQFZvOAf9FMkPQ1LTG54aCM+pMG\/bRNtA9f+k4gvL1pCtj231iCLnKtPvHMEbQr4T484tsGzw1Tr2xWcHwzWZNbjoKu0k\/RXuw8NW9b9fEYM4u6qUiiZNK7nhiWixZ\/LGkenUEtkp\/yJwOox6\/ZZJxR\/o5MrPt3PEKIgdCdurJ7s3VB47cc=","created":"2020-06-16 17:10:42"}]","id":"17087827","version_status":"0","version_data":"29","status":null,"data":"0\/Yrf3IjgfSi4k7Qlg1tI8Tve5ULiYrjpnAkCTqWYLi4YMToB9eEJWqAf9bM0x3QnGCWDlgpDC44mY1QiGYYxW9Er8XMJTmHssOElvxHOBVlNHvl11ytFujsWt5Hmgt8cgdAAWDAphV8JkZWTneO9bCcc9Jd2zfuGx6mviTAx50nWLmpjCnqi\/fhjCILxCMAOjUbjLMeSOiHe66D5ePiav5YI4\/+qTI7wpm6eydmWt8PG9VzY0UJ\/+dCsnT\/uet7QH9GaVkoS6T4QoqAnnOC5KMUA86jSz6VV1yokvtnm+0=","time_added":"2021-04-30 08:06:47"},{"home_id":"11111","id":"19672034","version_status":"28827","version_data":"13","status":"GXFIEiWEIeXhgXROpDk5IsdkvsyWq011+w2u8rIMRktoIjdjz1tlNec1GDiwwKVmCNF2t2iceiKe0S0g8DVPkw==","data":"0u0YHJ8O3XSaq\/vYP8KlxGiHm8oZc2aK\/FyhMO2xyzWYryHlbMfS0F+K7cNqvW2O0mu2nAgRxb1JJpQzuCkMJ02lZZFzvx8982985\/V6B8Fo59Drkj11P7T3jjZNuHqKZRFStMyWONsnGwrCvKApyh1QNQ8LeRRYbQdjgGKa5dfabjpkUvnlbTUqpw5AIacHWp9lEjL4uM1nyKaW22qv7gQwqhUUWNCTWNaHujqRrrVOoiToS+w1m8URxC3atvHt2adtYxhe\/YoRUE7ZedCz53TAHg\/qkBMxkZpBZu10YUY=","time_added":"2020-06-16 17:26:03"},{"home_id":"11111","id":"21744776","version_status":"28828","version_data":"16","status":"qmZ+upSBsuwACwSGny4HSU3aDArbs1tNAOCsFSegi3M\/\/IFyv2av5Uva14GDh9p90+7VE56kqAS3Rj6RSCqZrQ==","data":"bhByWoEwFGZObuiA7mFxywADA8JTN1Lbwku\/CV5uAQD7BCfeD0kxspgJaaTFZaRawAxKCnsAncdvsId9+FB+uQDdyMolF0ldIBgQaPSvm8R6dmnDjcdyKbQyjMywipwwcrNm7teCXk41rn+0ltFxw9pTvohOB8uTKkFyl+exThBv9FHvKghyC4aOAEQhaYur+NhQY8XXCRhe4Ox2Yzc5lSVpSCjU+QTnpClInAPK5yY7oUaIqtxPLt5\/SQs8Tllm+kISsLWix35Cz1x8Iw7NPCWb35veJ\/iWQV75r62z3wk=","time_added":"2020-06-16 17:26:51"},{"home_id":"11111","id":"30990135","version_status":"0","version_data":"29","status":null,"data":"6xw9x2wNBkJWIY6ZWhESbVTFYIrTsPGwazncaFdHf3lz+pzz0EX3Z0\/s1byxa9Ii3FWYr\/FarWQf8sbIeBmLn9lFqhc3Gkdin9b\/WROivQ96PfbiXshY31S+koRPx3wHcsrg4CAoAosgrONnnriizM4VP1xZasaB1TQfYWVQP\/HbVJLS5EzXcc4TDkpWl++ti6tKP7QEdEijYjO\/dJ+LV6f95+4F4F3ajUpMhr53iG4Nrh8EsTY0JwU632kxYTLrQ2Fvc9YqGLEpgrbBegrbO0AIhxhE\/bCqKQ5VPOrocR5O+FRzdySm+uzDfkY9qwBE","time_added":"2020-07-04 21:17:05"},{"home_id":"11111","id":"100663297","version_status":"34260","version_data":"0","status":"nVC0gzGdentCkPCicnSEPugizLQmgqTbQXVq5sldEzAuzqng9GrQIPg+T1O9T3KXGBH7UdKmq+GN9fDrj2yiu9HxEnbrVAMs7GIOysuLA5CQWpFlHtXhR9aOR5DqorfbyCIHM1eZcVkGliYFNYfAuIA7t3AIqlH8OkRrjKnMWRA=","data":"KboJHiggRc0oU9LDi2u5MHY5Bu6lMuy0aQexOCdn1\/7Sq\/bYBlr9iI3FERXY7Ive0vFkIQ7axv0OdT0Crze7K10D3P1CkyluwXmHCemTx94=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663299","version_status":"34279","version_data":"0","status":"eOsdAy9fvJqEocTfdQzfvRUimw8PGNAAvXK13rCbHfQJIW5atkJ0o+yi4GvEmiR4vtpT\/uZmiG2nZdxoElRdb9s1PiT1kr6ReyMrMwW0xw+GICSkRcfImwQAVBb9xyvn","data":"3iZwrvLyxWeIL9nvMrPw2\/EoD4uJDlDkLy2697uipT8qk7WnrIa95GCmawKtKWnyCQd7DJhWmHW4KsVPlrXXY\/iHa2HormSG0i6rA1YdKyk=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663300","version_status":"0","version_data":"0","status":null,"data":"HkwXQSNbOAUzGL5k7muRKrsFbGSZRGjVaDNtsJ4N8T9Sgp6Is5lEul00iDqqjfKtoqKyEdJ53McTI8JV8Up49WNbU8jO\/pTjRsoMj9O+jd4=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663301","version_status":"0","version_data":"0","status":null,"data":"EdVd5fU2dUdDgYDa+FEBCWq3fq7HUgw6fRIhEVqcZllVZ7RCh3RzquQ9s7t5QoPOkHTCdbBmeAhaNKGh1DIywpQCeKk7kOvYN6MUlGaRL4IyDCQwO3LT843FuFuqPUbM","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"100663302","version_status":"34279","version_data":"0","status":"v255ugn6duQiJ6UYbxO69uyH10Bbvj0E1uSdFj3fjVZ8Lk8AWkt9xXd6rdE2nCgJci+fQUhf5DlmDBh3SZHjgLhBro6xOIPm57KqzYssVfo1hqKCb+8kV4Hz+w5ArueZZ1kWQllKiSJFHP3heekcXg==","data":"BbJ3+pMq41IHhxkBVAFB7nNRz1AsEGGTghGGseVAXKZ1AsCJQnoLxnMOSlubcz+YKhiCj4YIfOlsdqXgn7C4wdjzK8aOlRHzDHBFwfejNTk=","time_added":"2020-06-16 17:10:30"},{"home_id":"11111","id":"37921771","version_data":"30","version_status":"3319","data":"652u+8OR\/eWpEi7CvP9X396VZ12vie2lp8l03\/Gmf1poquv60rove0InYYKF\/1MzY37nrBNCWVF3rGnewWxGIxWuwvbN5h6LM8Kg2qhDleFKngV1CtTWUwzm99x2qrLmcJSopQqtLyOMunPRhBFSo9zs4wJ\/kMNHRfCgzQ3z91M5eue4DSrD34Q8xIO4oFIkgNXfTznhyPrWg6hvxBnH4DEJxrzq4BrxKxuhccMpgWh8ypgpjBu020fuLLiFwzCOIAGOvaCaVFQgKtReTB8poBRCPwc9+nuvC9kd3d9tMd396Bj\/DqHd1fAdxCEO4oDxdxHJDk8JnSU+7FnNmqIy2AvBBguBKSv36TLO9gRyylw=","status":"Ffl4tFA8xyCRi7r0\/N7jIXxONSIEaqBRd1\/+ztnVXdfgvsA6ZCO0Zgc6gTeOTqDaN7Z4ubflfvLxtiCg0Pa68Lyhk\/xdCmqgjxsz5JLf\/\/c="},{"home_id":"11111","id":"42188130","version_data":"30","version_status":"11472","data":"Xt5viRNpTXv9fZ3TD4rxlNtCElGMobHXwUBf2KnWk1o9k4s4er9s+217APdayzokqME6wSS1xdP+HvLkGCSyaOagBznveGZvo3vz41A60LZtccX20yUPWtiIUQESpLLDRSmWLDcjH4ZPCBZ5f56krhX1207P3MlPNa3dPSJ7ywzZBpP0a9P6AOatDBvAT+hwj9LPPxN0CajTEQSETQcbvjhohFbL4wK5H3hZMF\/qj6bbmg6hLA0zowLW3lWRqEDJnQsLMkuMkR9ii+AsVho0fKLzC49OR7cOVgbpR5koRHArBxhBYHdOG6sdmC3s+zr8o46f4f15RS5mpYPoMOnPIuAAGE5i3UwAVAuq2\/4uEjw=","status":"z4KJjzlRDwTIBIAxNIKX\/YMMIbQzbOcBvTTlBtNWJK8Ttog0nkFXAigMtZlceVf6rIY+jdUfpaRqWM\/barj3tyADoSDOaTxx3OMlX9WGcZM="},{"home_id":"11111","id":"44755901","version_data":"27","version_status":"11471","data":"kJ3LMzLS7R1PsTwzQBJTaOrl2A1YWcIsmzK2gB+oa+o1CNRQc1F33FT23HFWJyksjaj7T57mvpYyeFZ\/NevS4vpqUtjUL8LV3uH9uDCpNanRzm172JsESsU5EvD2jHg934GjQc1C6eDMuH\/sMpD1vJQ7wa2HgPFbrlaJ0XhUVj5sSH3UmzxS2GxVEsLq+HfR596FfI74rBaMxraUAl9Cg98AhwL+k\/e6fYAZ0+zof5dzQEKR1iynFJjABd0lq+Ud+ta\/60VGXL3iXJTnnnoIAHqHVcFoZlVYNZaa5uTQ+hivqWdvFuu9vyg4g30F71IJ4PGhKpWxKJ9NBXuih09BMw==","status":"Av\/DA3qAVAmpYTCMFBAPJ3fPjq6NYiJe0\/490SKCVl2Qxelf8KrTkXUXcrfSjCjM5LQ3dkHec+c5V1LIEPKHCh9ZbVhkoiCJ3N8Nsrj1UHU="},{"home_id":"11111","id":"72882030","version_data":"49","data":"TqgPvsUKmxbSXwgfgn4v8WfYk1icTm3WTLsI33\/cLqOGhfk8zq37FqxcB+ZmUXfd3rE4c1O3jbUuodGLuESmcQdg6pP4z+\/uyeCo0bzWRN0Phkju6VlFw22NmQtMEPqiH1DP+HRtmzO+RVdlgqYNDSVO6wdoPrj5Ar06j3+zX6sSYmPQXUypIr65m+ujmfKUZAoGkLsQjsynJBds2pe8q+HLXLxBp5\/pA02efEgU7a3RTNBcqvyRC7b6za8yNgX2","created":"2020-06-16 17:25:43"},{"home_id":"11111","id":"79822951","version_data":"42","data":"78gNtVUILJ8lOtdISY+ctpdrOyUonWzN2Wg2TvJITjtCzt55xD99H0IsGQFZvOAf9FMkPQ1LTG54aCM+pMG\/bRNtA9f+k4gvL1pCtj231iCLnKtPvHMEbQr4T484tsGzw1Tr2xWcHwzWZNbjoKu0k\/RXuw8NW9b9fEYM4u6qUiiZNK7nhiWixZ\/LGkenUEtkp\/yJwOox6\/ZZJxR\/o5MrPt3PEKIgdCdurJ7s3VB47cc=","created":"2020-06-16 17:10:42"}]
Resultaat van de api call via een url.

Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def get_device_check(self, entity) -> []:
        url = base_url + "/entity.php"
        params = {"action": "check", "email": self._email, "mac": self.mac.replace(":", ""),
                  "password_hash": self._password, "entity_id": str(entity)}
        resp = requests.get(url, params=params)
        arr = json.loads(resp.text)
        if len(arr) == 4:
            # 0: data-version
            # 1: data
            # 2: status-version
            # 3: status
            try:
              dcrpt = json.loads(decrypt(arr[3], self.aes))
              if "module" in dcrpt and "functions" in dcrpt["module"]:
                  return dcrpt["module"]["functions"]
            except TypeError:
              pass
            except json.decoder.JSONDecodeError:
              pass
        return []


uit de resp.text wordt een JSON load gedaan. Hierin in het 4de element nemen, decrypten, terug JSON load... en daarin heb je dan de nodige data ;)

code:
1
2
3
4
5
6
def decrypt(string: str, aes: str) -> str:
    base = base64.b64decode(string)
    iv = base[:16]
    inp = base[16:]
    cipher = AES.new(bytes.fromhex(aes), AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(inp), 16).decode(encoding)

[ Voor 11% gewijzigd door bjp op 04-06-2021 14:57 ]

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • Amersfoort
  • Registratie: April 2009
  • Laatst online: 22:58
bjp schreef op vrijdag 4 juni 2021 @ 14:56:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def get_device_check(self, entity) -> []:
        url = base_url + "/entity.php"
        params = {"action": "check", "email": self._email, "mac": self.mac.replace(":", ""),
                  "password_hash": self._password, "entity_id": str(entity)}
        resp = requests.get(url, params=params)
        arr = json.loads(resp.text)
        if len(arr) == 4:
            # 0: data-version
            # 1: data
            # 2: status-version
            # 3: status
            try:
              dcrpt = json.loads(decrypt(arr[3], self.aes))
              if "module" in dcrpt and "functions" in dcrpt["module"]:
                  return dcrpt["module"]["functions"]
            except TypeError:
              pass
            except json.decoder.JSONDecodeError:
              pass
        return []


uit de resp.text wordt een JSON load gedaan. Hierin in het 4de element nemen, decrypten, terug JSON load... en daarin heb je dan de nodige data ;)

code:
1
2
3
4
5
6
def decrypt(string: str, aes: str) -> str:
    base = base64.b64decode(string)
    iv = base[:16]
    inp = base[16:]
    cipher = AES.new(bytes.fromhex(aes), AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(inp), 16).decode(encoding)
Als ik het goed begrijp (ik ben geen developer) neem ik uit de json file de waarde van het element "status", en die moet ik gaan decrypten. Doordat ik geen kennis heb van Python, blijf ik hier hangen.
Ik denk dat de eerste stap is deze "status" waarde met base64 te decoderen (hetgeen mij nog onleesbare data geeft). Kun je functioneel aangeven wat er daarna moet gebeuren?
Bij het element "data" zie ik ook gecodeerde waarden. Kan ik hier nog iets mee doen?

Sorry voor de wellicht basic vraag, maar ik moet het naar PowerApps vertalen en die heeft andere functies.

Acties:
  • +2 Henk 'm!

  • rutgerdegraaf
  • Registratie: Januari 2018
  • Laatst online: 15-04 16:33
Voor de liefhebber een Home Assistant integratie: https://github.com/rdegraafwhizzkit/ics2000-hass
Alleen getest met KAKU dimbare lampen en schakelaars.

Acties:
  • +1 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

ohla ziet er niet slecht uit (van code).

zal eens kijken of ik er iets aan heb :)

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • sp_mike
  • Registratie: November 2016
  • Laatst online: 26-06 21:21
Weet iemand of het mogelijk is om met Python de historische data van mijn energieverbruik uit te lezen? De app gaat maar een maand terug. Zou graag meer data zien ;-)

Acties:
  • 0 Henk 'm!

  • Vailen
  • Registratie: Augustus 2010
  • Laatst online: 13-05 16:04

Vailen

Shit happens

rutgerdegraaf schreef op maandag 24 oktober 2022 @ 21:50:
Voor de liefhebber een Home Assistant integratie: https://github.com/rdegraafwhizzkit/ics2000-hass
Alleen getest met KAKU dimbare lampen en schakelaars.
Ik krijg het niet werkende helaas.
Krijg deze melding
Platform error light.ics2000 - No module named 'ics2000'.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Platform error: light
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config.py", line 865, in async_process_component_config
    platform = p_integration.get_platform(domain)
  File "/usr/src/homeassistant/homeassistant/loader.py", line 728, in get_platform
    cache[full_name] = self._import_platform(platform_name)
  File "/usr/src/homeassistant/homeassistant/loader.py", line 745, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/config/custom_components/ics2000/light.py", line 11, in <module>
    from ics2000.Core import Hub
ModuleNotFoundError: No module named 'ics2000'


Dit is de error

Help!

Twitch | Youtube | GameRig: Lenovo Legion 5i | i7-14650HX | RTX 4070 | 16Gb | 1Tb


Acties:
  • 0 Henk 'm!

  • Vailen
  • Registratie: Augustus 2010
  • Laatst online: 13-05 16:04

Vailen

Shit happens

Oplossing gevonden!

Wil je de ICS2000 toevoegen aan je Home Assistant OS moet je de volgende commando's gebruiken:

code:
1
sudo docker exec -it homeassistant /bin/bash

en dan:
code:
1
pip install --upgrade git+https://github.com/rdegraafwhizzkit/ics2000-python@master#egg=ics2000


en dan werkt het wel!

Twitch | Youtube | GameRig: Lenovo Legion 5i | i7-14650HX | RTX 4070 | 16Gb | 1Tb


Acties:
  • +1 Henk 'm!

  • Vailen
  • Registratie: Augustus 2010
  • Laatst online: 13-05 16:04

Vailen

Shit happens

@rutgerdegraaf

Is er ook een mogelijkheid om de zigbee apparaten en bewegingssensors toe te voegen?

Er is parallel ook iemand bezig voor homebridge met dezelfde basis.
https://github.com/youridijk/homebridge-kaku-ics2000

Twitch | Youtube | GameRig: Lenovo Legion 5i | i7-14650HX | RTX 4070 | 16Gb | 1Tb


Acties:
  • +1 Henk 'm!

  • Basdon1985
  • Registratie: Maart 2014
  • Laatst online: 23-07 20:25
(jarig!)
Vailen schreef op maandag 21 november 2022 @ 08:02:
Oplossing gevonden!

Wil je de ICS2000 toevoegen aan je Home Assistant OS moet je de volgende commando's gebruiken:

code:
1
sudo docker exec -it homeassistant /bin/bash

en dan:
code:
1
pip install --upgrade git+https://github.com/rdegraafwhizzkit/ics2000-python@master#egg=ics2000


en dan werkt het wel!
Misschien een beginnersvraag maar ik heb een standaard home assistent image op mijn raspberry pi gezet. Ik kan vanaf de command prompt deze commando’s niet geven. Hoe installeer ik toch de vereiste dingen?

Acties:
  • +1 Henk 'm!

  • Downloader4Life
  • Registratie: Juli 2005
  • Laatst online: 19-06 08:29
Hoi allemaal,

Even een soort van hetzelfde zoals de vorige post. Is er misshien een stappenplan om de ICS-2000 in HA te krijgen. Ik zie geweldige opmerkingen in dit topic voorbij komen met dat het werkt alleen mij is niet duidelijk welke stappen allemaal genomen moeten worden om het voor elkaar te krijgen.

Ik draai Home Assistant OS en die is wat beperkter in mogelijkheden om SSH commando's etc te doen en mijn Linux kennis is niet goed genoeg om supervisor te draaien.

Ben benieuwd wie me op weg kan helpen!

Do it right or don't do it at all.


Acties:
  • 0 Henk 'm!

  • Basdon1985
  • Registratie: Maart 2014
  • Laatst online: 23-07 20:25
(jarig!)
Downloader4Life schreef op vrijdag 27 januari 2023 @ 19:43:
Hoi allemaal,

Even een soort van hetzelfde zoals de vorige post. Is er misshien een stappenplan om de ICS-2000 in HA te krijgen. Ik zie geweldige opmerkingen in dit topic voorbij komen met dat het werkt alleen mij is niet duidelijk welke stappen allemaal genomen moeten worden om het voor elkaar te krijgen.

Ik draai Home Assistant OS en die is wat beperkter in mogelijkheden om SSH commando's etc te doen en mijn Linux kennis is niet goed genoeg om supervisor te draaien.

Ben benieuwd wie me op weg kan helpen!
Het is me uiteindelijk gelukt!

Zie “https://hacs.xyz/docs/setup/download/“

De ssh add on moet je voorzien van een wachtwoord. Die vind je bij de settings van de add on.

Met een aparte ssh client zoals via de prompt van een Mac kun je als “root” en dan je ingegeven wachtwoord het “wget” commando geven zoals in de link beschreven staat

Acties:
  • 0 Henk 'm!

  • Downloader4Life
  • Registratie: Juli 2005
  • Laatst online: 19-06 08:29
Basdon1985 schreef op maandag 6 februari 2023 @ 21:14:
[...]


Het is me uiteindelijk gelukt!

Zie “https://hacs.xyz/docs/setup/download/“

De ssh add on moet je voorzien van een wachtwoord. Die vind je bij de settings van de add on.

Met een aparte ssh client zoals via de prompt van een Mac kun je als “root” en dan je ingegeven wachtwoord het “wget” commando geven zoals in de link beschreven staat
Hi Basdon, hiermee bedoel je volgens mij het installeren van HACS, dat is mij al gelukt. Het gaat bij mij vooral om de ICS-2000 integratie.

Do it right or don't do it at all.


Acties:
  • 0 Henk 'm!

  • f.h
  • Registratie: Januari 2006
  • Laatst online: 16:14

f.h

Vailen schreef op maandag 21 november 2022 @ 22:43:
Er is parallel ook iemand bezig voor homebridge met dezelfde basis.
https://github.com/youridijk/homebridge-kaku-ics2000
Deze heb ik zojuist ook bij toeval gevonden (en ik kwam in dit topic om dat te posten :+ ) en hij lijkt voorlopig prima te werken in Homebridge. Erg fijn, kan ik sneller de boel bedienen ipv de Kaku app openen.

Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

ik denk dat er voor de Home Assistant gebruikers onder ons, interesse is om de ICS2000 te benaderen via UDP/Local LAN (enkel de cloud voor login/AES).

via de decompile van de App moet dat lukken.

Huidige python code gebruikt zover ik weet de TCP/cloud link.

Ik ben ook geen die-hard Home Assistant developer, stel ik kan de lijst devices uitlezen, hoe voegt ik deze 'automatisch' toe aan Home Assistant, soort discovery?

Uit de decompile, heb ik ook een lijst ID -> naam.

Zijn er gemotiveerde devs hier om het werk te delen?

Hoofdoelen:
- alarm kunnen aansturen/uitlezen
- P1 poort uitlezen
- lampen, temperatuur sensoren... hoewel hier het simpeler is om direct ZHA/zigbee2mqtt te gebruiken

[ Voor 13% gewijzigd door bjp op 14-11-2023 12:00 ]

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • 0 Henk 'm!

  • ThunderTNT
  • Registratie: November 2015
  • Laatst online: 04-05 23:52
bjp schreef op dinsdag 14 november 2023 @ 11:59:
ik denk dat er voor de Home Assistant gebruikers onder ons, interesse is om de ICS2000 te benaderen via UDP/Local LAN (enkel de cloud voor login/AES).

via de decompile van de App moet dat lukken.

Huidige python code gebruikt zover ik weet de TCP/cloud link.

Ik ben ook geen die-hard Home Assistant developer, stel ik kan de lijst devices uitlezen, hoe voegt ik deze 'automatisch' toe aan Home Assistant, soort discovery?

Uit de decompile, heb ik ook een lijst ID -> naam.

Zijn er gemotiveerde devs hier om het werk te delen?
Ik heb er zelf geen tijd meer voor, ik weet wel dat
https://github.com/youridijk/homebridge-kaku-ics2000
de lokale link gebruikt.

Acties:
  • 0 Henk 'm!

  • bjp
  • Registratie: Januari 2010
  • Laatst online: 00:41

bjp

dezelfde developer heeft ook deze: https://github.com/youridijk/ICS-2000-NodeJS

8.3kW Oost-West PV en 7.7kWh thuisbatterij | WP EcoForest 1-6 PRO en dWTW | Stromer ST1 & ST3


Acties:
  • +1 Henk 'm!

  • Youri Dijk
  • Registratie: Februari 2018
  • Laatst online: 13-06 18:40
@bjp

Het is mij gelukt de P1 data uit te lezen, apparaten bedienen en huidige status van apparaten uit te lezen. Dit met behulp van de python library van Stijnjacobs en m’n eigen research. Mocht je een integratie met home assistant willen maken, ik heb een deel van de API gedocumenteerd. Zie https://github.com/youridijk/ICS-2000-NodeJS/tree/main/docs

Maar mocht dit lastig zijn (begrijpelijk, de API is niet zo makkelijk), dan is het ook mogelijk om de door mij geschreven REST server te gebruiken. Deze is ook geschreven in Node.JS maar er zit een Dockerfile bij om het in docker te draaien. De REST kun je vinden in https://github.com/youridijk/ICS-2000-NodeJS

Ik heb zelf geen tijd om functionaliteiten toevoegen aan de python library vanwege full time stage. Maar stel gerust vragen hierop of open een issue op GitHub!
Pagina: 1 2 Laatste