Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie

  • mitch2kbe
  • Registratie: januari 2008
  • Laatst online: 26-04 10:49
Hallo,

ik was benieuwd of er iemand al was in geslaagd om een Klik Aan Klik Uit/Trust ICS-2000 rechtstreeks aan te spreken over het netwerk doormiddel van een API of UDP broadcoast.
Ik heb reeds geprobeerd via de uitleg die hier staat voor de ICS-1000, maar lijkt niet te werken voor de 2000.

Grtz

Acties:
  • +1Henk 'm!

  • mitch2kbe
  • Registratie: januari 2008
  • Laatst online: 26-04 10:49
Nou, heb ondertussen zelf wat lopen zoeken, en middels een http proxy heb ik de commands kunnen achterhalen. Er wordt een http request gedaan in deze vorm:

code:
1
http://trustsmartcloud2.com/ics2000_api/command.php?email=mi***%40***.eu&password_hash=***command=0100800012A30110C3000000004200000017005C00400002001800070062847E01000000000000000050007290FE9F5BFEE36988D4A14813A893F4D6B9DC94CC70DEAC92F2DD2F6CAA3EDAEDD2AF8A4064AE00A5A77F58139ABBA43D60DDC40BF137434C284C27C7EA4D3B2820B276DFF075D6CA1F1A160EDBB340&action=add&device_unique_id=ffffffff-f635-****-ffff-ffff9a****f9&mac=0012A301****

* = vervangen

dit is het aanschakelen van een lamp. Het uitschakelen is exact dezelfde vorm, behalve de command is anders.

Door de http requests opnieuw uit te sturen, kan ik in ieder geval nu al programmatisch het een en het ander bedienen, al is het wel omslachtig om aan de juiste string te komen :).

  • Vinnybinny
  • Registratie: april 2006
  • Laatst online: 18-06 19:10
Haha, ik stuitte toevallig gisteren op jouw topic omdat ik zelf in combinatie van Homebridge bezig was om dit te regelen. Ik vind zelf de ICS2000 koppeling erg matig, ze hebben ook gewoon error reporting aanstaan op productieomgeving (laat maar eens een variabel weg). Daarnaast gewoon PLAIN-text met gebruikersnaam wachtwoord in URL string. Erg slecht.

Ik vraag me af wat de command binair precies inhoudt. Of hier een timestamp o.i.d. aan verbonden zit. Ik heb hetzelfde als jij gedaan gisteren, ben erg benieuwd hoe lang ik de lichten hiermee aan en uit kan zetten.

Acties:
  • +1Henk 'm!

  • mitch2kbe
  • Registratie: januari 2008
  • Laatst online: 26-04 10:49
Vinnybinny schreef op dinsdag 14 juni 2016 @ 10:54:
Haha, ik stuitte toevallig gisteren op jouw topic omdat ik zelf in combinatie van Homebridge bezig was om dit te regelen. Ik vind zelf de ICS2000 koppeling erg matig, ze hebben ook gewoon error reporting aanstaan op productieomgeving (laat maar eens een variabel weg). Daarnaast gewoon PLAIN-text met gebruikersnaam wachtwoord in URL string. Erg slecht.

Ik vraag me af wat de command binair precies inhoudt. Of hier een timestamp o.i.d. aan verbonden zit. Ik heb hetzelfde als jij gedaan gisteren, ben erg benieuwd hoe lang ik de lichten hiermee aan en uit kan zetten.
Hi,

Inderdaad, de error reporting viel mij ook op :) Beetje slordig.
Wachtwoord gaat wel over https, maar ze hadden het op z'n minst kunnen hashen imo.

Tot hiertoe lijkt de aansturing vlekkeloos te werken met de gekopieerde string. Ik probeer uit te zoeken hoe het HEX gedeelte is opgebouwd.

