Clas Ohlsson wifi strömbrytare i Easyhome

Moderators: hekj, Telldus

Post Reply
fingalo
Posts: 53
Joined: Fri Mar 17, 2023 9:45 am

Clas Ohlsson wifi strömbrytare i Easyhome

Post by fingalo »

Hej,
köpte en Clas wifi väggplugg https://www.clasohlson.com/se/WiFi-Smar ... me/38-8192 för att testa.
Den är prisvärd och har wifi stöd så jag tänkte den vore perfekt att hacka in i Easyhome. Det visar sig att den egentligen är en Broadlink SP3 enhet. Efter ett antal sökningar på nätet hittade jag till slut ett par Python bibliotek som jag vågade testa i min Raspberry.

Följande har jag gjort:

1. Installera Clasströmbrýtaren så att den fungerar med deras app.

2. Du ska ha python installerat i raspberryn (2.7 kör jag)

3. Öppnade ett terminalfönster och installerade från https://github.com/mjg59/python-broadlink

Code: Select all

git clone https://github.com/mjg59/python-broadlink.git
i bibliotektet python-broadlink körde jag kommandot

Code: Select all

sudo python setup.py install
4. Nu ska det gå att testa strömbrytaren i python (se https://github.com/mjg59/python-broadlink)

Starta python i terminalfönstret och skriv följande kommandon, så ska den slå till strömbrytaren (med False i sista kommandot så stänger den) :

Code: Select all

import broadlink
devices = broadlink.discover(timeout=5)
devices[0].auth()
devices[0].set_power(True)
5. Jag hittade ytterliggare ett python program som gör att man kan använda enhetens ip-adress och mac-adress för att nå den.
https://github.com/NightRang3r/Broadlink-NodeSP2
Installera med:

Code: Select all

git clone https://github.com/NightRang3r/Broadlink-NodeSP2
6.kopiera sp2.py från bibliotektet Broadlink-NodeSP2 och lägg i ditt nexahomebibliotek.
Redigera sp2.py där raden

Code: Select all

device = broadlink.sp2(host=(ip,80), mac=bytearray.fromhex(macaddr))
ska ändras till

Code: Select all

device = broadlink.sp2(host=(ip,80), mac=bytearray.fromhex(macaddr), devtype=0x753e)
7. Du kan nu använda sp2.py för att anropa din enhet med hjälp av dess ip-adress och mac-adress (dessa hittar du i din router, enheten har ett namn som börjar med Broadlink-Outlet).

8. Jag har skapat en sh-fil som anropar python filen samt bsh-filer för varje device som ska användas.
Skript fil blink.sh

Code: Select all

#!/bin/bash
python sp2.py $1 $2 $3
En bashfil (där jag hackat in IP och MAC adresserna) för min device 36 som är strömbrytaren i Easyhome:
36.bsh

Code: Select all

execFile("/home/pi/nexahome/blink.sh");
execParam("192.168.1.161");
execParam("34ea3458ee65");
if (getDeviceStatus("36") == "On") {
execParam("1");
} else {
execParam("0");
}
hideOutput();
Det fungerar bra, dock tar det 5 sekunder att aktivera/deaktivera enheten, det finns lite fördröjningar i pythonskripten.

Det roliga är att jag nu kan styra alla olika produkter (nexa, ikea, clas) från Easyhome och från samma hemsida.
Har även Google home mini så jag kan röststyra alla devicer (via IFTTT). Dock får jag än så länge ha engelska enhetsnamn.

Hoppas det här kan vara lite starthjälp för den som vill testa.
Last edited by fingalo on Sun May 20, 2018 11:33 am, edited 1 time in total.
bobbano
Posts: 52
Joined: Fri Mar 17, 2023 9:45 am
Location: Piteå, Sweden

Re: Claes Ohlsson wifi strömbrytare i Easyhome

Post by bobbano »

Provade just detta och var tvungen att installera Python-setuptools via följande rad:

Code: Select all

sudo apt-get install python-setuptools
Men efter det så funkar det klockrent!
fingalo
Posts: 53
Joined: Fri Mar 17, 2023 9:45 am

Re: Claes Ohlsson wifi strömbrytare i Easyhome

Post by fingalo »

Kul att se andra få det att fungera och alltid tacksam när man får ett linux tips!
Har nu själv fyra pluggar installerade. (Visade sig att claes hade ett rött pris när jag kom till butiken, 199 kr/st, så det blev några extra)

Testade följande kod i sp2.py

Code: Select all

import broadlink, sys, time

ip = sys.argv[1]
macaddr = sys.argv[2]
state = sys.argv[3]

try:
	device = broadlink.sp2(host=(ip,80), mac=bytearray.fromhex(macaddr), devtype=0x753e)
	device.auth()
#	time.sleep(3)
#	device.host
	if state == "1":
		device.set_power(True)
#		print "on"
	elif state == "0":
		device.set_power(False)
	elif state == "2":
		device.set_nightlight(True)
	elif state == "3":
		device.set_nightlight(False)
#		print "off"
except:
		print "error"
		pass
Har kommenterat bort de två raderna time.sleep och device.host, detta gör att responstiden minskar drastiskt. Har inte sett några bieffekter.
Har även lagt till stöd för att styra nattljuset, anropas med en egen device och script enligt:
37.bsh

Code: Select all

execFile("/home/pi/nexahome/blink.sh");
execParam("192.168.1.161");
execParam("34ea3458ee65");
if (getDeviceStatus("37") == "On") {
execParam("2");
} else {
execParam("3");
}
hideOutput();
Det går också att avläsa status på enheterna med kommandona
- device.check_power()
- device.check_nightlight()
om man vill kolla att de verkligen är på eller av.

Är fortfarande nöjd med pluggarna, får se om de klarar långtidsanvändning i mitt nätverk (lite halvgamla routrar och accesspunkter).
bobbano
Posts: 52
Joined: Fri Mar 17, 2023 9:45 am
Location: Piteå, Sweden

Re: Claes Ohlsson wifi strömbrytare i Easyhome

Post by bobbano »

Om jag ska vara ärlig så har jag bara provat fram t.o.m. steg 4 (jag har bara en brytare) och jag kör den via Domoticz, där jag har andra Z-Wave-brytare.

Men det verkar ju helt klart intressant att kunna kontrollera status på den, så jag måste nog gå vidare med steg 5 :)

Tack förresten för tipsen!!
Post Reply