Acties:
  • +1 Henk 'm!

  • TrafeX
  • Registratie: Maart 2003
  • Laatst online: 13-06 17:35

TrafeX

Tuned for life!

Ik heb nu aardig voor elkaar wat ik wilde bereiken:
Afbeeldingslocatie: https://www.trafex.nl/wp-content/uploads/2016/01/Selection_311.png

Een combinatie van InfluxDB & Grafana.

TrafeX.nl - Clipboard.ninja


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
kraades schreef op zaterdag 09 januari 2016 @ 22:27:
Goed om nog een php versie voorbij te zien komen. Zou natuurlijk mooi zijn om de code ook te zien. ;)

Ik heb er niet veel verstand van maar de server lijkt nog "stream features" terug te sturen?
http://xmpp.org/extensions/xep-0198.html#feature
Je krijgt de success niet terug van de server.
Ik krijg op regel 17 een authenticatie succes van de server, maar daarna krijg ik inderdaad nog een "stream features" terug als ik verder wil gaan. Of ben ik misschien al helemaal klaar met connecten, en kan ik een verzoek gaan inschieten?

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
KabouterSuper schreef op zondag 10 januari 2016 @ 11:44:
Ik krijg op regel 17 een authenticatie succes van de server, maar daarna krijg ik inderdaad nog een "stream features" terug als ik verder wil gaan. Of ben ik misschien al helemaal klaar met connecten, en kan ik een verzoek gaan inschieten?
Je kunt het proberen, maar ik denk niet dat het werkt. De server wil een stream opzetten met een aantal features, en de client volgt dat. In de Node.js code regelt node-xmpp-client dat allemaal, daar hoef ik verder niks voor te doen.

Dit is wat er allemaal gebeurt:

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
xmpp:client:session start socket connection
xmpp:connection setup socket
xmpp:connection use lazy socket
xmpp:connection setup stream
xmpp:connection send: <stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" to="wa2-mz36-qrmzh6.bosch.de">
xmpp:connection receive: <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="wa2-mz36-qrmzh6.bosch.de" id="df9f5c48" xml:lang="en" version="1.0">
xmpp:connection receive: <stream:features><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"></starttls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>DIGEST-MD5</mechanism></mechanisms><auth xmlns="http://jabber.org/features/iq-auth"/></stream:features>
xmpp:connection send: <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
xmpp:connection receive: <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
xmpp:connection use standard socket
xmpp:connection setup stream
xmpp:connection send: <stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" to="wa2-mz36-qrmzh6.bosch.de">
xmpp:connection receive: <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="wa2-mz36-qrmzh6.bosch.de" id="df9f5c48" xml:lang="en" version="1.0"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>DIGEST-MD5</mechanism></mechanisms><auth xmlns="http://jabber.org/features/iq-auth"/></stream:features>
xmpp:connection send: <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="DIGEST-MD5"></auth>
xmpp:connection receive: <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">...</challenge>
xmpp:connection send: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">...</response>
xmpp:connection receive: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl">...</success>
xmpp:connection send: <stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" to="wa2-mz36-qrmzh6.bosch.de">
xmpp:connection receive: <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="wa2-mz36-qrmzh6.bosch.de" id="df9f5c48" xml:lang="en" version="1.0"><stream:features><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
xmpp:connection send: <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/>
xmpp:connection receive: <iq type="result" id="bind" to="wa2-mz36-qrmzh6.bosch.de/df9f5c48"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>rrccontact_MYSERIAL@wa2-mz36-qrmzh6.bosch.de/df9f5c48</jid></bind></iq>
xmpp:connection send: <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>
xmpp:connection receive: <iq type="result" id="sess" from="wa2-mz36-qrmzh6.bosch.de" to="rrccontact_MYSERIAL@wa2-mz36-qrmzh6.bosch.de/df9f5c48"/>
xmpp:connection send: <presence/>
xmpp:connection send: <message from="rrccontact_MYSERIAL@wa2-mz36-qrmzh6.bosch.de" to="rrcgateway_MYSERIAL@wa2-mz36-qrmzh6.bosch.de"><body>GET /ecus/rrc/uiStatus HTTP/1.1&amp;#13;
User-Agent: NefitEasy&amp;#13;
&amp;#13;
</body></message>
xmpp:connection receive: <message to="rrccontact_MYSERIAL@wa2-mz36-qrmzh6.bosch.de/df9f5c48" type="chat" xml:lang="en" from="rrcgateway_MYSERIAL@wa2-mz36-qrmzh6.bosch.de/RRC-RestApi"><body>HTTP/1.0 200 OK
Content-Length:  640
Content-Type: application/json
connection: close

...</body></message>
xmpp:connection send: </stream:stream>
xmpp:connection receive: </stream:stream>

Acties:
  • +1 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
@brightvalve: Thanks, dit is heel nuttig. Ik gebruik zoveel mogelijk php-code van een jabber client, dus ik hoef zelf gelukkig geen xmpp-dingen te programmeren. Ik moet alleen hier en daar wat responses ombouwen.

Maar ik zie dat je een bind doet op de plek waar ik het niet meer weet. Dit stap zit er bij mij niet op dezelfde manier in. Dat ga ik dus eens proberen.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Welke client gebruik je? JAXL?

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • Shapeshifter
  • Registratie: Januari 2004
  • Laatst online: 18-06 16:43

Shapeshifter

Get it over with

Dit is een interessante ontwikkeling. Ik zoek al een tijdje naar een slimme thermostaat die ik via een API kan benaderen, maar helaas werken de meeste via de cloud. Begrijp ik nu goed dat hier contact op wordt genomen met de backend van Bosch (de cloud dus) in plaats van dat het apparaat direct gequeried wordt? Als dat zo is moet ik nog even verder zoeken naar een apparaat dat wel direct aangestuurd en uitgelezen kan worden, geen cloud voor mij (te veel risico dat een bedrijf failliet gaat / stopt met ondersteuning / IPs gaat blokkeren e.d.). Wel mooi werk om de apps te reverse engineeren :)

[ Voor 9% gewijzigd door Shapeshifter op 10-01-2016 16:08 ]

HP ZBook Studio G3 - Hyundai Ioniq EV Classic - Opel Vivaro-e 75kWh - 22x Prusa i3 MK3S - 8x Prusa MINI+ - Ooznest Workbee 1,5m x 1,5m


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Klopt, dit geschiedt via de backend van Bosch.

Het is idd wel een aandachtspunt..
nieuws: Nest kampte met grote storing wereldwijd

[ Voor 66% gewijzigd door technorabilia op 10-01-2016 16:25 ]

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Nee, XMPPHP. JAXL zat vol met dingen die mij overbodig leken, en XMPPHP doet tot dusver alles wat ik nodig heb, en niet veel meer.

Maar ik ben al weer een stukje verder. De authenticatie en binding werkt nu goed (ik miste in het begin mijn starttls-request). Ik ben nu klaar om mijn eerste request te sturen.....to be continued.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Ja klopt wel jaxl is nogal uitgebreid.
Ben benieuwd naar je verdere bevindingen. Succes! :)

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • Vaez
  • Registratie: Juni 2009
  • Nu online
Zou het mogelijk zijn dat het timeout commando van de web server een http error terug geeft ipv alleen een stack trace. Dit maakt het wat eenvoudiger om in het geval van een timeout dit netjes af te handelen.

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Vaez schreef op maandag 11 januari 2016 @ 12:39:
Zou het mogelijk zijn dat het timeout commando van de web server een http error terug geeft ipv alleen een stack trace. Dit maakt het wat eenvoudiger om in het geval van een timeout dit netjes af te handelen.
Je krijgt toch een 500 error? Eventueel kan ik in de "reason phrase" (die nu op "Internal Server Error" staat) de naam van de error zetten, als dat handig is.

Acties:
  • 0 Henk 'm!

  • Vaez
  • Registratie: Juni 2009
  • Nu online
Dan zou ik daar inderdaad wel op kunnen checken, overigens een 500 error wordt ook opgegooid meestal als er iets anders mis is. Ik denk dat ik de timeout tijd gewoon korter moet zetten en dan de 500 moet afvangen. Wat doet de --timeout nou precies? Kapt deze jou request naar de web server af of het request van de web server naar nefit? En in het geval dat je deze timeout krijgt kan ik er dan zo goed als vanuit gaan dat de volgende call weer werkt of beter een tijdje geen calls uitvoeren dan?

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Vaez schreef op maandag 11 januari 2016 @ 15:12:
Dan zou ik daar inderdaad wel op kunnen checken, overigens een 500 error wordt ook opgegooid meestal als er iets anders mis is. Ik denk dat ik de timeout tijd gewoon korter moet zetten en dan de 500 moet afvangen. Wat doet de --timeout nou precies? Kapt deze jou request naar de web server af of het request van de web server naar nefit? En in het geval dat je deze timeout krijgt kan ik er dan zo goed als vanuit gaan dat de volgende call weer werkt of beter een tijdje geen calls uitvoeren dan?
Die timeout error wordt gegenereerd als de Nefit backend niet binnen X seconden een antwoord geeft op een request. Dat kan gebeuren als er meerdere clients actief zijn, het lijkt erop dat de backend dan niet elk request beantwoordt. Je kunt daarna weer gewoon een nieuw request opsturen, je hoeft niet te wachten.

Overigens wordt dit in de meest recente versies van nefit-easy-* beter afgehandeld en zal de hoeveelheid timeouts die je krijgt een stuk lager zijn dan voorheen.

Acties:
  • +1 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 15:30
Ivm dat dit werkt via de cloud.. iemand die al geprobeerd heeft de data van thermostaat te capturen naar de server en dan deze na te bootsen?

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Icekiller2k6 schreef op maandag 11 januari 2016 @ 16:45:
Ivm dat dit werkt via de cloud.. iemand die al geprobeerd heeft de data van thermostaat te capturen naar de server en dan deze na te bootsen?
Ik niet, alhoewel ik vermoed dat het op dezelfde manier werkt als hoe de app met de backend communiceert (namelijk via XMPP).