Ik heb intussen ook eens via klikaanklikuit gehoord of ze de API kunnen openstellen. Dit was het antwoord:
Helaas kunnen wij deze niet beschikbaar stellen, ik kan u ook niet garanderen of dit ook daadwerkelijk gaat gebeuren! Onze excuses hier voor.

Met vriendelijke groet,

KlikAanKlikUit Klantenservice
Spijtig dit :(

  • Vinnybinny
  • Registratie: april 2006
  • Laatst online: 18-06 19:10
Hi,

Hou me op de hoogte! Denk niet dat je erachter gaat komen waar de HEX voor staan. Je zou denken dat dit een hash is die eenmalig kan worden uitgevoerd. Maar inderdaad, ik heb via Siri (Homebridge) ook de lampen tientallen keren aan en uit gezet.

Wat je zegt betreft HTTPS is volgens mij niet waar, in de password_hash staat bij mij ook gewoon het wachtwoord. Die URL gaat wel over een HTTP verbinding. Wellicht is dit bij jou anders.

KlikAanKlikUit valt me erg tegen qua functionaliteit. Ik had er meer van verwacht. Het werkt op zich prima, maar de technologie is ook erg beperkt omdat de KlikAanKlikUit modules geen feedback kunnen geven, dus als je de lamp aanzet is de vraag of dit werkelijk gebeurt. Als je naar Domotica in het algemeen kijkt doet KlikAanKlikUit niets onder aan de concurrentie, maar ik vind het onbegrijpelijk dat het zo slecht is terwijl er volgens mij meerdere ontwikkelaars aan werken. Er valt wel meer uit te halen denk ik persoonlijk!

  • Psycho_Mantis
  • Registratie: februari 2007
  • Laatst online: 15:29

Psycho_Mantis

Wow. So Amaze.

Volgens mij kan je beter Domoticz of iets anders gebruiken en hierin beter verder geen moeite insteken.
Geloof dat het enkel zonde van je tijd is.

PVoutput


Acties:
  • +1Henk 'm!

  • Dick99999
  • Registratie: december 2004
  • Laatst online: 16-06 10:56
Als ik een packet trace uitvoer, zie ik alleen UDP verkeer, geen TCP. Vermoedelijk versleuteld UDP verkeer tussen mijn iPhone en de ICS-2000, ook als ik een schakelaar aan zet. En ook UDP tussen de 2000 en de trust server.
Waar/wanneer zien jullie TCP?

  • Calypoter
  • Registratie: januari 2017
  • Laatst online: 11-02-2017
Heeft er iemand al iets meer gevonden hoe de lampen van kaku aan te spreken?

Acties:
  • +1Henk 'm!

  • jmlk
  • Registratie: november 2010
  • Laatst online: 11-05 15:08
ICS-2000 bij bouwmarkt gekocht. Pas thuis ontdekt dat verpakking al open is geweest. Waarschijnlijk heeft een vorige koper de ICS-2000 geprobeerd (account aangemaakt) en geretourneerd naar de winkel. Het lukt mij nu niet meer om mijn nieuwe account te registeren. De ICS wordt LAN herkend met het juiste MAC adres echter na NEXT komt melding: Error Gateway already confirmed. Service support request achtergelaten bij Klikaanklikuit. Het resetten naar af-fabriek situatie is niet gedocumenteerd. Ook een beschrijving van de P1 (slimme meter aansluiting) is niet gedocumenteerd.

  • JunkieXP
  • Registratie: juli 2004
  • Laatst online: 08-05 14:17

JunkieXP

Missing the BB10 Flow =)!

mitch2kbe schreef op maandag 13 juni 2016 @ 23:45:
Nou, heb ondertussen zelf wat lopen zoeken, en middels een http proxy heb ik de commands kunnen achterhalen. Er wordt een http request gedaan in deze vorm:

