ESP8266/BeamerControl: Unterschied zwischen den Versionen

Aus C3MAWiki
(Auf den neuen Flasher umgebaut.)
Zeile 6: Zeile 6:
Es wird die [https://github.com/nodemcu/nodemcu-firmware LUA Firmware] vorausgesetzt.
Es wird die [https://github.com/nodemcu/nodemcu-firmware LUA Firmware] vorausgesetzt.


Mit folgendem Bash-Skript kann die Initialisierungsdatei geschrieben werden.
Mit folgendem [[ESP8266/Programmer]] kann die folgende Initialisierungsdatei '''beamer_init.lua''' geschrieben werden:
<pre>
<pre>
print("Booting... Beamer v0.5")
wifi.setmode(wifi.STATION)
wifi.sta.config("WIFI","PASSWORD")


#!/bin/bash
global_c=nil
 
function netPrint(str)
DEVICE=/dev/ttyUSB0
  if global_c~=nil then
SLEEPTIME=0.2
    global_c:send(str)
 
    global_c:send("\n")
function init() {
  end
 
end
echo "Flashing the Initialization"
 
echo 'file.open("init.lua","w")' >> $DEVICE; sleep $SLEEPTIME
cat <<'EOF' | while read a; do echo "file.writeline([[${a}]])" >> $DEVICE; echo "$a"; sleep $SLEEPTIME; done
print("Booting...")
wifi.setmode(wifi.STATION)
wifi.sta.config("WLAN","passwort")


function startTelnetServer(c)
function startTelnetServer(dummy)
s=net.createServer(net.TCP, 180)
s=net.createServer(net.TCP, 180)
s:listen(2323,function(c)
s:listen(2323,function(c)
global_c=c
function s_output(str)
function s_output(str)
  if(c~=nil)
  if(global_c~=nil)
    then c:send(str)
    then global_c:send(str)
  end
  end
end
end
Zeile 38: Zeile 35:
c:on("disconnection",function(c)
c:on("disconnection",function(c)
  node.output(nil)
  node.output(nil)
  global_c=nil
end)
end)
print("Welcome to NodeMcu world.")
print("Welcome to NodeMcu world.")
Zeile 46: Zeile 44:
m = mqtt.Client("beamer", 120, "", "")
m = mqtt.Client("beamer", 120, "", "")
function startMqttServer(c)
function startMqttServer(c)
m:on("connect", function(con) print ("connected") end)
m:on("connect", function(con) print ("MQTT connected") end)
m:on("offline", function(con) print ("offline") end)
m:on("offline", function(con) print ("MQTT offline") end)


m:on("message", function(conn, topic, data)
m:on("message", function(conn, topic, data)
  print(topic .. ":" )
  netPrint(topic .. ":" )
  if data ~= nil then
  if data ~= nil then
    print(data)
    netPrint(topic .. ":" .. data)
    if data == "OFF" and topic == "/room/beamer/command" then
    if data == "OFF" and topic == "/room/beamer/command" then
print ("Shutdown beamer")
netPrint ("Shutdown beamer")
uart.write(0, "* 0 IR 002\\\r")
uart.write(0, "* 0 IR 002\\\r")
    end
    end
             if data == "ON" and topic == "/room/beamer/command" then
             if data == "ON" and topic == "/room/beamer/command" then
print ("Start Beamer")
netPrint ("Start Beamer")
uart.write(0, "OKOKOKOKOK\\\r")
uart.write(0, "OKOKOKOKOK\\\r")
    end
    end
  end
  end
end)
end)
         m:connect("IP1.IP2.IP3.IP4", 1883, 0, function(conn) print("connected") end)
         m:connect("10.23.XXX.XXX", 1883, 0, function(conn) print("connected") end)


tmr.alarm(2, 2000, 0, function()  
tmr.alarm(2, 2000, 0, function()  
Zeile 86: Zeile 84:
uart.setup(0,9600,8,0,1,0)
uart.setup(0,9600,8,0,1,0)


EOF
-- Send all UART stuff to the debug client
# Close the init file
uart.on("data",4, function(data)
echo "file.close()" >> $DEVICE; sleep $SLEEPTIME
if global_c~=nil then
 
global_c:send(data)
echo "========================="
end
echo "now login on ESP and call"
end, 0)
echo "node.restart()"
 
}
 
if [ "$EUID" -ne 0 ]
  then echo "Please run as root"
  exit
fi
 
init
</pre>
</pre>



Version vom 17. April 2015, 17:44 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.5")
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 startMqttServer(c)
	m:on("connect", function(con) print ("MQTT connected") end)
	m:on("offline", function(con) print ("MQTT offline") 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)
        m:connect("10.23.XXX.XXX", 1883, 0, function(conn) print("connected") end)

	tmr.alarm(2, 2000, 0, function() 
		m:subscribe("/room/beamer/#",0, function(conn) print("Mqtt - subscribe success") end)
	end)
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()
      startMqttServer()
      tmr.stop(1)
   end
end)

print("Setup UART")
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

Beamer-Doku