De manier waarop ik de communicatie tussen app en backend capture is door middel van XMPPloit. Het werkt wel een beetje omslachtig:
  • Ik stel m'n Mac in als WiFi-hotspot (System Preferences > Sharing)
  • Ik stel m'n iPhone in zodat ie gebruik maakt van dat WiFi-netwerk
  • Ik stel de firewall op m'n Mac in zodat al het verkeer met target poort 5222 (XMPP) dat via het WiFi-hotspot verstuurd wordt, geredirect wordt naar de lokale poort 5222
  • Op de lokale 5222 draai ik XMPPloit, die verbinding maakt met de backend
De app denkt dus verbinding te maken met de Nefit/Bosch backend, maar dat verkeer wordt door XMPPloit geleid, die al het verkeer logt.

Precies dezelfde werkwijze zou ik ook kunnen gebruiken voor de Easy zelf, die moet ik dan zo instellen dat ie dat adhoc WiFi netwerk gebruikt ipv mijn gewone netwerk. Als ik binnenkort een keer niks te doen heb zal ik daar eens naar kijken.

Ik bedenk overigens dat het waarschijnlijk een stuk makkelijker kan: in m'n DHCP server zou ik kunnen instellen dat mijn lokale Linux-server als (primary) DNS gebruikt moet worden, en daar kan ik verkeer richting de Nefit/Bosch backend kunnen ombuigen naar localhost door 127.0.0.1 terug te geven ipv het IP-nummer van de backend zelf. Ook iets om uit te proberen.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 17:39
brightvalve schreef op dinsdag 12 januari 2016 @ 11:28:
[...]
Precies dezelfde werkwijze zou ik ook kunnen gebruiken voor de Easy zelf, die moet ik dan zo instellen dat ie dat adhoc WiFi netwerk gebruikt ipv mijn gewone netwerk. Als ik binnenkort een keer niks te doen heb zal ik daar eens naar kijken.

Ik bedenk overigens dat het waarschijnlijk een stuk makkelijker kan: in m'n DHCP server zou ik kunnen instellen dat mijn lokale Linux-server als (primary) DNS gebruikt moet worden, en daar kan ik verkeer richting de Nefit/Bosch backend kunnen ombuigen naar localhost door 127.0.0.1 terug te geven ipv het IP-nummer van de backend zelf. Ook iets om uit te proberen.
Dat eerste ben ik benieuwd of dat gaat werken. Ik heb wel eens een WiFi-dimmer lopen sniffen met Wireshark, daarvoor moest ik het verkeer wel kunnen onderscheppen. Een WiFi-hotspot gemaakt door m'n Windows 7 PC werkte toen niet. M'n telefoon zag dat ad-hoc netwerk niet volgens mij.

Uiteindelijk een oude router ingezet als accespoint en die aan 2e netwerkkaart in m'n PC verbonden. Netwerkbrug ingesteld in Windows 7 en op die manier kon ik het verkeer wel onderscheppen.

Heb ook een OpenWRT router waar ik de tweede methode die je beschrijft had kunnen proberen, maar mijn netwerkkennis is daar onvoldoende voor.

Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 15:30
*knip*, niet doen. Hier kun je V&A voor gebruiken.

[ Voor 72% gewijzigd door ThinkPad op 12-01-2016 11:56 ]

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
brightvalve schreef op dinsdag 12 januari 2016 @ 11:28:
Ik bedenk overigens dat het waarschijnlijk een stuk makkelijker kan: in m'n DHCP server zou ik kunnen instellen dat mijn lokale Linux-server als (primary) DNS gebruikt moet worden, en daar kan ik verkeer richting de Nefit/Bosch backend kunnen ombuigen naar localhost door 127.0.0.1 terug te geven ipv het IP-nummer van de backend zelf. Ook iets om uit te proberen.
Dat werkt in ieder geval voor de app op m'n iPhone, en ik vermoed dat het ook voor de Easy zelf zal werken, tenzij die hardcoded DNS-servers gebruikt (ik meen namelijk dat je op het apparaat geen DNS kunt instellen).

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 17:39
brightvalve schreef op dinsdag 12 januari 2016 @ 12:55:
[...]


Dat werkt in ieder geval voor de app op m'n iPhone, en ik vermoed dat het ook voor de Easy zelf zal werken, tenzij die hardcoded DNS-servers gebruikt (ik meen namelijk dat je op het apparaat geen DNS kunt instellen).
Dan moet je het wel kunnen forceren met een redirect-rule op/in je firewall: http://unix.stackexchange...c-dns-provider-at-network

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
ThinkPadd schreef op dinsdag 12 januari 2016 @ 13:39:
Dan moet je het wel kunnen forceren met een redirect-rule op/in je firewall: http://unix.stackexchange...c-dns-provider-at-network
Dat lijkt niet eens nodig te zijn :) Door een beetje gegoochel met DNS (*) kan ik verkeer tussen de Easy en de Nefit/Bosch backend afluisteren (alhoewel de Easy nog wel een beetje moeilijk doet, moet even uitzoeken waar dat aan ligt).

*: mijn Vigor router heeft iets genaamd 'LAN DNS' waarmee je kunt instellen dat de ingebouwde DNS-server voor bepaalde hostnames/domeinnamen een bepaald IP-nummer moet teruggeven. Ik laat 'em requests voor de backend op die manier verwijzen naar m'n Mac waar XMPPloit op draait als mitm.

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Weer een stapje verder met de php-versie. Ik krijg een (encrypted) bericht terug als ik /ecus/rrc/uiStatus uitlees. De volgende versie is om dit bericht te decrypten. Dit lukt helaas nog niet. Ik heb de code van brightvalve om proberen te zetten naar php, maar er komt niets zinnigs uit. Ik gebruik de code van http://aesencryption.net/, wat min of meer een wrapper om mcrypt heen is. Ik ben niet gehecht aan het gebruik van deze code, maar op de genoemde website kan je online encrypten en decrypten, wat het debuggen gemakkelijker maakt.

Hieronder de code tot nu toe.

$message is het antwoord van Bosch,
$accessKey is het serial nummer (aangepast naar aanleiding van reactie hieronder. Credits: brightvalve),
$privatePassword is je eigen wachtwoord
De accessKey en wachtwoord zijn niet geprefixed of suffixed.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            $message="...";
            $accessKey="...";
            $privatePassword="...";
            $magicKey='58f18d70f667c9c79ef7de435bf0f9b1553bbb6e61816212ab80e5b0d351fbb1';
            $magicKey=pack('H32',$magicKey);
            $inputKey=md5(utf8_encode($accessKey).$magicKey).md5($magicKey.utf8_encode($privatePassword));
//fout           $inputKey=pack('H32',$inputKey);
            $inputKey=pack('H*',$inputKey); //[aangepast naar aanleiding van reactie hieronder. Credits: brightvalve]
            
            include 'AES.php'; //http://aesencryption.net/
            $inputText = $message;
            $blockSize = 256;
            $aes = new AES($inputText, $inputKey, $blockSize);
            $aes->setData($message);
            $dec=$aes->decrypt();
            echo "After decryption: ".$dec."\n";

Klopt mijn inputKey? Moet ik misschien toch prefixen of suffixen? Of ga ik de mist in met de stringrepresentatie versus de binaire representatie? Is er iemand die wil kijken of de berichten van nefit via http://aesencryption.net/ goed gedecrypt kunnen worden? Dit zou in elk geval bevestigen dat de AES-decryptie in php goed zou werken. Wat het testen moelijk maakt is dat als ik de inputKey kopieer van mijn scherm naar aesencryption.net/ dat de karakterset opeens heel belangrijk wordt in verband met de vreemde tekens.