code:
1
http://trustsmartcloud2.com/ics2000_api/command.php?email=mi***%40***.eu&password_hash=***command=0100800012A30110C3000000004200000017005C00400002001800070062847E01000000000000000050007290FE9F5BFEE36988D4A14813A893F4D6B9DC94CC70DEAC92F2DD2F6CAA3EDAEDD2AF8A4064AE00A5A77F58139ABBA43D60DDC40BF137434C284C27C7EA4D3B2820B276DFF075D6CA1F1A160EDBB340&action=add&device_unique_id=ffffffff-f635-****-ffff-ffff9a****f9&mac=0012A301****

* = vervangen

dit is het aanschakelen van een lamp. Het uitschakelen is exact dezelfde vorm, behalve de command is anders.

Door de http requests opnieuw uit te sturen, kan ik in ieder geval nu al programmatisch het een en het ander bedienen, al is het wel omslachtig om aan de juiste string te komen :).
Zou je iets concreter aan willen geven hoe je deze data hebt weten te achterhalen. Momenteel enkel nog Android TCP Sniffers gebruikt maar zonder resultaat. Op m'n PC zou ik graag wat handvaten hebben zodat ik weet waar ik de http proxy zoektocht moet aanvangen =)!

Desktop: Wacom Intuos Pen & Touch | Logitech Z2300
Gadgets: BlackBerry KEY2
Earcandy: BeatsX Ft. Beats Pro

Het Algemene Screen-Protector Topic


Acties:
  • +1Henk 'm!

  • mitch2kbe
  • Registratie: januari 2008
  • Laatst online: 26-04 10:49
JunkieXP schreef op vrijdag 31 maart 2017 @ 21:51:
[...]

Zou je iets concreter aan willen geven hoe je deze data hebt weten te achterhalen. Momenteel enkel nog Android TCP Sniffers gebruikt maar zonder resultaat. Op m'n PC zou ik graag wat handvaten hebben zodat ik weet waar ik de http proxy zoektocht moet aanvangen =)!
Hallo,

Ik heb Fiddler gebruikt: http://www.telerik.com/fiddler

Ik weet niet meer 100% zeker hoe ik het gedaan heb. Ik herinner me wel van toen dat het enkel werkte als ik over 3g ging (en dan mijn eigen PC als proxy gebruikte).
Ik heb het net nog eens snel geprobeerd, en kreeg het niet zo 123 aan de praat. Wat wel opviel is dat de app nu klaagt als de certificaten niet ok zijn. Wellicht hebben ze daar nu een check op ingebouwd.

EDIT, het is me nu wel gelukt :). Het werkt dus nog wel.

Dit zijn de stappen die je moet doen:
- Installeer en start fiddler
- Activeer capture https connects, en decrypt https in fiddler options
- Activeer allow remote computers to connect en deactiveer act as system proxy
- Herstart fiddler
- Op je router/firewall, forward port 8888 naar de pc waar fiddler op draait. Zorg dat windows firewall de poort ook toelaat.
- Zet je android toestel op 3g, en geef als proxy publiek ip van je router in, en de fiddler poort (8888)
- Ga op je android naar http://<publiekip>:8888 en download Fiddler Root Certificate
- Installeer het certificaat voor VPN & apps
- Als het goed is, als je nu surft naar een site, zie je de connectie en details in fiddler verschijnen
- Start de Trust app en voer wat commando's uit.
- Je ziet de requests naar trustsmartcloud2.com voorbijkomen. Via Inspectors/Headers kan je de volledige POST zien.

Vergeet niet om na het debuggen de proxy en certificaten terug van je telefoon te gooien.

[Voor 38% gewijzigd door mitch2kbe op 01-04-2017 12:34]


Acties:
  • +1Henk 'm!

  • JunkieXP
  • Registratie: juli 2004
  • Laatst online: 08-05 14:17

JunkieXP

Missing the BB10 Flow =)!

---------------------------------------------

