WIFI Taster

    • WIFI Taster

      Ich habe den WIFI Schalter von GMan für meine SHC weiterenwickelt.
      Die Eingänge sind als Taster mit 220V Eingang, damit kann die bestehende 220V Verdratung weiterverwendet werden und der WIFI Taster
      muss nur in die bestehende Verteilerdose eingebaut werden. Taster haben auch den Vorteil dass mit den Taster als auch mit dem SHC die Lampe
      ein/ausgeschaltet werden kann.
      Die lua habe ich so angepasst so dass es mit 2 Tastern funktioniert und zusätzlich sendet das WIFI Relais den DHT Wert alle 60 sec an das SHC
      Ein Anschluss für einen LDR ist am Analogeingang vorbereitet

      Als Ausgänge habe ich 2 Solid State MODULE verwendet das spart Strom bei der 5V Versorgung
      Images
      • ESP_Taster1.JPG

        69.08 kB, 719×480, viewed 427 times
      • ESP_Taster2.JPG

        68.66 kB, 719×480, viewed 860 times

      The post was edited 1 time, last by hsnwerner ().

    • anbei noch die LUA für den WIFI Taster

      Shell-Script

      1. -- openhab support added 22.12.2015
      2. version = "0.3.2"
      3. --verriegelung = 0 -- 0 = inaktiv 1=aktiv
      4. sid1 = "44" -- Werkstatt Licht Werkbank
      5. sid2 = "45" -- Werkstatt Licht PC
      6. -----------------------------------------------
      7. function send_to_visu(sid, cmd, Temp)
      8. --gpio.write(4,gpio.LOW)
      9. host = "192.168.0.27"
      10. platform = "SHC"
      11. if (platform == "SHC") then
      12. port = 80
      13. if (Temp == 0) then
      14. link = "/shc/index.php?app=shc&a&ajax=executeswitchcommand&sid="..sid.."&command="..cmd
      15. else
      16. -- Senden DHT 22 an SHC SPID = Sensorpunkt SID = Sensor Typ = DHT22
      17. link = "/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=29&sid=31&type=2&v1="..sid.."&v2="..cmd
      18. end
      19. end
      20. --if (platform == "Openhab") then
      21. --if (cmd == 1) then switch="ON" elseif (cmd == 0) then switch="OFF" end
      22. --port = 8080
      23. --link = "/CMD?" ..sid.."=" ..switch
      24. --end
      25. print(link)
      26. conn=net.createConnection(net.TCP, 0)
      27. conn:on("connection",function(conn, payload)
      28. conn:send("GET "..link.. " "..
      29. "Host: "..host.. "\r\n"..
      30. "Accept: /\r\n"..
      31. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua;)"..
      32. "\r\n\r\n")
      33. end)
      34. conn:on("receive", function(conn, payload)
      35. print('\nRetrieved in '..((tmr.now()-t)/1000)..' milliseconds.')
      36. --print(payload)
      37. conn:close()
      38. end)
      39. t = tmr.now()
      40. conn:connect(80,host)
      41. gpio.write(4,gpio.HIGH)
      42. end
      43. -----------------------------------------------
      44. function read_temp(pin)
      45. --pin = 1
      46. status, temp, humi, temp_decimial, humi_decimial = dht.read(pin)
      47. print("DHT Temperature:"..temp..";".."Humidity:"..humi)
      48. if (status == dht.OK) then
      49. elseif (status == dht.ERROR_CHECKSUM) then
      50. print("DHT Checksum error.");
      51. elseif (status == dht.ERROR_TIMEOUT) then
      52. print("DHT Time out.");
      53. end
      54. return temp_decimial, humi_decimial, temp, humi
      55. end
      56. --------------------------------------------------
      57. -- wlan verbinden
      58. -----------------------------------------------
      59. ---------------------------------
      60. print("wait")
      61. -----------------------------------------------------
      62. -- befehle ueber TCP empfangen
      63. -----------------------------------------------------
      64. ipshow = 0 -- damit nach empfangen der ip, tcp server startet
      65. push = 0
      66. change = 5
      67. p1 = 0
      68. p2 = 0
      69. lampe1 = 1 -- 1 = aus
      70. lampe2 = 1
      71. -- config fuer gpios!
      72. gpio.mode(6, gpio.INPUT)
      73. --gpio.write(6, gpio.HIGH)
      74. gpio.mode(7, gpio.INPUT)
      75. --gpio.write(7, gpio.HIGH)
      76. relay1 = 2
      77. relay2 = 5
      78. gpio.mode(relay1, gpio.OUTPUT)
      79. gpio.mode(relay2, gpio.OUTPUT)
      80. gpio.mode(4,gpio.OUTPUT)
      81. gpio.write(4,gpio.HIGH)
      82. -- Senden der DHT Daten an SHC alle 60 sec
      83. tmr.alarm(1, 60000, 1, function()
      84. --print("Test")
      85. read_temp("1")
      86. t = temp
      87. h = humi
      88. send_to_visu(t, h, 1)
      89. end )
      90. tmr.alarm(0, 150, 1, function()
      91. if wifi.sta.getip() == nil then
      92. --print("wait\n")
      93. elseif (ipshow == 0) then
      94. print("SS Running "..version)
      95. print(wifi.sta.getip())
      96. ipshow = 1
      97. sv = net.createServer(net.TCP, 1) -- anpassen das schneller beendet wird 1sek
      98. sv:listen(9274, function(c)
      99. c:on("receive", function(c, pl)
      100. print(pl) -- gibt empfangen daten in console aus!
      101. -- empfangen daten zerlegen
      102. typ = string.sub(pl, 0, 1)
      103. pin = string.sub(pl, 3, 3) -- geht nur mit einstelligen pins!
      104. befehl = string.sub(pl, 5, 5)
      105. -- type = 0 node.restart!
      106. -- Type 2 = Ausgang
      107. if (typ == "2") then
      108. gpio.mode(pin, gpio.OUTPUT)
      109. if (befehl == "0") then
      110. print("low")
      111. --gpio.write(pin, gpio.LOW)
      112. if (pin == "2") then
      113. lampe1 = 1
      114. end
      115. if (pin == "5") then
      116. lampe2 = 1
      117. end
      118. end
      119. if (befehl == "1") then
      120. print("high")
      121. --gpio.write(pin, gpio.HIGH)
      122. if(pin == "2") then
      123. lampe1 = 0
      124. end
      125. if(pin == "5") then
      126. lampe2 = 0
      127. end
      128. end
      129. -- type 3 = eingang
      130. elseif (typ == "3") then
      131. c:send(gpio.read(pin))
      132. print("abfrage:"..gpio.read(pin).."\n next...")
      133. elseif (typ == "4") then
      134. read_temp(pin)
      135. t = temp
      136. h = humi
      137. c:send(t.."|"..h)
      138. elseif (typ == "9") then
      139. c:send(version)
      140. elseif (typ =="0") then
      141. node.restart()
      142. end
      143. if string.sub(pl, 0, 11) == "**command**" then
      144. payload = pl
      145. tmr.stop(0)
      146. dofile("wifi_tools.lua")
      147. end
      148. end)
      149. end)
      150. -- end ipshow if
      151. end
      152. -- einstellungen fuer schalter
      153. schalter1 = gpio.read(6)
      154. schalter2 = gpio.read(7)
      155. if (gpio.read(2) == 1 ) then
      156. status1 = 0
      157. else
      158. status1 = 1
      159. end
      160. if (gpio.read(5) == 1 ) then
      161. status2 = 0
      162. else
      163. status2 = 1
      164. end
      165. -- für TASTER lampe2
      166. if(schalter1 == 1 and p1 == 0) then
      167. p1 = 1
      168. if(lampe1 == 1) then
      169. lampe1 = 0
      170. send_to_visu(sid1, status1, 0)
      171. elseif(lampe1 == 0) then
      172. lampe1 = 1
      173. send_to_visu(sid1, status1, 0)
      174. end
      175. end
      176. if(schalter1 == 0 and p1 == 1) then
      177. p1 = 0
      178. end
      179. -- für TASTER lampe2
      180. if(schalter2 == 1 and p2 == 0) then
      181. p2 = 1
      182. if(lampe2 == 1) then
      183. lampe2 = 0
      184. send_to_visu(sid2, status2, 0)
      185. elseif(lampe2 == 0) then
      186. lampe2 = 1
      187. send_to_visu(sid2, status2, 0)
      188. end
      189. end
      190. if(schalter2 == 0 and p2 == 1) then
      191. p2 = 0
      192. end
      193. -- fuer relays schalten
      194. if (lampe1 == 1) then
      195. --if(verriegelung == 1) then
      196. --lampe2 = 0
      197. --end
      198. gpio.write(relay1, gpio.LOW)
      199. --print("s1 low")
      200. end
      201. if (lampe1 == 0) then
      202. gpio.write(relay1, gpio.HIGH)
      203. --print("s1 high")
      204. end
      205. if (lampe2 == 1) then
      206. --if(verriegelung == 1) then
      207. --lampe1 = 0
      208. --end
      209. gpio.write(relay2, gpio.LOW)
      210. --print("s2 low")
      211. end
      212. if (lampe2 == 0) then
      213. gpio.write(relay2, gpio.HIGH)
      214. --print("s2 high")
      215. end
      216. -- end tmr funktion
      217. end)
      Display All

      The post was edited 10 times, last by hsnwerner ().

    • ist auf jeden Fall kein Fehler. Ich habe mal nachgemessen und nach dem Einschalten des ESP sind die Pins automatisch auf Eingang und haben einen Pull up. Wenn der Port aber auf Ausgang programmiert wird bleibt dieser weiter auf Ausgang auch wenn man ihn wieder auf Eingang programmiert