[ Voor 4% gewijzigd door KabouterSuper op 13-01-2016 16:42 . Reden: Antwoorden van brightvalve ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Ik neem aan dat je alleen de body bedoelt, en dat die al base64-decoded is?
$accessKey is het serial nummer
Dat klopt niet, dat moet de "toegangscode" (of hoe dat ding ook heet) zijn. Je hebt een serienummer én een toegangscode, en daarnaast je eigen ingestelde wachtwoord.
PHP:
1
2
$magicKey='58f18d70f667c9c79ef7de435bf0f9b1553bbb6e61816212ab80e5b0d351fbb1';
$magicKey=pack('H32',$magicKey);
Ik weet niks van PHP, maar "H32" klinkt vreemd. Moet dat niet "H*" zijn (of op z'n minst "H64")? De lengte van de byte-array die je nodig hebt moet in ieder geval 32 zijn.

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
brightvalve schreef op woensdag 13 januari 2016 @ 13:57:
[...]
Ik neem aan dat je alleen de body bedoelt, en dat die al base64-decoded is?
Ja, ik bedoel de body. de body hoeft volgens mij niet ge-base64-decode-ded worden, omdat dit al in de AES-decryptie gebeurt (regel 149 van de php-code op http://aesencryption.net/).
brightvalve schreef op woensdag 13 januari 2016 @ 13:57:
[...]
Dat klopt niet, dat moet de "toegangscode" (of hoe dat ding ook heet) zijn. Je hebt een serienummer én een toegangscode, en daarnaast je eigen ingestelde wachtwoord.
My bad, een foutje in de tekst. In de code zat het wel goed.
brightvalve schreef op woensdag 13 januari 2016 @ 13:57:
[...]

Ik weet niks van PHP, maar "H32" klinkt vreemd. Moet dat niet "H*" zijn (of op z'n minst "H64")? De lengte van de byte-array die je nodig hebt moet in ieder geval 32 zijn.
Je hebt gelijk. Ik had "H32" ook gebruikt bij de authenticatie, en dat werkte goed. Maar in dit geval is de string natuurlijk twee keer zo lang, omdat er twee md5-string aan elkaar geplakt worden.

Maar helaas krijg ik nog steeds onzin terug.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
KabouterSuper schreef op woensdag 13 januari 2016 @ 16:40:
Maar helaas krijg ik nog steeds onzin terug.
Misschien kun je in de nodejs code wat debug messages zetten zodat je e.e.a. kan vergelijken en/of aan http://aesencryption.net/ kunt voeren?
https://github.com/robert...ter/lib/encryption.js#L44

Edit:
E.e.a. geprobeerd maar ik krijg de nodejs output niet in lijn met aes.php... :?

[ Voor 10% gewijzigd door technorabilia op 13-01-2016 17:35 ]

👉🏻 Blog 👈🏻


Acties:
  • +1 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
KabouterSuper schreef op woensdag 13 januari 2016 @ 16:40:
Maar helaas krijg ik nog steeds onzin terug.
Als je Node.js draait (of installeert) zou je encryption.js kunnen downloaden naar een directory en daar mee spelen, bv door op strategische plaatsen wat data de console.log'en (maakt alleen gebruik van de standaard Node.js library dus je hoeft er niet nog extra modules voor te installeren).

Dan kun je dat naast je PHP code houden om te zien welke acties wel, en wel nog niet goed werken.

Voorbeeldscript:
code:
1
2
3
4
5
6
7
8
9
10
const Encryption = require('./encryption');
const crypt      = Encryption(NEFIT_SERIAL_NUMBER, NEFIT_ACCESS_KEY, NEFIT_PASSWORD);

// Chat key (byte-array)
console.log('CHAT KEY  :', crypt.keys.chat.toString('hex'));

// Decrypt Base64-encoded data.
const data   = 'BASE 64 STRING HIER';
const buffer = new Buffer(data, 'base64');
console.log('DECRYPTED :', crypt.decrypt(buffer) );


EDIT: hier een werkende PHP-versie om data te decrypten (ik ben blij dat ik nooit iets in PHP hoef te doen, het zal voor PHP-devs vast heel logisch zijn om MCRYPT_RIJNDAEL_128 te moeten gebruiken om AES-256 te decrypten, maar voor mij niet...)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$magicKey = pack("H*", "58f18d70f667c9c79ef7de435bf0f9b1553bbb6e61816212ab80e5b0d351fbb1");

function generateKey($magicKey, $id_key_uuid, $privatePassword) {
  return md5($id_key_uuid . $magicKey, true) . md5($magicKey . $privatePassword, true);
}

function decrypt($message, $magicKey, $accessKey, $privatePassword) {
  // Generate the key.
  $key = generateKey($magicKey, $accessKey, $privatePassword);

  // Decrypt the (base64-encoded) message.
  // Apparently, AES-256 requires the use of MCRYPT_RIJNDAEL_128 for some reason...
  return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($message), MCRYPT_MODE_ECB);
}


En hier een versie die OpenSSL gebruikt (ziet er een stuk logischer uit):
code:
1
2
3
4
5
6
7
function decrypt($message, $magicKey, $accessKey, $privatePassword) {
  // Generate the key.
  $key = generateKey($magicKey, $accessKey, $privatePassword);

  // Decrypt the message.
  return openssl_decrypt($message, "aes-256-ecb", $key, OPENSSL_ZERO_PADDING);
}

[ Voor 60% gewijzigd door brightvalve op 13-01-2016 20:27 ]


Acties:
  • +1 Henk 'm!

  • sweebee
  • Registratie: Oktober 2008
  • Laatst online: 18-06 20:08
Heel vet dit! Heb 't houtje-touwtje aan de praat gekregen met pimatic en homekit. :)

Afbeeldingslocatie: https://i.imgur.com/07TitdX.png

Wat is eigenlijk het commando om te zien of hij aan het verwarmen is? Kan het zo niet vinden? of zie ik iets over het hoofd.

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
sweebee schreef op woensdag 13 januari 2016 @ 22:25:
Wat is eigenlijk het commando om te zien of hij aan het verwarmen is? Kan het zo niet vinden? of zie ik iets over het hoofd.
In de uitvoer van easy status (of .status() als je nefit-easy-commands direct gebruikt) staat het veld "boiler indicator", die heeft één van de volgende waarden: "central heating", "hot water" en "off". Daarmee kun je zien waar je ketel nu mee bezig is.

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
sweebee schreef op woensdag 13 januari 2016 @ 22:25:
Heel vet dit! Heb 't houtje-touwtje aan de praat gekregen met pimatic en homekit. :)
Ik heb nu bezig met een plugin voor Homebridge. Dat werkt inderdaad wel heel erg gaaf :)

Zodra het een beetje fatsoenlijk werkt zal ik het wel op Github zetten.

Bij deze.

EDIT: duh, er bestond al een Easy plugin voor Homebridge!

[ Voor 20% gewijzigd door brightvalve op 14-01-2016 12:01 ]


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Weer even een update: het probleem blijkt niet in de AES-decryptie zelf te zitten. Ik heb node.js geinstalleerd, en daarmee de boel gecheckt. De php-versie geeft (en gaf al die tijd) dezelfde output als dat de node.js versie doet. Kortom, ik ga een dezer dagen op zoek naar het echte probleem.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
KabouterSuper schreef op donderdag 14 januari 2016 @ 11:31:
Weer even een update: het probleem blijkt niet in de AES-decryptie zelf te zitten. Ik heb node.js geinstalleerd, en daarmee de boel gecheckt. De php-versie geeft (en gaf al die tijd) dezelfde output als dat de node.js versie doet. Kortom, ik ga een dezer dagen op zoek naar het echte probleem.
Het is me niet helemaal duidelijk of je nu al kunt decrypten of niet (en wat het daadwerkelijke probleem is :)).

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
brightvalve schreef op donderdag 14 januari 2016 @ 11:58:
[...]


Het is me niet helemaal duidelijk of je nu al kunt decrypten of niet (en wat het daadwerkelijke probleem is :)).
Ik heb nog steeds geen leesbare output :-( Maar in elk geval geeft de decryptie in node.js dezelfde output als php. Dus technisch gezien is het gelukt om de decrypt werkend te krijgen. Waar het fout gaat weet ik niet. Wellicht gebruik ik ergens het serialnr in plaats van het wachtwoord of iets dergelijks.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
KabouterSuper schreef op donderdag 14 januari 2016 @ 14:00:
Ik heb nog steeds geen leesbare output :-( Maar in elk geval geeft de decryptie in node.js dezelfde output als php. Dus technisch gezien is het gelukt om de decrypt werkend te krijgen. Waar het fout gaat weet ik niet. Wellicht gebruik ik ergens het serialnr in plaats van het wachtwoord of iets dergelijks.
Ah, dus de decryptie in Node.js werkt ook niet voor je?

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
brightvalve schreef op donderdag 14 januari 2016 @ 14:02:
[...]


Ah, dus de decryptie in Node.js werkt ook niet voor je?
Klopt als een bus. Maar in elk geval bevestigde dit dat de php-versie goed werkt. Dus ik kan nu mijn energie focussen op de input, in plaats van me zorgen te maken of de decryptie wel goed werkt.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Vaez
  • Registratie: Juni 2009
  • Nu online
Ik heb een virtueel device gemaakt op mijn fibaro home center 2 die de temperatuur en nog wat meer informatie toont. Maar heb al meerdere keren gehad dat de http server alleen nog maar timeouts terug geeft. Dit blijft dan meestal de rest van de dag zo tot de NAS waarop de http server draait opnieuw opstart sochtends(gaat snachts automatisch uit). Hebben meer mensen die gebruik maken van de http server hier last van? Of ligt het aan mijn eigen script die de aanroepen doet?

Als parameters gebruik ik: /share/MD0_DATA/.qpkg/NefitEasyHttpServer/bin/easy-server --host=0.0.0.0 --timeout=10

De preciese error is: Error: REQUEST_TIMEOUT at null. (/share/MD0_DATA/.qpkg/NefitEasyHttpServer/node_modules/nefit-easy-core/lib/index.js:109:23) at Timer.listOnTimeout (timers.js:92:15)

[ Voor 13% gewijzigd door Vaez op 14-01-2016 22:53 ]


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Vaez schreef op donderdag 14 januari 2016 @ 22:45:
Ik heb een virtueel device gemaakt op mijn fibaro home center 2 die de temperatuur en nog wat meer informatie toont. Maar heb al meerdere keren gehad dat de http server alleen nog maar timeouts terug geeft.
Je moet ff de nieuwste versie installeren, daarmee is de hoeveelheid timeouts een stuk minder.

Acties:
  • 0 Henk 'm!

  • Vaez
  • Registratie: Juni 2009
  • Nu online
Hoi ik gebruik de laatste revisie van de master branch van https://github.com/robertklep/nefit-easy-http-server dat is toch de nieuwste?

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Vaez schreef op donderdag 14 januari 2016 @ 23:36:
Hoi ik gebruik de laatste revisie van de master branch van https://github.com/robertklep/nefit-easy-http-server dat is toch de nieuwste?
Dat klopt, maar ik vermoed dat je niet opnieuw npm install hebt gedraaid. De timeout foutmelding laat zien dat er een oude versie van nefit-easy-core gebruikt wordt.

Overigens publiceer ik alles ook naar de NPM repository, je hebt de GH repo niet echt nodig (over het algemeen zal "master" wel werken maar het kan ook zijn dat ik dingen push die nog niet klaar zijn).

Acties:
  • 0 Henk 'm!

  • Vaez
  • Registratie: Juni 2009
  • Nu online
Ik denk dat je inderdaad gelijk hebt dat de nieuwe versie niet geinstalleerd is. Als ik npm list doe krijg ik namelijk npm ERR! invalid: nefit-easy-commands@1.0.4

Mijn init script op de qnap checkt elke dag bij het opstarten of er een nieuwe versie is in github en haalt die dan binnen en zou install moeten draaien als er een nieuwe is, dit lijkt niet te werken nu.

Maar je raadt eigenlijk dus ook aan niet de git repo te gebruiken maar een npm repository? Want de master branch is niet altijd stable? Meestal zie je namelijk dat er gebruik gemaakt wordt van een develop branch in het geval dat code nog niet stable is.

Hoe configureer ik deze NPM repository precies? Of is npm update genoeg?

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Vaez schreef op vrijdag 15 januari 2016 @ 01:47:
Ik denk dat je inderdaad gelijk hebt dat de nieuwe versie niet geinstalleerd is. Als ik npm list doe krijg ik namelijk npm ERR! invalid: nefit-easy-commands@1.0.4
Geen idee wat daar de reden van is, ik kan die versie gewoon installeren:
code:
1
2
3
4
5
$ npm i nefit-easy-commands@1.0.4
nefit-easy-commands@1.0.4 node_modules/nefit-easy-commands
|-- require-all@2.0.0
|-- bluebird@3.1.1
|-- nefit-easy-core@1.3.0 (promise-queue@2.2.2, http-string-parser@0.0.5, debug@2.2.0, node-xmpp-client@3.0.0)
Mijn init script op de qnap checkt elke dag bij het opstarten of er een nieuwe versie is in github en haalt die dan binnen en zou install moeten draaien als er een nieuwe is, dit lijkt niet te werken nu.

Maar je raadt eigenlijk dus ook aan niet de git repo te gebruiken maar een npm repository? Want de master branch is niet altijd stable? Meestal zie je namelijk dat er gebruik gemaakt wordt van een develop branch in het geval dat code nog niet stable is.
Als meerdere mensen aan een repo werken is dat wel te prefereren, maar ik neem vaak de moeite niet om elke feature in een aparte branch te implementeren. Ik zeg ook niet dat je er niet op kunt vertrouwen dat "master" niet gaat werken, meestal wijst "master" namelijk naar de laatste release (die ik overigens ook tag, dus als je per se via GH wilt installeren kun je ook tags uitchecken en de nieuwste pakken; die zijn "gegarandeerd" altijd goed).
Hoe configureer ik deze NPM repository precies? Of is npm update genoeg?
Als je de server wilt installeren: $ npm install nefit-easy-http-server -g

Dan komt ie waarschijnlijk ergens in /usr/local te staan. Als je dat niet wilt kun je de -g achterwege laten, dan komt de executable in de huidige directory in ./node_modules/.bin/ terecht.

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
KabouterSuper schreef op donderdag 14 januari 2016 @ 14:04:
[...]


Klopt als een bus. Maar in elk geval bevestigde dit dat de php-versie goed werkt. Dus ik kan nu mijn energie focussen op de input, in plaats van me zorgen te maken of de decryptie wel goed werkt.
Yes!!!! De basis werkt eindelijk in php :-). En eigenlijk heeft het vanaf het begin goed gewerkt. De fout zat in mijn wachtwoord. De Easy kapt wachtwoorden af op 10 tekens. En het wachtwoord dat ik gebruikte heeft 12 tekens....ik heb nooit gezien dat de laatste twee tekens genegeerd werden bij het invullen in de app.

Ik ga van het weekend de php-code opschonen. Mocht iemand interesse hebben, laat het dan even weten. In elk geval draait het bij mij prima op mijn synology (DS216play), simpelweg via de webservice....dus geen ingewikkelde installaties nodig.

@brightvalve: heel erg bedankt voor je hulp, zonder je opmerkingen en extra code had ik niet kunnen deduceren dat het wachtwoord het enige wat fout kon zijn. Wellicht een idee om te kijken of er een commando is waarmee je je wachtwoord kunt checken. Nu komt er een nogal cryptische waarschuwing, namelijk : Error: [Syntax Error: Unexpected token ?].

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Mooi! Misschien kun je het (ook) op GitHub plaatsen?

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
KabouterSuper schreef op vrijdag 15 januari 2016 @ 14:30:
@brightvalve: heel erg bedankt voor je hulp, zonder je opmerkingen en extra code had ik niet kunnen deduceren dat het wachtwoord het enige wat fout kon zijn. Wellicht een idee om te kijken of er een commando is waarmee je je wachtwoord kunt checken. Nu komt er een nogal cryptische waarschuwing, namelijk : Error: [Syntax Error: Unexpected token ?].
Het "probleem" is dat je wachtwoord alleen gebruikt wordt om de data te ontsleutelen, niet voor authenticatie. Dus pas zodra de client is ingelogd, een request heeft gestuurd, en een response heeft teruggekregen kun je checken of het wachtwoord geldig is, en dan nog alleen maar omdat de data niet ontsleuteld kan worden (en dus geen geldige JSON oplevert).

Acties:
  • 0 Henk 'm!

  • janne_nl
  • Registratie: Maart 2008
  • Laatst online: 14:27
KabouterSuper schreef op vrijdag 15 januari 2016 @ 14:30:
[...]


....ik heb nooit gezien dat de laatste twee tekens genegeerd werden bij het invullen in de app.
Dat was me 2 jaar geleden of zo toen ik met de Easy begon direct opgevallen.
Wel een beetje kort als dat wachtwoord de sleutel van de encryptie is vind ik.

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
janne_nl schreef op vrijdag 15 januari 2016 @ 16:22:
Dat was me 2 jaar geleden of zo toen ik met de Easy begon direct opgevallen.
Wel een beetje kort als dat wachtwoord de sleutel van de encryptie is vind ik.
Dat is wel zo, maar je moet ook het serienummer en de (zo te zien random) access key hebben als je daadwerkelijk iets wilt kunnen doen. Serienummer wordt wel plain text doorgestuurd, maar de access key niet.

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
brightvalve schreef op vrijdag 15 januari 2016 @ 16:49:
[...]


Dat is wel zo, maar je moet ook het serienummer en de (zo te zien random) access key hebben als je daadwerkelijk iets wilt kunnen doen. Serienummer wordt wel plain text doorgestuurd, maar de access key niet.
Maar als je de access key hebt, en het beginnetje van een geencrypt json-response (dat na decryptie toch wel erg vaak begint met {"id":"), dan kan je denk ik brute force het wachtwoord achterhalen (ik denk dat een rainbox table je niet gaat helpen). Natuurlijk is de access key niet voorhanden, maar anderzijds is deze niet aan te passen in de nefit easy. Dus als je eenmaal een access key hebt, kan jij gaan proberen, terwijl de eigenaar niets kan doen.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
KabouterSuper schreef op zaterdag 16 januari 2016 @ 11:39:
Maar als je de access key hebt, en het beginnetje van een geencrypt json-response (dat na decryptie toch wel erg vaak begint met {"id":"), dan kan je denk ik brute force het wachtwoord achterhalen (ik denk dat een rainbox table je niet gaat helpen). Natuurlijk is de access key niet voorhanden, maar anderzijds is deze niet aan te passen in de nefit easy. Dus als je eenmaal een access key hebt, kan jij gaan proberen, terwijl de eigenaar niets kan doen.
Ja, dat is wel zo. zeker omdat je de plaintext al aardig kunt raden, zoals je zegt. Alhoewel bruteforcen dan denk ik toch nog wel een aardige tijd zou kunnen duren, en dan moet je je afvragen of iemand die moeite wel wil nemen om bij jou thuis de thermostaat op 30 te zetten terwijl je op vakantie bent.

Dat gezegd hebbende: een wachtwoord beperken tot 10 karakters is natuurlijk gewoon slecht.

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 16:32
Ik heb, omdat het op de Synology gewoon niet zo lukte allemaal, besloten om op een RPi die ik heb draaien voor OSMC daar de easy-server en nodejs op te zetten:

nodejs 4 staat er nu op en bij node -v laat hij ook de versie zien.
Vervolgens de easy-server geïnstalleerd en gestart:

osmc@osmc:~$ sudo bash
root@osmc:/home/osmc# npm i nefit-easy-http-server -g
/usr/local/bin/easy-server -> /usr/local/lib/node_modules/nefit-easy-http-server/bin/easy-server
nefit-easy-http-server@2.1.0 /usr/local/lib/node_modules/nefit-easy-http-server
├── docopt@0.6.2
├── cors@2.7.1 (vary@1.1.0)
├── morgan@1.6.1 (on-headers@1.0.1, basic-auth@1.0.3, depd@1.0.1, on-finished@2.3.0, debug@2.2.0)
├── body-parser@1.14.2 (bytes@2.2.0, content-type@1.0.1, depd@1.1.0, on-finished@2.3.0, http-errors@1.3.1, raw-body@2.1.5, debug@2.2.0, qs@5.2.0, type-is@1.6.10, iconv-lite@0.4.13)
├── bluebird@3.1.1
├── express@4.13.3 (escape-html@1.0.2, merge-descriptors@1.0.0, array-flatten@1.1.1, cookie@0.1.3, utils-merge@1.0.0, cookie-signature@1.0.6, methods@1.1.1, fresh@0.3.0, range-parser@1.0.3, vary@1.0.1, path-to-regexp@0.1.7, content-type@1.0.1, etag@1.7.0, parseurl@1.3.0, content-disposition@0.5.0, serve-static@1.10.0, depd@1.0.1, finalhandler@0.4.0, on-finished@2.3.0, qs@4.0.0, debug@2.2


root@osmc:/home/osmc# easy-server --serial=44fake2340311 --password=hetwachtwoord --access-key=7HgrD-fake-YEIidT9ae
HTTP server listening on http://127.0.0.1:3000

Maar als ik nu in Domoticz instel dat hij vanaf de RPi (IP=192.168.0.100) en poort 3000 de gegevens moet halen, dan krijg ik toch nog een foutmelding:

2016-01-16 23:19:14.079 Error: NefitEasy: Error getting http data!

Iemand een idee wat ik nog moet aanpassen om ermee aan de slag te kunnen?

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • bdegroot
  • Registratie: Juli 2001
  • Laatst online: 17-06 09:03
Geef ook even --host=192.168.0.100 mee met je easyserver , anders draait de easy server alleen maar lokaal op 127.0.0.1 en is het niet via het netwerk aanspreekbaar.
M.v.Veelen schreef op zaterdag 16 januari 2016 @ 23:22:
Ik heb, omdat het op de Synology gewoon niet zo lukte allemaal, besloten om op een RPi die ik heb draaien voor OSMC daar de easy-server en nodejs op te zetten:

nodejs 4 staat er nu op en bij node -v laat hij ook de versie zien.
Vervolgens de easy-server geïnstalleerd en gestart:

osmc@osmc:~$ sudo bash
root@osmc:/home/osmc# npm i nefit-easy-http-server -g
/usr/local/bin/easy-server -> /usr/local/lib/node_modules/nefit-easy-http-server/bin/easy-server
nefit-easy-http-server@2.1.0 /usr/local/lib/node_modules/nefit-easy-http-server
├── docopt@0.6.2
├── cors@2.7.1 (vary@1.1.0)
├── morgan@1.6.1 (on-headers@1.0.1, basic-auth@1.0.3, depd@1.0.1, on-finished@2.3.0, debug@2.2.0)
├── body-parser@1.14.2 (bytes@2.2.0, content-type@1.0.1, depd@1.1.0, on-finished@2.3.0, http-errors@1.3.1, raw-body@2.1.5, debug@2.2.0, qs@5.2.0, type-is@1.6.10, iconv-lite@0.4.13)
├── bluebird@3.1.1
├── express@4.13.3 (escape-html@1.0.2, merge-descriptors@1.0.0, array-flatten@1.1.1, cookie@0.1.3, utils-merge@1.0.0, cookie-signature@1.0.6, methods@1.1.1, fresh@0.3.0, range-parser@1.0.3, vary@1.0.1, path-to-regexp@0.1.7, content-type@1.0.1, etag@1.7.0, parseurl@1.3.0, content-disposition@0.5.0, serve-static@1.10.0, depd@1.0.1, finalhandler@0.4.0, on-finished@2.3.0, qs@4.0.0, debug@2.2


root@osmc:/home/osmc# easy-server --serial=44fake2340311 --password=hetwachtwoord --access-key=7HgrD-fake-YEIidT9ae
HTTP server listening on http://127.0.0.1:3000

Maar als ik nu in Domoticz instel dat hij vanaf de RPi (IP=192.168.0.100) en poort 3000 de gegevens moet halen, dan krijg ik toch nog een foutmelding:

2016-01-16 23:19:14.079 Error: NefitEasy: Error getting http data!

Iemand een idee wat ik nog moet aanpassen om ermee aan de slag te kunnen?

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 16:32
Hups.....dat was het :)

Ik heb nu 3 devices ineens erbij:

Setpoint
Boiler Status
Display Code

Bij de eerste zie ik inderdaad de setpoint mee veranderen als ik de temperatuur via de app verander.
Bij de 2e zie ik "Off" en
bij de 3e zie ik "System standby" staan. Dat zou wel kunnen, want het is al laat en de CV zou nu inderdaad uit moeten staan en warm water staat nu ook uit, want er wordt 's nachts niet gedoucht. En anders zetten we het warm water eventjes aan ;)

Morgen kijken of er wat mee te stoeien valt :) Thanks !

Edit:

ik heb nog 3 devices erbij:

Pressure
Room temperature
Outside temperature

:o

Edit 2:

Wat wel vreemd is: volgens de app op m'n telefoon is de CV druk 1,5 bar terwijl Domoticz aangeeft: 1,3 bar. Huh?

Edit 3: En nu is het volgens Domoticz toch ineens ook 1,5 bar :)

[ Voor 21% gewijzigd door M.v.Veelen op 16-01-2016 23:51 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
M.v.Veelen schreef op zaterdag 16 januari 2016 @ 23:38:
Wat wel vreemd is: volgens de app op m'n telefoon is de CV druk 1,5 bar terwijl Domoticz aangeeft: 1,3 bar. Huh?

Edit 3: En nu is het volgens Domoticz toch ineens ook 1,5 bar :)
Ik denk dat Domoticz periodiek de HTTP server pollt voor nieuwe waarden, dus er zit wat tijd tussen veranderingen die gemaakt worden aan de instellingen en het punt waarop die veranderingen zichtbaar worden.

Als ik komende week tijd heb wil ik kijken of het mogelijk is voor clients om events te ontvangen zodra een andere client een verandering heeft doorgevoerd. Op die manier zou je een meer realtime systeem kunnen bouwen.

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 16:32
In ieder geval is dit al echt heel mooi gedaan. Klasse!

Ik weet niet of ik vandaag nog tijd ga hebben om naar scripts e.d. te kijken, anders wordt dat komende week. Ik vind het nu al leuk om te kunnen uitlezen wat de Easy voor waardes uitspuugt naar Domoticz. Het aansturen komt op korte termijn ook nog wel :)

Edit: ik kom er zojuist achter dat Domoticz de hele nacht geen gegevens heeft ontvangen. Vanaf het moment dat ik m'n Macbook heb dichtgeklapt is het stil geweest. Ik heb net de server weer gestart en nu komen de gegevens weer binnen. Ehm.....huh?

[ Voor 28% gewijzigd door M.v.Veelen op 17-01-2016 10:27 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 16:32
Net de Macbook weer een 2 uurtjes dichtgeklapt (heb even voetbal zitten kijken), en zie nu dat er weer geen data meer is ontvangen in de tussentijd.

Moet ik de easy-server soms als daemon starten ofzo? Iemand een idee?

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • Mozart
  • Registratie: September 2001
  • Nu online
M.v.Veelen schreef op zondag 17 januari 2016 @ 14:33:
Net de Macbook weer een 2 uurtjes dichtgeklapt (heb even voetbal zitten kijken), en zie nu dat er weer geen data meer is ontvangen in de tussentijd.

Moet ik de easy-server soms als daemon starten ofzo? Iemand een idee?
Ja, als je easy-server als gebruiker start dan blijft het programma actief zolang je ingelogd bent. Je kunt er een upstart init script voor maken. Zo ziet die van mij 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/usr/local/bin/"
cmd="easy-server --serial=12345678 --access-key=key --password=Ww --host=192.168.254.205"
user=""

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"
        if [ -z "$user" ]; then
            sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
        else
            sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
        fi
        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)
    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`
        for i in {1..10}
        do
            if ! is_running; then
                break
            fi

            echo -n "."
            sleep 1
        done
        echo

        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
    fi
    ;;
    restart)
    $0 stop
    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0


Als laatste nog even
code:
1
update-rc.d <initscript> defaults
uitvoeren

PSN: PcDCch


Acties:
  • 0 Henk 'm!

  • vmb
  • Registratie: November 2004
  • Laatst online: 07-05-2024

vmb

mijn linux kennis is niet heel groot, nog volop aan het leren. Kan iemand mij opgang helpen hoe en met welke commando's kan ik easy-server kan installeren?
Thx!

Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
M.v.Veelen schreef op zondag 17 januari 2016 @ 14:33:
Net de Macbook weer een 2 uurtjes dichtgeklapt (heb even voetbal zitten kijken), en zie nu dat er weer geen data meer is ontvangen in de tussentijd.

Moet ik de easy-server soms als daemon starten ofzo? Iemand een idee?
Dat komt idd omdat je de easy server start in de ssh sessie. Als je de sessie stopt dan stopt ook de easy server.

Als je & achter het easy server start commando zet dan zou het door moeten blijven lopen. Althans dat is de gebruikelijke manier. Nohup ervoor zou ook nog kunnen...

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 16:32
kraades schreef op zondag 17 januari 2016 @ 18:18:
[...]


Dat komt idd omdat je de easy server start in de ssh sessie. Als je de sessie stopt dan stopt ook de easy server.

Als je & achter het easy server start commando zet dan zou het door moeten blijven lopen. Althans dat is de gebruikelijke manier. Nohup ervoor zou ook nog kunnen...
Dit heb ik beide geprobeerd, maar helaas....

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
M.v.Veelen schreef op zondag 17 januari 2016 @ 18:20:
[...]


Dit heb ik beide geprobeerd, maar helaas....
En beide? Nohup ... &

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 16:32
Oh, sorry, die ook. Ik ga eens kijken of ik dan anders het startup script kan gebruiken dat hierboven door Mozart is gepost.

Edit:

lastig, want ik kan het script wel plaatsen in /etc/init/ maar via de CLI moet ik wel eerst het volgende commando geven, want anders werkt het niet:

export PATH=/volume1/Easy/node-v5.3.0-linux-armv7l/bin:$PATH

Daarnaast kent m'n Syno het volgende commando niet:

update-rc.d nefit-easy.conf defaults

(ik denk tenminste dat het zo moet?)

[ Voor 59% gewijzigd door M.v.Veelen op 17-01-2016 18:30 ]

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
M.v.Veelen schreef op zondag 17 januari 2016 @ 18:25:
Oh, sorry, die ook. Ik ga eens kijken of ik dan anders het startup script kan gebruiken dat hierboven door Mozart is gepost.
Ja zie ik nu ook pas. Die kun je mooi gebruiken. Maar uiteindelijk maakt die ook gebruik van de &.

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
TrafeX schreef op zondag 10 januari 2016 @ 11:10:
Ik heb nu aardig voor elkaar wat ik wilde bereiken:
[afbeelding]

Een combinatie van InfluxDB & Grafana.
Hoe krijg je die centralheating zo in een Grafana graph?

Grafieken met numerieke series is geen probleem, dat wijst zichzelf, maar measurements met specifieke waarden krijg ik niet in Grafana (waar ik overigens vandaag mee begonnen ben, dus noob ;))

Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
KabouterSuper schreef op vrijdag 15 januari 2016 @ 14:30:
[...]

Ik ga van het weekend de php-code opschonen. Mocht iemand interesse hebben, laat het dan even weten.
Yes, please. Ik hoor het graag. Alvast bedankt.

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
kraades schreef op maandag 18 januari 2016 @ 18:38:
[...]


Yes, please. Ik hoor het graag. Alvast bedankt.
Ik ben een behoorlijk eind, maar het is nog niet netjes genoeg naar mijn zin. Wel heb ik inmiddels synology icm domoticz draaiend (ik curl de huidige temp, de doeltemp en de buitentemperatuur via dit php-scriptje).

Afbeeldingslocatie: http://tweakers.net/ext/f/zTJhrKsd3hsp6s835bvyumEu/full.jpg

DM me anders even...

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Laatst online: 17:05
KabouterSuper schreef op maandag 18 januari 2016 @ 20:14:
[...]


Ik ben een behoorlijk eind, maar het is nog niet netjes genoeg naar mijn zin. Wel heb ik inmiddels synology icm domoticz draaiend (ik curl de huidige temp, de doeltemp en de buitentemperatuur via dit php-scriptje).

[afbeelding]

DM me anders even...
Goed bezig _/-\o_

Maar ik (en denk vast nog wel meer mensen) heb interesse in je oplossing.
Dus waarom gewoon niet openbaar posten? (als je daar zelf geen problemen mee hebt.)

PS Volgens mij staat je DM uit....
Nu niet meer... kan iig weer een bericht naar je sturen.
offtopic:
kun je DM eigenlijk uitzetten...

[ Voor 7% gewijzigd door Tinusvolkel op 18-01-2016 21:11 ]

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 14:53
Nvm, dom bezig

[ Voor 98% gewijzigd door ThaStealth op 18-01-2016 20:49 ]

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Tinusvolkel schreef op maandag 18 januari 2016 @ 20:37:
[...]


Goed bezig _/-\o_

Maar ik (en denk vast nog wel meer mensen) heb interesse in je oplossing.
Dus waarom gewoon niet openbaar posten? (als je daar zelf geen problemen mee hebt.)
Ik wil eerst de code opgeschoond hebben. Daarbij zou ik graag ook wat documentatie/disclaimers/etc erbij schrijven, en het niet zomaar over de schutting gooien. Maar ik heb de code inmiddels naar twee mensen gestuurd om uit te proberen.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • TrafeX
  • Registratie: Maart 2003
  • Laatst online: 13-06 17:35

TrafeX

Tuned for life!

brightvalve schreef op maandag 18 januari 2016 @ 15:40:
[...]


Hoe krijg je die centralheating zo in een Grafana graph?

Grafieken met numerieke series is geen probleem, dat wijst zichzelf, maar measurements met specifieke waarden krijg ik niet in Grafana (waar ik overigens vandaag mee begonnen ben, dus noob ;))
In het script wat de Nefit Easy polled en data in InfluxDB zet heb ik de string waardes omgezet naar booleans:
https://github.com/TrafeX...b/master/index.js#L20-L26

Vervolgens heb ik 2 queries voor het ophalen van alle gegevens, 1 voor de temperaturen, deze staan op de linker Y-axis, 1 voor de aan/uit boolean waardes, deze staan op de rechter Y-axis.
Afbeeldingslocatie: https://www.trafex.nl/wp-content/uploads/2016/01/Selection_316.png

Hotwater en Centralheating heb ik bars ipv lines van gemaakt, en de z-index op -3 gezet zodat deze naar de achtegrond gaat. Dit kan je instellen onder 'Display Styles' middels de 'Series specific overrides'.

Heb het inmiddels ruim 10 dagen draaien, werkt als een zonnetje! Geen last meer gehad van requests timeouts.

TrafeX.nl - Clipboard.ninja


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
TrafeX schreef op dinsdag 19 januari 2016 @ 11:38:
In het script wat de Nefit Easy polled en data in InfluxDB zet heb ik de string waardes omgezet naar booleans:
https://github.com/TrafeX...b/master/index.js#L20-L26

Vervolgens heb ik 2 queries voor het ophalen van alle gegevens, 1 voor de temperaturen, deze staan op de linker Y-axis, 1 voor de aan/uit boolean waardes, deze staan op de rechter Y-axis.
[afbeelding]

Hotwater en Centralheating heb ik bars ipv lines van gemaakt, en de z-index op -3 gezet zodat deze naar de achtegrond gaat. Dit kan je instellen onder 'Display Styles' middels de 'Series specific overrides'.

Heb het inmiddels ruim 10 dagen draaien, werkt als een zonnetje! Geen last meer gehad van requests timeouts.
Op dit moment schrijf ik één measurement met een string value naar InfluxDB, maar aparte booleans is een stuk slimmer (ik vraag me af of ik ook drie queries kan gebruiken met een WHERE... helaas, dat werkt niet).

Goed om te horen dat het verder goed werkt, ik heb ook geen timeouts meer :)

Acties:
  • 0 Henk 'm!

  • arjandijk162
  • Registratie: November 2000
  • Laatst online: 16-06 10:47
Ik heb de server gestart en het werkt perfect, wat moet ik nu doen om het ook bij een restart can mn Pi weer te laten lopen?

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
arjandijk162 schreef op woensdag 20 januari 2016 @ 20:46:
Ik heb de server gestart en het werkt perfect, wat moet ik nu doen om het ook bij een restart can mn Pi weer te laten lopen?
Ligt een beetje aan welke distro je erop draait.

Ik draai Raspbian op m'n RPi, en de makkelijkste manier (IMHO) om iets na het rebooten te laten opstarten is via /etc/rc.local. Die file wordt bij het booten uitgevoerd, en vanuit daar kun je weer andere programma's uitvoeren.

Als je de server met -g hebt geïnstalleerd is de executable (denk ik) /usr/local/bin/easy-server. Om die bij het booten te starten zou je het volgende kunnen toevoegen aan /etc/rc.local (vóór de regel met exit 0):

export NEFIT_SERIAL_NUMBER=XXX
export NEFIT_ACCESS_KEY=YYY
export NEFIT_PASSWORD=ZZZ
sudo -E -u youruser /usr/local/bin/easy-server > /var/log/easy-server.log 2>&1 &


Waarbij je youruser verandert naar je eigen username (of desnoods naar root, maar liever niet).

Acties:
  • 0 Henk 'm!

  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 16:32
Iemand die de easy-server dmv Monit laat monitoren? Zo ja, hoe doe je dit precies? Want monitoren op poort 3000 failed al meteen, dus dat kun je dan niet gebruiken.

Ik heb het voor elkaar dat er een pid file wordt aangemaakt op de Syno, maar het monitoren lukt me nog niet helaas.

¯\_(ツ)_/¯


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 14:53
KabouterSuper schreef op dinsdag 19 januari 2016 @ 08:41:
[...]


Ik wil eerst de code opgeschoond hebben. Daarbij zou ik graag ook wat documentatie/disclaimers/etc erbij schrijven, en het niet zomaar over de schutting gooien. Maar ik heb de code inmiddels naar twee mensen gestuurd om uit te proberen.
Heb je de kans gehad om de code al op te schonen?
Ik ben zelf bezig met een C# versie, maar mijn Javascript is nogal roestig (en ik heb nog geen Easy) testen is dus nogal lastig :P

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
ThaStealth schreef op maandag 25 januari 2016 @ 13:51:
[...]

Heb je de kans gehad om de code al op te schonen?
Ik ben zelf bezig met een C# versie, maar mijn Javascript is nogal roestig (en ik heb nog geen Easy) testen is dus nogal lastig :P
De code is opgeschoond. Ik heb alleen intussen mijn synology upgegraded naar DSM 6.0 beta 2, en in deze versie werkt de code niet meer; de XMPP connectie kan opeens niet meer aangemaakt worden! Ik heb het vermoeden dat dit te maken heeft met PHP, wat in DSM 6.0 opgehoogd is naar versie 5.6. Deze versie gaat strikter om met certificaten. De andere optie is dat het certificaat van Synology (per ongeluk) in een andere directory gezet is, en PHP dit certificaat niet meer vindt.

Kortom, even wat tegenslag. DM me even als je interesse hebt (hoewel je zonder Easy niet heel veel kunt zien).

update:het werkt weer met DSM 6.0 door self-signed certificates toe te laten.

[ Voor 4% gewijzigd door KabouterSuper op 26-01-2016 13:36 ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • gompy
  • Registratie: Maart 2002
  • Laatst online: 21-05 10:32
Ik krijg sinds gisteren ook geen contact meer met de server. Hebben hier meer mensen last van?

Acties:
  • 0 Henk 'm!

  • slelieveld
  • Registratie: Juni 2002
  • Laatst online: 05-06 23:33
Kan iemand me helpen om uit te leggen... ik heb een easy, ik heb domoticz succesvol draaien op mijn nas. Ik kan in domoticz Nefit Easy HTTP server over LAN interface kiezen. Daar moet ik een ip adres en poortnummer invullen... maar waarvan? Van een http server? Hoe en waar installeer ik die? Kan iemand me helpen met een korte handleiding of beschrijving hoe ik dit praktisch doe?

Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
slelieveld schreef op dinsdag 26 januari 2016 @ 22:10:
Kan iemand me helpen om uit te leggen... ik heb een easy, ik heb domoticz succesvol draaien op mijn nas. Ik kan in domoticz Nefit Easy HTTP server over LAN interface kiezen. Daar moet ik een ip adres en poortnummer invullen... maar waarvan? Van een http server? Hoe en waar installeer ik die? Kan iemand me helpen met een korte handleiding of beschrijving hoe ik dit praktisch doe?
Dat is het ip adres en poort nummer van de easy http server (in node.js door Robert Klep) die je ergens hebt draaien. Mag op de nas draaien maar ook ergens anders.

Edit:
Als je nas (Synology?) een arm processor heeft dan kun je de node.js binaries downloaden en gebruiken om de easy http server te draaien.

[ Voor 9% gewijzigd door technorabilia op 26-01-2016 22:27 ]

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • slelieveld
  • Registratie: Juni 2002
  • Laatst online: 05-06 23:33
kraades schreef op dinsdag 26 januari 2016 @ 22:25:
[...]


Dat is het ip adres en poort nummer van de easy http server (in node.js door Robert Klep) die je ergens hebt draaien. Mag op de nas draaien maar ook ergens anders.

Edit:
Als je nas (Synology?) een arm processor heeft dan kun je de node.js binaries downloaden en gebruiken om de easy http server te draaien.
Dank je voor je reactie... een http server ergens draaien :-). Ik heb op mijn synology nas een http server draaien... poort 80... wat nu? Kan je me uitleggen wat ik moet doen?

Edit: ja dat heeft ie niet, maar wel een quad-core Intel Atom C2358 processor

[ Voor 7% gewijzigd door slelieveld op 26-01-2016 22:38 ]


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Nee, de EASY http server in node.js. Een stukje software geschreven door Robert Klep. Heeft niets met de http server te maken die je hebt draaien op port 80 op de Synology.

Domoticz communiceert met de Easy http server welke communiceert met jouw Neftit Easy thermostaat.

Je kunt de kant en klare node binaries eens proberen op de Synology. Node heb je nodig om de Easy http server te kunnen draaien.

[ Voor 43% gewijzigd door technorabilia op 26-01-2016 22:46 ]

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • slelieveld
  • Registratie: Juni 2002
  • Laatst online: 05-06 23:33
Sorry ik ben een leek... wat moet ik doen? Package installen? Inloggen met ssh en iets installen?

Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Inderdaad via SSH. Een paar pagina's terug staat e.e.a. toegelicht m.b.t. de installatie van Node op een Synology.

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • slelieveld
  • Registratie: Juni 2002
  • Laatst online: 05-06 23:33
Kraades, dank je. Ik heb via de package store node.js geinstalleerd op mijn synology... Moet ik nu alleen vanuit https://github.com/robertklep/nefit-easy-http-server de http server installeren? Hoe doe ik dat? Ik log in met SSH op mijn nas en wat geef ik dan voor een commando?

Als ik $ npm i nefit-easy-http-server -g geef, dan gebeurt er niets... Zonder $-teken begint er een cursor te draaien... en installeert er iets :-)

Dan commando easy-server (meteen zonder $-teken) geeft volgende:

/volume1/@appstore/Node.js/usr/lib/node_modules/nefit-easy-http-server/lib/cli/index.js:32
return client.connect().then(() => {
^
SyntaxError: Unexpected token )
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/volume1/@appstore/Node.js/usr/lib/node_modules/nefit-easy-http-server/bin/easy-server:3:1)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)

Nu heb ik de commando's:
export NEFIT_SERIAL_NUMBER=serienummer
export NEFIT_ACCESS_KEY=acceskey
export NEFIT_PASSWORD=password

gegeven... en in domoticz de pluging op IP van de NAS en port 3000 gezet... en nu :-)?

[ Voor 8% gewijzigd door slelieveld op 27-01-2016 16:42 ]


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
De package is denk ik een te oude versie nl. v0.x. Je hebt min. v4.x nodig. Deze moet je handmatig installeren (= downloaden en unzippen in bv. /usr/local/bin). Hierna moet node en npm werkend zijn voordat je met npm de easy http server installeren.

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • slelieveld
  • Registratie: Juni 2002
  • Laatst online: 05-06 23:33
kraades schreef op woensdag 27 januari 2016 @ 16:51:
De package is denk ik een te oude versie nl. v0.x. Je hebt min. v4.x nodig. Deze moet je handmatig installeren (= downloaden en unzippen in bv. /usr/local/bin). Hierna moet node en npm werkend zijn voordat je met npm de easy http server installeren.
Bedoel je de package van easy server of van node?

Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Ik weet niet precies wat je met "package store" bedoelt maar ik ga ervan uit dat je de Synology package (spk) uit de repository van SynoCommunity bedoelt. Deze bevat een te oude versie van node nl. v0.x en je hebt min. v4.x nodig voor de easy http server.

Van de easy http server is geen Synology package beschikbaar. Deze kun je met npm installeren welke samen met de node installatie meekomt. Hiervoor moet je dus eerst node installeren op je Synology. Deze kun je downloaden van nodejs.org.

Als er geen kant en klare binaries beschikbaar zijn voor jouw model Synology dan heb je denk ik pech. Probeer de Linux binaries eens? Of je moet node zelf kunnen compileren.

[ Voor 15% gewijzigd door technorabilia op 27-01-2016 22:11 ]

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 14:53
Ik heb in mijn C# library bijna alles aan de gang, alleen de PUT wil nog niet, krijg telkens een HTTP400 (bad request) terug. Kan iemand even checken of deze aanvraag klopt:

Serial: 123456789
accesskey: abcdefghijklmnop
password: wachtw

XML:
1
<message from="rrccontact_123456789@wa2-mz36-qrmzh6.bosch.de/45071d0d" to="rrcgateway_123456789@wa2-mz36-qrmzh6.bosch.de"><body>PUT /heatingCircuits/hc1/temperatureRoomManual HTTP/1.1&amp;#13;Content-Type: application/json&amp;#13;Content-Length:24&amp;#13;User-Agent: NefitEasy&amp;#13;&amp;#13;jrI2v/8/xWuvuy1sznEPqw==</body></message>


Het geencrypte stukje zou
JSON:
1
{"value":15}
moeten zijn

Zijn er trouwens nog meer commando's beschikbaar? Bij voorkeur om het gasverbruik uit te lezen?

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
ThaStealth schreef op woensdag 27 januari 2016 @ 22:12:
Ik heb in mijn C# library bijna alles aan de gang, alleen de PUT wil nog niet, krijg telkens een HTTP400 (bad request) terug. Kan iemand even checken of deze aanvraag klopt:

Serial: 123456789
accesskey: abcdefghijklmnop
password: wachtw

XML:
1
<message from="rrccontact_123456789@wa2-mz36-qrmzh6.bosch.de/45071d0d" to="rrcgateway_123456789@wa2-mz36-qrmzh6.bosch.de"><body>PUT /heatingCircuits/hc1/temperatureRoomManual HTTP/1.1&amp;#13;Content-Type: application/json&amp;#13;Content-Length:24&amp;#13;User-Agent: NefitEasy&amp;#13;&amp;#13;jrI2v/8/xWuvuy1sznEPqw==</body></message>


Het geencrypte stukje zou
JSON:
1
{"value":15}
moeten zijn
De encrypted value klopt in ieder geval, mijn code komt met dezelfde waarde.

Ik weet niet of die &amp;'s letterlijk in je request staan, maar dat moet in ieder geval niet. Hier is een gist met hoe een PUT request eruit moet zien. Regelovergangen moeten line feeds (\n) zijn, en die &#13;'s moeten er letterlijk in staan.
Zijn er trouwens nog meer commando's beschikbaar? Bij voorkeur om het gasverbruik uit te lezen?
Hier is een lijst met endpoints die mij bekend zijn. Om gasgebruik uit te lezen moet je denk ik /ecus/rrc/recordings/gasusage hebben; daar moet je wel een query achteraan plakken, anders krijg je een 400.

Bij mij werkt dit: /ecus/rrc/recordings/gasusage?page=19, maar het paginanummer is waarschijnlijk afhankelijk van wanneer je je Easy voor het eerst hebt geïnstalleerd.

Ik heb me er eerlijk gezegd nog niet erg in verdiept, maar ik kan me voorstellen dat er ook een endpoint is die de meest recente paginanummer teruglevert. Dit soort informatie (gasgebruik) haal ik zelf uit m'n slimme meter :)

Acties:
  • +3 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
Overigens: over twee weken zit ik bij Nefit/Bosch aan tafel om dit hobbyproject te bespreken :)

Ik kreeg een vriendelijke e-mail van ze waarin ze me uitnodigden om eens te komen praten over de achtergrond van mijn project, en dat Bosch misschien zelf ook een open interface zou kunnen gaan aanbieden.

Mocht je specifieke vragen/opmerkingen/verzoeken hebben, dan hoor ik het graag en ik zal ze proberen mee te nemen naar Deventer.

Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 14:53
brightvalve schreef op donderdag 28 januari 2016 @ 11:06:
[...]


De encrypted value klopt in ieder geval, mijn code komt met dezelfde waarde.

Ik weet niet of die &amp;'s letterlijk in je request staan, maar dat moet in ieder geval niet. Hier is een gist met hoe een PUT request eruit moet zien. Regelovergangen moeten line feeds (\n) zijn, en die &#13;'s moeten er letterlijk in staan.


[...]


Hier is een lijst met endpoints die mij bekend zijn. Om gasgebruik uit te lezen moet je denk ik /ecus/rrc/recordings/gasusage hebben; daar moet je wel een query achteraan plakken, anders krijg je een 400.

Bij mij werkt dit: /ecus/rrc/recordings/gasusage?page=19, maar het paginanummer is waarschijnlijk afhankelijk van wanneer je je Easy voor het eerst hebt geïnstalleerd.

Ik heb me er eerlijk gezegd nog niet erg in verdiept, maar ik kan me voorstellen dat er ook een endpoint is die de meest recente paginanummer teruglevert. Dit soort informatie (gasgebruik) haal ik zelf uit m'n slimme meter :)
Tnx waren inderdaad de &#13; tekens, in de Get werkte dit wel raar genoeg, vandaar dat ik er ook niet aan twijfelde.

Het /ecus/rrc/recordings/gasusagePointer request geeft een index terug, alleen ben ik niet erachter wat deze index moet betekenen, hij verwijst in ieder geval niet naar de pagina, wellicht de array index waarde. De komende dagen maar eens bekijken of hij oploopt.

Cool dat je Nefit hier blijkbaar meeleest en het project niet actief blokkeert.
Een volledige lijst van endpoints (met documentatie van de complexere returnvalues ) zou al fijn zijn

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
ThaStealth schreef op donderdag 28 januari 2016 @ 14:19:
Het /ecus/rrc/recordings/gasusagePointer request geeft een index terug, alleen ben ik niet erachter wat deze index moet betekenen, hij verwijst in ieder geval niet naar de pagina, wellicht de array index waarde. De komende dagen maar eens bekijken of hij oploopt.
Bij mij is de huidige pagina nr 19 en die pointer is 590. Per "pagina" krijg je 32 waarden terug. Math.ceil(590 / 32) = ... 19 ;)

Overigens, enig idee wat de waarde van de T veld in de gasUsage uitvoer betekent?
Cool dat je Nefit hier blijkbaar meeleest en het project niet actief blokkeert.
Een volledige lijst van endpoints (met documentatie van de complexere returnvalues ) zou al fijn zijn
Ik ga een lijst aanmaken (van vragen, dus...) :)

[ Voor 8% gewijzigd door brightvalve op 28-01-2016 18:53 ]


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 14:53
brightvalve schreef op donderdag 28 januari 2016 @ 15:25:
[...]


Bij mij is de huidige pagina nr 19 en die pointer is 590. Per "pagina" krijg je 32 waarden terug. Math.ceil(590 / 32) = ... 19 ;)

Overigens, enig idee wat de waarde van de T veld in de gasUsage uitvoer betekent?


[...]


Ik ga een lijst aanmaken (van vragen, dus...) :)
Ah dus het is gewoon een indexer :) Nee ik heb de T variable ook gespot, bij mij stond hij op 110.

Mijn easy is op dit moment stuk (bleef in een reboot loop hangen). Ik krijg morgen een nieuwe, dus kan zaterdag pas iets zeggen over een eventuele nieuwe sample...

Mess with the best, die like the rest


Acties:
  • +1 Henk 'm!

  • niki_lauda
  • Registratie: November 2010
  • Laatst online: 18-06 21:55

niki_lauda

3840Wp/200L zonneboiler ID3B

brightvalve schreef op donderdag 28 januari 2016 @ 11:15:
Overigens: over twee weken zit ik bij Nefit/Bosch aan tafel om dit hobbyproject te bespreken :)

Ik kreeg een vriendelijke e-mail van ze waarin ze me uitnodigden om eens te komen praten over de achtergrond van mijn project, en dat Bosch misschien zelf ook een open interface zou kunnen gaan aanbieden.

Mocht je specifieke vragen/opmerkingen/verzoeken hebben, dan hoor ik het graag en ik zal ze proberen mee te nemen naar Deventer.
Verzoek van mij is of het mogelijk is om niet in de cloud te moeten draaien. Ik wil eigenaar zijn van mijn eigen data.

Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
ThaStealth schreef op donderdag 28 januari 2016 @ 21:48:
[...]

Nee ik heb de T variable ook gespot, bij mij stond hij op 110.
Bij mij gaat ie alle kanten op, van -41 naar 110 en van alles er tussenin, voor de meest recente pagina.

Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 14:53
niki_lauda schreef op donderdag 28 januari 2016 @ 22:26:
[...]


Verzoek van mij is of het mogelijk is om niet in de cloud te moeten draaien. Ik wil eigenaar zijn van mijn eigen data.
Inderdaad, als Bosch ooit een keer failliet draait/besluit te stoppen met de Easy kan ik hem ook weggooien

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Wat is de reden eigenlijk om het via de centrale servers te laten lopen? Is dat omdat de app dan altijd werkt dus binnen en buiten het lokale netwerk? 1 manier van werken dus geen configuratieproblemen.

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • janne_nl
  • Registratie: Maart 2008
  • Laatst online: 14:27
Ik denk vooral security. Als iedereen lokaal de security goed in orde moet hebben (VPN?) om te zorgen dat niet de thermostaat over inderdaad door hackers kan worden bekeken, zodat duidelijk is wanneer iemand thuis is.....lijkt het me slimmer omdat centraal te regelen.

En tsja, als je Bosch/Nefit daarin niet vertrouwd, geen Easy kopen.

Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 14:53
kraades schreef op vrijdag 29 januari 2016 @ 09:48:
Wat is de reden eigenlijk om het via de centrale servers te laten lopen? Is dat omdat de app dan altijd werkt dus binnen en buiten het lokale netwerk? 1 manier van werken dus geen configuratieproblemen.
Geen problemen met portforwarding op je thuis router. Nu initieert de Easy de communicatie naar het internet. Tenzij je de Bosch server geblokkeerd hebt in je router/geen internet hebt zal deze altijd online komen. Zelfde voor je telefoon. Vrij basale dingen die maar fout kunnen zijn (en de gebruiker ziet dit ook doordat hij geen Facebook meer kan gebruiken, hij zal het probleem dus bij zijn ISP neerleggen ipv Nefit). Het enige waar Nefit dus support op moet geven is het verbinden met het Wifi netwerk en eventuele server storingen.

Als je rechtstreeks naar je Easy wil verbinden moet je
1. Je externe IP weten
2. De Easy een statisch IP geven / DHCP reservering geven
3. Firewall poort(en) in je modem open zetten (en forwarden naar het goede interne IP van de Easy)
4. Hopen dat de poorten van de Easy niet geblokkeerd zijn door je ISP.

Als 1 van deze stappen niet werkt zal de klant naar Nefit bellen en kunnen hun dus een brakke netwerkopstelling gaan debuggen, of imagoschade lijden doordat ze het niet kunnen oplossen.

Verder ook security, als de Easy een bug heeft die het mogelijk maakt om de controle over te nemen door een bepaalde sequentie bytes te sturen kan iemand anders je ketel mollen (in vakantieperiodes 24/7 op 100% laten draaien)
Het voordeel wat ze nu hebben is dat de ook FW updates kunnen pushen naar de thermostaat zonder tussenkomst van gebruikers

[ Voor 25% gewijzigd door ThaStealth op 29-01-2016 10:10 ]

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Precies, ik ben dan ook benieuwd hoe men denkt een open interface aan te gaan bieden in deze opzet. Ik kan mij niet voorstellen dat er binnen het netwerk op de Easy zelf een "easy http server" komt te draaien en vraag mij af hoe het zit met de security als je het buiten het lan trekt.

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • niki_lauda
  • Registratie: November 2010
  • Laatst online: 18-06 21:55

niki_lauda

3840Wp/200L zonneboiler ID3B

kraades schreef op vrijdag 29 januari 2016 @ 09:48:
Wat is de reden eigenlijk om het via de centrale servers te laten lopen? Is dat omdat de app dan altijd werkt dus binnen en buiten het lokale netwerk? 1 manier van werken dus geen configuratieproblemen.
De reden is naar mijn mening geld. Big Data is de drijvende kracht om de gegevens te verzamelen over stookgedrag. Als je weet wanneer mensen gaan stoken kunnen anderen daar nog meer geld mee gaan verdienen.

Verder wil ik de keuze hebben. Als ik er voor kies om de applicatie in eigen beheer te draaien ben ik verantwoordelijk voor de beveiliging.iemand die in de cloud wil draaien mag ook. Maar uiteindelijk zul je daar op een of andere manier voor betalen. Gratis bestaat niet (behalve de zon). :)

[ Voor 22% gewijzigd door niki_lauda op 29-01-2016 12:53 ]


Acties:
  • 0 Henk 'm!

  • technorabilia
  • Registratie: November 2006
  • Laatst online: 15:51
Interessante gedacht. Algemene voorwaarden en privacy statement sluiten dit inderdaad niet uit.

👉🏻 Blog 👈🏻


Acties:
  • 0 Henk 'm!

  • brightvalve
  • Registratie: December 2011
  • Laatst online: 18-05 11:00
kraades schreef op vrijdag 29 januari 2016 @ 13:17:
Interessante gedacht. Algemene voorwaarden en privacy statement sluiten dit inderdaad niet uit.
Ik denk dat het wel een rol speelt, maar praktisch gezien is het netwerkaspect denk ik de voornaamste reden geweest. Zonder tussenstation (de Bosch backend) is het best lastig om "van buiten" toegang te bieden tot een apparaat in je thuisnetwerk (alhoewel je ook voor een ngrok-achtige tunnelopzet zou kunnen kiezen).

Daarnaast heb ik het vermoeden dat de Easy zelf niet uitblinkt in performance en opslagruimte, het is makkelijker en goedkoper om daar de wolk voor te gebruiken.

Acties:
  • 0 Henk 'm!

  • hardware-lover
  • Registratie: Augustus 2005
  • Niet online

hardware-lover

verder kijken dan ......

brightvalve schreef op vrijdag 29 januari 2016 @ 13:25:
[...]
[knip]

Daarnaast heb ik het vermoeden dat de Easy zelf niet uitblinkt in performance en opslagruimte, het is makkelijker en goedkoper om daar de wolk voor te gebruiken.
Ik heb begrepen dat data al lokaal wordt opgeslagen in de Easy, of bedoel jij misschien wat anders?

Veilig voor uw privacy
Een belangrijk voordeel van Easy is dat hij geen data opslaat op een externe server. Alle informatie wordt alleen bewaard in de Easy thermostaat zelf en op de gebruikte smart devices.

[ Voor 21% gewijzigd door hardware-lover op 29-01-2016 15:26 ]

Testing, one, two ...

Pagina: 1 2 3 4 5 Laatste

Let op:
Zorg dat je geen wachtwoorden of andere gevoelige informatie in je bericht hebt staan, deze informatie is door iedereen te lezen (en evt. te misbruiken)!