Het is niet meer nodig om de URL's vanuit de Klik Aan Klik Uit via een eigen Proxy op te halen wanneer je gebruik maakt van de nieuwe Triggi Koppeling naar Klik Aan Klik Uit

---------------------------------------------

Aangezien ik gebruik maak van een iMac was het even puzzelen aangezien ik geen zin had om geen zin had om Mono te installeren op OSX.

Maar het goede nieuws is dat ik er met het gebruik van de Trial Versie van Charles Proxy alsnog ben uitgekomen.

Sidenote: Ik moest wel gebruik maken van een iPad die ik via een Hotspot met de 3G van mijn Android toestel moest verbinden aangezien je voor Android een aanpassing in de App moet doen om "User Installed" certificaten te ondersteunen. Dit heeft me het grootste deel van m'n tijd gekost haha.

Ik kopieer hieronder de stappen en pas aan waar nodig voor het gebruik van Charles Proxy op Mac.

1. Installeer en start fiddler
Installeer en Start Charles Proxy
Activeer capture https connects, en decrypt https in fiddler options
Activeer allow remote computers to connect en deactiveer act as system proxy
Herstart fiddler
2. "Recording" was bij mij gelijk actief, te herkennen aan het knopje met het rode bolletje
3. Op je router/firewall, forward port 8888 naar de pc waar Charles Proxy op draait. En zet deze op "Enabeld" (DOH). Zorg dat windows firewall de poort ook toelaat. Voor OSX hoefde ik persoonlijk geen poort meer open te zetten.
4. Zet je android iPhone / iPad op 3g, en geef als proxy publiek ip van je router in, en de Charles Proxy poort (8888)
5. Ga op je android iPhone / iPad naar http://<publiekip>:8888 www.charlesproxy.com/getssl en download Charles Proxy Root Certificate
6. Installeer het certificaat
7. Als het goed is, als je nu surft naar een site, zie je de connectie en details in fiddler Charles Proxy verschijnen
8. Start de Trust of Klik Aan Klik Uit app
9. Je ziet de requests naar trustsmartcloud2.com voorbijkomen.
10. Klik in de linkerzijbalk op de trustsmartcloud2.com folder en kies Enable SSL Proxy
11. Start de Trust app een commando uit, per commando zijn er circa 4 "command.php" requests
12. Klik op de command.php vermeldingen aan de linkerkant en kijk onder het tabje content of in het grote veld een numerieke id van circa 10 tekens staat in de "text" / "html" modus. Als dit het geval is, dan vind je in het bovenste blok de url die je moet hebben.

Vergeet niet om na het debuggen de proxy en certificaten terug van je telefoon / router te gooien.

Leuke bijkomstigheid was precies toen ik de laatste URL had achterhaald, de iPad uitviel en nog geen minuut later de 30 minuten trial verlopen was (deze mag je overigens gewoon opnieuw opstarten) =P.

[Voor 5% gewijzigd door JunkieXP op 03-04-2017 15:23]

Desktop: Wacom Intuos Pen & Touch | Logitech Z2300
Gadgets: BlackBerry KEY2
Earcandy: BeatsX Ft. Beats Pro

Het Algemene Screen-Protector Topic


Acties:
  • +3Henk 'm!

  • JunkieXP
  • Registratie: juli 2004
  • Laatst online: 08-05 14:17

JunkieXP

Missing the BB10 Flow =)!

Ik kreeg zojuist deze tweet door van KlikAanKlikUit:

Vanaf vandaag is klikaan ook beschikbaar via de app Triggi, via de connect channel kunt u zelf hobbyen.

Zelf nog niet bekend met Triggi, maar scheelt wellicht werk met het sniffen naar URL's =P.
___________________________

Ik ben inmiddels wat dieper in Triggi gedoken en wanneer je het KlikAanKlikUit "Kanaal" in Triggi activeert kun je je Schakelaars en Scenes activeren.

