WIFI sensorer till Vera

WIFI sensor till VERA (och allt annat som pratar http)

Fortsatte idag med mitt projekt ”Den smarta trädgården”, tyvärr har det regnat rätt bra.. Bevattningssystem kändes rätt avlägset…

Började därför kolla lite på hur man eventuellt skulle kunna göra för att skicka data trådlöst från gården. Köpte tidigare ESP8266 vilket är en typ av WIFI kort med inbyggd CPU, priset på dessa är ca 100:- på kjell (20 Kr på ebay). Dessa har tyvärr inte använts, jag tog mig tid och började koppla upp dessa mot en Arduino.

Projektet senast uppdaterat: 2015-07-12 – 16:30

  •  Mer info om och bilder om ESP8266 Webbservern

Rätt så direkt såg jag många som valde att köra LUA kod direkt i ESP8266 utan en Arduino, detta blev självklart riktigt intressant eftersom jag då inte behöver ha en Arduino för att uppnå det jag vill! Hittade några exempel där man valt att använda rörelsesensorer (HC-SR501) ca 80:- på kjell (7kr på ebay). Eftersom jag hade dessa rörelsesensorer va det möjligt att göra rörelsesensor på WIFI för 27kr!

ESP8266Macro

ESP8266 – mått 14.2 x 24.5 mm

 

 

Server&Klient

Här är mina två projekt: en Wifi rörelsesensor för 27kr och en för webserver med två lysdioder för 20kr

Visar här en film på hur enheterna nås över nätverket samt kommunicerar med veran som en Z-Wave sensor.

 

ESP8266 som webbserver

EspSkiss

Jag gjorde en skiss i fritzing på hur jag kopplat min webserver.

Material:

  • 2X 150 Ohm resistorer
  • 2X lysdioder
  • 1X esp8266
  • 1x LD1117 (ger 3.3v, behövde inte några kondensatorer ännu)
  • 1X Batteri

 

Färdig Webbserver med tillhörande batteri.

  • Micro brytare
  • Kopplar upp med WPA2 inom 3 – 4 sekunder från start
  • Batteritiden får jag återkomma med.

WP_20150712_002 WP_20150712_005 WP_20150712_006

Allt förutom ESP8266 är fastlödda på kortet. Jag valde att bygga följande server med två lysdioder, röd och grön. Detta för att tillåta Veran att visa vilket Mode mitt hem är i för tillfället. Jag kan nu enkelt byta programvara genom att plocka bort sensorn eftersom den sitter i en stiftpanel.

Nästa version av min ESP8266 tänker jag försöka programmera på följande sätt:

  1. Tänd en lysdiod i 60 sekunder om ett http anrop tas emot (beroende på port). Tänker nämligen låta veran skicka vilket mode den är i för tillfället när en dörrsensor eller en rörelsesensor triggas i närheten av enheten.
  2. När en lyckad manöver görs på Zipatos RFID läsare ska båda dioder tändas i 60 sekunder för att visa larm på / av fungerat OK.
  3. Lägga upp en pingsensor i Vera som pingar enheten varje timme för att se att den lever.

Startar ESP8266 servern med en Microbrytare, inom 3 sekunder kopplar den upp med WPA2 till mitt WIFI och är redo att ta emot kommandon.

Sensorn drar tyvärr 30 – 60 mA (vilket är ca 0.54w). Ett 9V batteri ger ca 500mA (ca 4.5W).. Vilket verkar stämma rätt så bra eftersom sensorn gav upp efter 8 – 9 timmar..

Fakta

Prototypen fick jag till med hjälp av de två Youtubeklippen nedan, så jag kan inte alls ta creds för att ha skapat varken Lua Koden eller guiden. Det enda jag kan ta nån typ av creds för är att ha kopplat det mot Vera 🙂

Jag kommer inte att förklara hur jag kopplade alls, dessa två filmer förklarar allt väldigt ingående (Han har gjort ett väldigt bra jobb så ge han creds!).

 

 

 

Eftersom jag nu kör en Vera Lite så har jag valt att istället skicka data direkt till min Vera visa en Http URL istället för någon annan..

Följande enhet skapade jag i Veran:

I följande guide så visar jag hur man skapar virtuella enheter i veran, välj följande schema

device_type = urn:schemas-micasaverde-com:device:MotionSensor:1
device_file = D_MotionSensor1.xml (Läggs till när enheten skapas under Upnp Device Filename)
device_json = D_MotionSensor1.json (läggs till när enheten skapats)

Nu har du en ny enhet, trigga den för att verifiera att det fungerar genom att köra http url:en nedan! (händer det inte nått så är det ingen fara, så länge du får ett ”OK” tillbaka)

Byt ut följande:

  • DITTVERAIP = ip till din vera
  • 136 = id på din nyskapade givare

http://DITTVERAIP:3480/data_request?id=variableset&DeviceNum=136&serviceId=urn:micasaverde-com:serviceId:SecuritySensor1&Variable=Tripped&Value=1

för att Luup motorn ska visa din nya enhet så starta om luup motorn genom att gå på Apps\ Develop apps \ serial port configuration \  och tryck på reaload LUUP

Nu ska sensorn va ok i vera.

2015-11-22 – Lägger upp all kod på GITHUB för att det ska bli enklare att kopiera och spinna vidare på.

Fortsätt med Givaren

Det som saknades i hans guider va följande:

i filen ”alarm-public.lua” så ändrade jag följande:

tmr.alarm(0, 1000, 1, function() — Set alarm to one second

if gpio.read(4)==1 then status=”ALARM” else status=”CLEAR” end

if status ~= oldstatus then sendalarm (SensorID,status) end

oldstatus = status

end)

till

tmr.alarm(0, 1000, 1, function() — Set alarm to one second

if gpio.read(4)==1 then status=”1” else status=”0” end

if status ~= oldstatus then sendalarm (SensorID,status) end

oldstatus = status

end)

OCH  (ändra ”DITTVERAIP” till ditt och ”136” till din givares.

conn:connect(80,’192.168.0.11′)

 

conn:send(”GET xxxxx

till:

conn:connect(3480,’DITTVERAIP’)

conn:send(”GET /data_request?id=variableset&DeviceNum=136&serviceId=urn:micasaverde-com:serviceId:SecuritySensor1&Variable=Tripped&Value=”..urlencode(status)..” HTTP/1.1\r\n”)

 

Jag valde även att skapa en fil som hette ”init.lua” och i den la jag följande: dofile(”alarm-public.lua”)

Laddar upp koden här för att undvika att WordPress editering: ESP Koden

Följande svar lämnas från esp8266 modulen efter http anropet till Veran (läses via ESPlorer)

Open connection…
HTTP/1.1 200 OK
content-Type: text/plain
OK
Disconnected…

 

Kommer att fortsätta fylla på här så fort jag hinner!

 

// Ispep