Benutzer-Werkzeuge

Webseiten-Werkzeuge


elektronik:nodemcu_esp8266_erste_schritte

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
elektronik:nodemcu_esp8266_erste_schritte [2019/01/31 21:28] – [Genereller Ablauf] gpipperrelektronik:nodemcu_esp8266_erste_schritte [2019/01/31 21:30] – [Daten veröffentlichen] gpipperr
Zeile 805: Zeile 805:
  
   * https://opensensemap.org/   * https://opensensemap.org/
 +
 +
 +
 +----
 +
 +----
 +==== Version 2 für beide Sensoren ====
 +
 +<code lua>
 +
 +--init.lua
 +-- Modus definieren - Client
 +wifi.setmode(wifi.STATION)
 +
 +-- Konfig Tabelle für den Zugriff
 +station_cfg={}
 +--station_cfg.ssid="Akademie Gast Secure"
 +--station_cfg.pwd="sparkasse"
 +
 +station_cfg.ssid="my_wlan"
 +station_cfg.pwd="xxxxxxx"
 +
 +
 +-- Konfig nicht im Flash speichern
 +station_cfg.save=false
 +wifi.sta.config(station_cfg)
 +
 +-- Anmelden
 +wifi.sta.connect()
 +
 +-- zeit stellen
 +-- hier über ntp dienst Zeit abfragen und richtig setze
 +-- SNTP Module einbinden!
 +-- 
 +-- Single shot sync time with a server on the local network.
 +
 +-- im ersten Schritt einfach setzen .-)
 +--rtctime.set(1548237072, 0)
 +
 +
 +-- je 1000 ms warten und prüfen 
 +tmr.alarm(1, 1000, 1, function()
 + -- prüfe ob die Verbindung schon geklappt hat
 +  if wifi.sta.getip() == nil then
 +    print("Try to establish connection")
 + else
 + 
 +    ip, nm,gateway = wifi.sta.getip()
 +   
 +   -- Konfiguration ausgeben
 +   print("ESP8266 mode  :: " .. wifi.getmode()  )
 +   print("MAC address   :: " .. wifi.ap.getmac())
 +   print("IP            :: " .. ip)
 +   print("Netmask       :: " .. nm)
 +   print("Gateway       :: " .. gateway)   
 +
 +   
 +   -- Timer stop
 +   tmr.unregister(1)
 +   
 +   end
 +end)
 +-------------
 +
 +-- je 1000 ms warten und prüfen 
 +-- Uhrzeit setzen beim start
 +-- Time dann auf 1h setzen, dann wieder Uhrzeit neu setzen
 +
 +
 +ntptimer =tmr.create()
 +ntptimer:register(1000, tmr.ALARM_AUTO, function()
 + -- prüfe ob die Verbindung schon geklappt hat
 +  if wifi.sta.getip() == nil then
 +    print("Wait for IP Connection to set time")
 + else
 +    print("---set time-  Timer 2 --  " )
 +    -- in my configuration the gateway has ntp feature on
 +    ip, nm,gateway = wifi.sta.getip()
 +    sntp.sync(gateway,
 +      function(sec, usec, server, info)
 +        print('sync', sec, usec, server)
 +        rtctime.set(sec, 0)
 +      end,
 +      function()
 +       print('Time Sync was not sucessfull')
 +      end
 +    )
 +       
 +    -- get the time
 +    sec, usec, rate = rtctime.get()
 +    print("Internal Timer :: " .. tmr.time() )
 +    print("seconds        :: " .. sec )
 +     
 +    -- set the time time to one hour
 +    ntptimer:interval(60000*60)
 +    
 +   
 +   end
 +end)
 +
 +ntptimer:start()
 +
 +
 +---------------------------------
 +--- Eigentliche Ausleselogik aufrufen
 +
 +-- an welchen Pin ist die Datenleitung angeschlossen
 +avg_temp=0
 +avg_humi=0
 +avg_counter=0
 +total_humi=0
 +total_temp=0
 +
 +------------ Sensor wählen --------------------
 +-- welcher Sensor ist angeschlossen
 +-- sensor_type = "am2320"
 +sensor_type = "DHT22"
 +
 +--
 +-- configure Sensor
 +if sensor_type == "DHT22" then
 +    gpio_pin=2 
 +end
 +
 +-----------
 +if sensor_type == "am2320" then
 +    sda, scl = 2, 1
 +    i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
 +    print("--- init the  am2320 sensor ")
 +    model, version, serial = am2320.setup()
 +    print("AM2320 Modell  :: " .. model   )
 +    print("Version        :: " .. version )
 +    print("Serial Number  :: " .. serial  )
 +end
 +  
 +---
 +-- werte alle 30 Sekunden die Daten aus
 +-- schreibe alle 5 minuten in die DB
 +tmr.alarm(3, 1000*60, 1, function()
 + -- prüfe ob die Verbindung schon geklappt hat
 +  if wifi.sta.getip() == nil then
 +    print("Try to establish connection to start logic")
 + else
 +    print("---Call Logic Timer 3 --  " )
 +    -- get the time
 +    sec, usec, rate = rtctime.get()
 +    print("Internal Timer :: " .. tmr.time() )
 +    print("seconds        :: " .. sec )
 +    
 +    -- rufe die eigentliche Logik auf 
 +    if sensor_type == "am2320" then
 +        humi, temp = am2320.read()
 +        humi=humi/10;
 +        temp=temp/10;
 +        print("AM2320 Temperatur :: "..temp.." -".." Luftfeuchtigkeit :: "..humi)    
 +    
 +    end
 +    
 +    if sensor_type == "DHT22" then
 +        -- Werte auslesen
 +        status, temp, humi, temp_dec, humi_dec = dht.read(gpio_pin)
 +        -- prüfen ob werte gefunden wurden
 +        if status == dht.OK then
 +            -- Wenn Float Firmware im Einsatz
 +            -- können auch Nachkommastellen ausgegeben werden
 +            humi=humi;
 +            temp=temp;
 +            print("DHT22 Temperatur :: "..temp.." -".." Luftfeuchtigkeit :: "..humi)    
 +            
 +        elseif status == dht.ERROR_CHECKSUM then
 +             print( "DHT Checksum error!" )
 +        elseif status == dht.ERROR_TIMEOUT then
 +           print( "DHT22 nicht gefunden" )
 +        end
 +     end
 +
 +    -- build the avg of the last
 +    total_humi=total_humi+humi;
 +    total_temp=total_temp+temp;
 +    avg_counter=avg_counter+1;
 +
 +     -- nur den mittelwert der Daten übertragen
 +     if avg_counter == 10 then
 +           humi=total_humi/avg_counter
 +           temp=total_temp / avg_counter;
 +           print(string.format("RH: %s%%", humi   ) )
 +           print(string.format("Temperature: %s degrees C", temp ) ) 
 +           dofile ("sendData.lua")
 +           avg_counter=1;
 +           total_humi=0;
 +           total_temp=0;
 +     end
 +        
 +   end
 +end)
 +
 +--------------------
 +
 +
 +
 +
 +
 +
 +
 +
 +</code>
elektronik/nodemcu_esp8266_erste_schritte.txt · Zuletzt geändert: 2021/12/12 15:34 von gpipperr