Wanneer je via "Triggi Connect" een eigen HTTP Trigger aanmaakt, kun je deze URL aanroepen om een actie vanuit Triggi gedaan te krijgen.

Op deze manier hoef je dus niet langer te weten welke URL's je KlikAanKlikUit App triggert aangezien Triggi dit voor je oppakt (naar eigen zeggen via een oAuth connectie, i.p.v. het meesturen van je Plain Wachtwoord in de GET Parameter).

[Voor 54% gewijzigd door JunkieXP op 03-04-2017 15:19]

Desktop: Wacom Intuos Pen & Touch | Logitech Z2300
Gadgets: BlackBerry KEY2
Earcandy: BeatsX Ft. Beats Pro

Het Algemene Screen-Protector Topic


  • mac-er
  • Registratie: november 2006
  • Laatst online: 07:18
Ondertussen is het al een hele tijd stil in dit topic, ondanks dat reageer ik toch even.

Ik ben nu ook eens hiermee aan de slag gegaan, grootste minpunt dat ik aan de standaardbesturing vind is dat alles via een app moet, en niks via een website gedaan kan worden.

Ik wil zelf graag eens aan de slag met een eigen web-app die ik vanaf zowel mijn telefoon als vanaf mijn pc kan benaderen.

Wat ik mij afvraag, zijn jullie al verder gekomen, of hebben jullie echt verdere stappen gemaakt met Triggi?

Triggi vind ik namelijk ook nogal omslachtig omdat ik voor veel zaken eerst via de KAKU app vanalles moet doen, dan koppelen in de Triggi app en dan volgens mij ook nog eens een connector aanmaken.

Misschien toch een leuk (open-source) project om eens te klussen en zelf wat proberen te maken, maar vind het nu nogal omslachtig hoe ik alles zou moeten doen, en vrij beperkend.

To Apple or not to Apple? That's the banana!


  • EPD
  • Registratie: juli 2017
  • Laatst online: 15-01-2018
Ik ben ook erg benieuwd of er al meer ervaringen zijn. Met name in combinatie met Domoticz.
Heleaal nu de ICS-2000 ook Zigbee LL en HA ondersteund.

  • rutgerdegraaf
  • Registratie: januari 2018
  • Laatst online: 12-03-2018
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!

Acties:
  • +7Henk 'm!

  • h3x4d3c1m4l
  • Registratie: juni 2014
  • Laatst online: 24-06 09:57
Ik ben hier op dit moment mee bezig. Met wat reverse engineering is het me gelukt te achterhalen hoe de communicatie tussen de ICS-2000 en de mobiele app werkt op het moment dat je smartphone en de ICS-2000 in hetzelfde netwerk zitten. De data gaat dan niet meer via de PHP-scriptjes op trustsmartcloud2.com maar via UDP-berichten.

Die UDP-berichten kan ik nu lezen en schrijven en de inhoud decrypten en encrypten. Inhoudelijk nog niet gekeken, maar ik zie een hoop JSON voorbij komen. Ik ga later weer verder met RE'en.

Als ik wat spannends voor elkaar heb gekregen zal ik een repo maken met de C# code van wat ik tot nu toe heb!

[Voor 9% gewijzigd door h3x4d3c1m4l op 07-01-2018 14:05]


  • Watashifr
  • Registratie: februari 2018
  • Laatst online: 20-05-2018
Ben heel benieuwd naar de voortgang h3x4d3c1m4l, heb een oplossing gebouwd voor een aantal verschillende systemen en wil graag een ICS-2000 toevoegen. Kunnen we ergens volgen hoe het gaat? Niet noodzakelijkerwijs de C# code, wat mij vooral interesseert zijn de UDP-broadcasts.

  • Dick99999
  • Registratie: december 2004
  • Laatst online: 16-06 10:56
