ESP8266/BeamerControl: Unterschied zwischen den Versionen
Aus C3MAWiki
Weitere Optionen
Ollo (Diskussion | Beiträge)  Auf den neuen Flasher umgebaut.  | 
				Ollo (Diskussion | Beiträge)  →Software:   Updated  | 
				||
| Zeile 8: | Zeile 8: | ||
Mit folgendem [[ESP8266/Programmer]] kann die folgende Initialisierungsdatei '''beamer_init.lua''' geschrieben werden:  | Mit folgendem [[ESP8266/Programmer]] kann die folgende Initialisierungsdatei '''beamer_init.lua''' geschrieben werden:  | ||
<pre>  | <pre>  | ||
print("Booting... Beamer v0.  | print("Booting... Beamer v0.81")  | ||
wifi.setmode(wifi.STATION)  | wifi.setmode(wifi.STATION)  | ||
wifi.sta.config("WIFI","PASSWORD")  | wifi.sta.config("WIFI","PASSWORD")  | ||
| Zeile 16: | Zeile 16: | ||
   if global_c~=nil then  |    if global_c~=nil then  | ||
     global_c:send(str)  |      global_c:send(str)  | ||
     global_c:send("\n")  |      global_c:send("\\\n")  | ||
   end  |    end  | ||
end  | end  | ||
| Zeile 43: | Zeile 43: | ||
m = mqtt.Client("beamer", 120, "", "")  | m = mqtt.Client("beamer", 120, "", "")  | ||
function   | function startMqttService(c)  | ||
	m:on("connect", function(con)   |         m:connect("10.23.XXX.XXX", 1883, 0, nil)  | ||
	m:on("offline", function(con)   | |||
	tmr.alarm(2, 2000, 0, function()   | |||
		m:subscribe("/room/beamer/#",0)  | |||
	end)  | |||
end  | |||
function configureMqttService(c)  | |||
	m:on("connect", function(con)    | |||
		netPrint ("MQTT connected")   | |||
		m:publish("/room/beamer/ip",wifi.sta.getip(),0,0, function(conn) netPrint("Sent IP") end)  | |||
	end)  | |||
	m:on("offline", function(con)    | |||
		netPrint ("MQTT offline")    | |||
		startMqttService()  | |||
	end)  | |||
	m:on("message", function(conn, topic, data)  | 	m:on("message", function(conn, topic, data)  | ||
| Zeile 61: | Zeile 74: | ||
	  end  | 	  end  | ||
	end)  | 	end)  | ||
         startMqttService()  | |||
end  | end  | ||
| Zeile 71: | Zeile 80: | ||
tmr.alarm(1, 1000, 1, function()    | tmr.alarm(1, 1000, 1, function()    | ||
    if wifi.sta.getip()=="0.0.0.0" or wifi.sta.getip() == nil then  |     if wifi.sta.getip()=="0.0.0.0" or wifi.sta.getip() == nil then  | ||
       print("Connect AP, Waiting...")    |        --print("Connect AP, Waiting...")    | ||
    else  |     else  | ||
       print("Connected")  |        --print("Connected")  | ||
       print( wifi.sta.getip() )  |        --print( wifi.sta.getip() )  | ||
       startTelnetServer()  |        startTelnetServer()  | ||
       configureMqttService()  | |||
       tmr.stop(1)  |        tmr.stop(1)  | ||
    end  |     end  | ||
end)  | end)  | ||
uart.setup(0,9600,8,0,1,0)  | uart.setup(0,9600,8,0,1,0)  | ||
-- Send all UART stuff to the debug client  | -- Send all UART stuff to the debug client  | ||
uart.on("data",4, function(data)  | --uart.on("data",4, function(data)  | ||
--	if global_c~=nil then  | |||
--		global_c:send(data)  | |||
--	end  | |||
end, 0)  | --end, 0)  | ||
</pre>  | </pre>  | ||
Version vom 18. April 2015, 17:48 Uhr
BeamerControl
Hardware
- ESP8266
 - MAX3232
 
Software
Es wird die LUA Firmware vorausgesetzt.
Mit folgendem ESP8266/Programmer kann die folgende Initialisierungsdatei beamer_init.lua geschrieben werden:
print("Booting... Beamer v0.81")
wifi.setmode(wifi.STATION)
wifi.sta.config("WIFI","PASSWORD")
global_c=nil
function netPrint(str)
  if global_c~=nil then
    global_c:send(str)
    global_c:send("\\\n")
  end
end
function startTelnetServer(dummy)
	s=net.createServer(net.TCP, 180)
	s:listen(2323,function(c)
	global_c=c
	function s_output(str)
	  if(global_c~=nil)
	     then global_c:send(str)
	  end
	end
	node.output(s_output, 0)
	c:on("receive",function(c,l)
	  node.input(l)
	end)
	c:on("disconnection",function(c)
	  node.output(nil)
	  global_c=nil
	end)
	print("Welcome to NodeMcu world.")
	end)
	print("WiFi up and running")
end
m = mqtt.Client("beamer", 120, "", "")
function startMqttService(c)
        m:connect("10.23.XXX.XXX", 1883, 0, nil)
	tmr.alarm(2, 2000, 0, function() 
		m:subscribe("/room/beamer/#",0)
	end)
end
function configureMqttService(c)
	m:on("connect", function(con) 
		netPrint ("MQTT connected") 
		m:publish("/room/beamer/ip",wifi.sta.getip(),0,0, function(conn) netPrint("Sent IP") end)
	end)
	m:on("offline", function(con) 
		netPrint ("MQTT offline") 
		startMqttService()
	end)
	m:on("message", function(conn, topic, data)
	  netPrint(topic .. ":" )
	  if data ~= nil then
	    netPrint(topic .. ":" .. data)
	    if data == "OFF" and topic == "/room/beamer/command" then
		netPrint ("Shutdown beamer")
		uart.write(0, "* 0 IR 002\\\r")
	    end
            if data == "ON" and topic == "/room/beamer/command" then
		netPrint ("Start Beamer")
		uart.write(0, "OKOKOKOKOK\\\r")
	    end
	  end
	end)
        startMqttService()
end
tmr.alarm(1, 1000, 1, function() 
   if wifi.sta.getip()=="0.0.0.0" or wifi.sta.getip() == nil then
      --print("Connect AP, Waiting...") 
   else
      --print("Connected")
      --print( wifi.sta.getip() )
      startTelnetServer()
      configureMqttService()
      tmr.stop(1)
   end
end)
uart.setup(0,9600,8,0,1,0)
-- Send all UART stuff to the debug client
--uart.on("data",4, function(data)
--	if global_c~=nil then
--		global_c:send(data)
--	end
--end, 0)
Schnittstelle
Der Beamer kann An:
mosquitto_pub -h IP1.IP2.IP3.IP4 -t "/room/beamer/command" -m "OFF"
und aus-geschalten werden:
mosquitto_pub -h IP1.IP2.IP3.IP4 -t "/room/beamer/command" -m "ON"
Hardware-Doku
- 
			
			Schaltung - Seitenansicht
 - 
			
			Schaltung - Seitenansicht2
 - 
			
			Schaltung - Oben
 - 
			
			Schaltung - Unten
 - 
			
			Alle Bauteile
 - 
			
			Eingebaut