Sluit ik mij bij aan. Ik ben geïnteresseerd in een HomeAssist aansluiting voor de ICS-2000, dan kan alles lokaal op mijn netwerk draaien. Ik zie voor de smart home toepassing weinig voordelen in cloud oplossingen en ga voor lokaal. Daarom ook een 2000 gekozen.

  • Twanniej
  • Registratie: februari 2011
  • Laatst online: 09:42
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?

  • MeShell
  • Registratie: juni 2009
  • Laatst online: 15:02
Zeker belangstelling voor!

  • Dick99999
  • Registratie: december 2004
  • Laatst online: 16-06 10:56
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.

  • Robin. K
  • Registratie: oktober 2018
  • Laatst online: 17-11-2018
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

  • JanInternetman
  • Registratie: november 2018
  • Laatst online: 02-01-2019
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 !

  • hvdkooij
  • Registratie: november 2017
  • Laatst online: 19-04 20:36
Heeft iemand al eens gekeken of het via de omweg Olisto wel te doen is?

  • pauldirkson
  • Registratie: mei 2005
  • Laatst online: 25-01-2020
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:
  • +2Henk 'm!

  • BJD
  • Registratie: februari 2003
  • Laatst online: 09-04 17:09
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:
  • 0Henk 'm!

  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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]


  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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:
  • 0Henk 'm!

  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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]


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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 :)

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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]


  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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?

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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?

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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);

  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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]


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
Ook heb ik voor temperatuur en humidity sensors de function indexen gevonden. https://i.imgur.com/krAB0rG.png

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
Je moet even die deserialize output in str() zetten, dan krijg je rgb waardes te zien.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
Correct, is gewoon een trucje om ook negatieve waardes op te slaan, maar dat is wel zeker de temperatuur.

  • deldens
  • Registratie: mei 2002
  • Laatst online: 15-06 20:31
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?

  • ErichRadstake
  • Registratie: augustus 2015
  • Laatst online: 01-06 15:05
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?

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
@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


  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
@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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
@ThunderTNT Als je die code nog kan vinden graag.

Problems don't exist, only challenges


  • ErichRadstake
  • Registratie: augustus 2015
  • Laatst online: 01-06 15:05
@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.

  • BJD
  • Registratie: februari 2003
  • Laatst online: 09-04 17:09
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:



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: 15:58

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.


  • DelanoRochan
  • Registratie: maart 2015
  • Laatst online: 16-05 20:18
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?

  • Illusion
  • Registratie: november 2000
  • Laatst online: 15:58

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.


  • vromanr
  • Registratie: juni 2018
  • Laatst online: 01-06 15:51
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.

  • JohnyTheCarrot
  • Registratie: februari 2021
  • Laatst online: 14-02 11:08
@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.

  • ThunderTNT
  • Registratie: november 2015
  • Laatst online: 17-06 14:47
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.

  • JohnyTheCarrot
  • Registratie: februari 2021
  • Laatst online: 14-02 11:08
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.

  • JohnyTheCarrot
  • Registratie: februari 2021
  • Laatst online: 14-02 11:08
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 11:08
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.

Slechte foto, zal binnenkort mijn code volledig op github plaatsen. Hopelijk helpt dit toch een beetje.@ThunderTNT

  • JohnyTheCarrot
  • Registratie: februari 2021
  • Laatst online: 14-02 11:08

  • hvdkooij
  • Registratie: november 2017
  • Laatst online: 19-04 20:36
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.

  • hvdkooij
  • Registratie: november 2017
  • Laatst online: 19-04 20:36
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.

  • Joop Visstick
  • Registratie: september 2002
  • Laatst online: 24-06 07:30
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


  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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.

Acties:
  • 0Henk 'm!

  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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]


Acties:
  • 0Henk 'm!

  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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.

  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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]


  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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]


  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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]


  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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.

Acties:
  • 0Henk 'm!

  • bjp
  • Registratie: januari 2010
  • Laatst online: 21-06 16:39
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)
Pagina: 1 2 Laatste


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True