ESP8266 schickt Temperatur an SHC

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ESP8266 schickt Temperatur an SHC

    Da ich nicht meterlange Kabel für Temperatur Sensoren in meinem Haus verlegen will und kann, hab ich mich
    mal etwas mit dem Daumennagelgroßen ESP8266 beschäftigt.
    WLAN hat wohl jeder und was bietet sich denn besser an, als Meßdaten via WLAN an den Sensor Transceiver zu schicken.

    Was wird benötigt?

    • ESP8266 (hier ES-01 V2 aus EBAY 5 Stück für 12.-€)

    • DS18B20 Temperatur Sensor

    • 4,7kOhm Widerstand

    • 3 Volt Netzteil (500mA reichen)

    • USB-->seriell Konverter (muss auf 3.3V umschaltbar sein)

    NodeMcu Firmware, esp8266_flasher, DS18B20.lua Library und ESPlorer als Programmier-Schnittstelle.

    Mein Code Beispiel sieht dann so aus:

    Quellcode

    1. --init.lua
    2.  --Autor Hans Thuering
    3. --Ver 1.0.7
    4. -- Lizenz: Frei zur allgemeinen Verwendung
    5. -- für den Betrieb am SHC kann man natürlich die ganzen Codeteile
    6. -- für die serielle Ausgabe loeschen bzw. auskommentieren.
    7. -- Diese dienten mir nur zur Kontrolle
    8. --Abfragemodul für DS18B20 Sensoren laden
    9. --
    10. --Konfiguration Router Zugang
    11.  wifi.sta.config("FritzBox","wlanpass")
    12.  wifi.sta.connect()
    13. --Schleife bis IP zugeteilt
    14.  tmr.alarm(1, 5000, 1, function()
    15.   if wifi.sta.getip()== nil then
    16.   print("IP nicht gefunden, warte...")
    17.  else
    18.  -- IP gefunden Schleife gestoppt
    19.   tmr.stop(1)
    20.  print("ESP8266 Modus ist: " .. wifi.getmode())
    21.  print("Meine MAC Adresse ist: " .. wifi.ap.getmac())
    22.  print("Konfiguration erfolgreich. Meine IP: "..wifi.sta.getip())
    23.  end
    24.  --
    25.  -- Temperaturmodul
    26.  --
    27.  require('ds18b20')
    28.  -- ESP-01 GPIO Belegung definieren (hier ES-01Modul)
    29.  gpio0 =3
    30.  gpio2 =4
    31. --GPIO festlegen (bei ES-01 nur 0 und 2 moeglich)
    32.  ds18b20.setup(gpio2)
    33. --Sensor auslesen
    34.  t=ds18b20.read()
    35. --Falls was schief geht
    36.  if(t==nil) then
    37.  t=0
    38.  end
    39. --Wiederholung und Update der gesendeten Daten
    40.  tmr.alarm(0,30000, 1, function()
    41.  t=ds18b20.read()
    42. --Daten an SHC Server schicken (klappt momentan nur mit
    43. --NodeMCU integer. it der Float Firmware stuerzt das Ganze ab)
    44.  print("Temperatur Wohnzimmer:" .. t .. " C\n")
    45.  conn=net.createConnection(net.TCP, 0)
    46.  conn:on("receive", function(conn, payload) print(payload) end )
    47.  conn:connect(80,"raspi4")
    48.  conn:on("connection", function(conn, payload)
    49.                        print('\nVerbunden')
    50.                        conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=2&sid=28-ab08de9275&type=1&v1="..ds18b20.read()
    51.                        .." HTTP/1.1\r\n"
    52.                        .."Host: raspi4\r\n"
    53.                        ..("Connection: close\r\n")
    54.                        .."Accept: */*\r\n"
    55.                        .."User-Agent: Mozilla/4.0 "
    56.                        .."compatible; esp8266 Lua; "
    57.                        .."Windows NT 5.1)\r\n"
    58.                        .."\r\n")
    59.                        end)
    60.  -- Anzeige wenn Verbindung beendet
    61. conn:on("disconnection", function(conn, payload) print('\nVerbindung getrennt') end)
    62.                                              
    63. conn:connect(80,'raspi4')
    64.  
    65.   end)
    66.  end)
    Alles anzeigen


    Leider geht das ganze momentan nur mit der NodeMcu Integer Firmware (Float stürzt beim laden des Libraries ab) aber wenn Gradzahlen ohne Kommastellen ausreichen, dann klappt das ganz gut mit SHC 2.2

    P.S. Oliver Hut ab für so viel Engagement, ein Home Automationssystem für den "Kleinen Geldbeutel" zu entwickeln.
    Lebe deine Träume als ein Leben lang nur zu träumen!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hthuering ()

  • RE: ESP8266 schickt Temperatur an SHC

    Nach mehrmaligem Formatieren und neuaufspielen der float firmware, gefühlten 50 maligem
    compilieren von ds18b20.lua und meiner init.lua läuft es jetzt auch mit der float firmware.
    Warum, weiß ich nicht, aber es geht ;)
    Lebe deine Träume als ein Leben lang nur zu träumen!
  • RE: ESP8266 schickt Temperatur an SHC

    hey, coole sache von dir :D

    ich spiele damit auch grade rum, habe bei mir das problem das der ESP8266 öfters nichts mehr macht ein reset bringt es dann wieder für einige zeit zum laufen

    ps die chips laufen auch mit 5v bei mir grade im test der erste läuft seid 3 tagen druch...


    hier meine "software" ich sende die temp mit nachkomma stelle an shc


    [code=php]function read_temp()
    sensor = require("ds18b20")
    ---------------------------------
    -- Sensor pin (nodemcu I/O Index)
    sensorPin = 3
    -- Sensor Initialisieren
    sensor.setup(sensorPin)
    -- Temperatur auslesen und ausgeben
    temperatur = sensor.read()
    t1 = string.sub(temperatur,1,2)
    t2 = string.sub(temperatur,3,7)
    return temperatur,t1,t2
    end
    ---------------------------------------
    function send_to_shc()

    print("Sending data to shc 2.2 ...")
    read_temp()

    print("temp:" ..temperatur.. "\n")
    conn=net.createConnection(net.TCP, 0)
    conn:on("receive", function(conn, payload) print(payload) end)
    -- senden an shc
    conn:connect(80,"shc-ip")
    conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=26&sid=28-ab08de92337&type=1&v1=" ..t1.. "." ..t2.. " HTTP/1.1\r\n")
    conn:send("Host: shc-ip\r\n")
    conn:send("Accept: */*\r\n")
    conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    conn:send("\r\n")
    conn:on("sent",function(conn)
    print("Closing connection")
    conn:close()
    print("daten an shc gesendet" ..t1.. "." ..t2.. "\n")
    end)
    conn:on("disconnection", function(conn)
    print("Got disconnection...")
    print("error...")
    end)

    end
    -----------------------------------------------
    -- STA Modus
    wifi.setmode(wifi.STATION)
    -- SSID, Passwort
    wifi.sta.config("Fritz 1750e", "wlan pw")
    ---------------------------------
    -- Statische IP
    wifi.sta.setip({ip="192.168.0.126",netmask="255.255.255.0",gateway="192.168.0.1"})
    print(wifi.sta.getip())
    read_temp()
    send_to_shc()
    print("Temperature: "..t1.. "." ..t2.. "'C")

    --- alle 30sek an shc senden
    tmr.alarm(0, 30000, 1, function()
    send_to_shc()

    end)[/php]


    gibt es eine möglichtkeit in shc einen chart anzuzeigen ?


    gerne würde ich änlich auch den status von reed-kontakten an shc senden nur leider denke ich wird dies nicht unterstützt :(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gMaN ()

  • RE: ESP8266 schickt Temperatur an SHC

    Bei mir klappt das jetzt auch mit den Kommastellen.
    Reed Kontakte und Bewegungsmelder wären dann auch noch sehr gute Aufgaben für
    den kleinen Chip.
    Zumal das Ding momentan so preisgünstig zu haben ist.
    Am Montag mach ich mich dann mal über die erste Versuchsplatine und weg
    vom Breadboard.
    Einer der ESP's läuft jetzt seit 3 Tagen ganz brav mit 2 AA NiMH Akkus
    (Gabs günstig im Netto) und mit 110mA im Sendebetrieb ist er doch
    sparsamer als ich gedacht habe.
    Lebe deine Träume als ein Leben lang nur zu träumen!
  • RE: ESP8266 schickt Temperatur an SHC

    Hey gibt einige Anleitungen einfach mal googlen und dran denken wenn du flashen willst gipo0 an Gnd und ch_pd an vcc


    Vor dem flashen würde ich den Chip mit einen Adapter mit den pc verbinden und testen ob der Chip geht und mit welcher baudrate er kommuniziert gibt welche mit 9600 und 115200

    http://www.amazon.de/gp/product/B00AFRXKFU?psc=1&redirect=true&ref_=oh_aui_detailpage_o04_s00

    Ach ja beim flashen konnte ich die Chips auch mit 5v betreiben aber der oben genannte Adapter macht auch 3,3 v allerdings müsste man sich den Pin dafür selber dran löten


    Wer dabei hilft braucht kann sich gerne melden
    Dateien
    • IMG_0011.JPG

      (245,91 kB, 116 mal heruntergeladen, zuletzt: )
    • IMG_0014.JPG

      (177,9 kB, 115 mal heruntergeladen, zuletzt: )
    • IMG_0015.JPG

      (170,13 kB, 117 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gMaN ()

  • RE: ESP8266 schickt Temperatur an SHC

    @htheuring

    Hallo,

    Bin an dieser Angelegenheit auch sehr interessiert. Du hast oben geschrieben: "ESP8266 ES-01 V2".

    Durch googlen habe ich herausgefunden, dass es von dem ESP-01 eine Ver. 1 und 2 gibt, die sich aber wohl kaum unterscheidet. Auf den ersten Blick eben nur durch die Pin Belegung.

    Meine Frage ist: Ist es relevant welche Version man erhält und wo hast Du sie denn in Ebay bestellt, da fast keiner dort angibt, welche Version es ist.

    Vielen Dank für Deine Bemühungen.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • RE: ESP8266 schickt Temperatur an SHC

    Hallo

    da hier einige fragen des Flashens aufgekommen sind hier eine kleine anleitung

    Ich beschreibe hier wir ihr die nodemcu firmware auf ein ESP8266 Flashen könnt

    im anhang ein bild vom ESP8266 mit beschriftung der pins
    zum flashen benötigt ihr einen USB zu TTL-Konverter-Modul ( ich benutz das hier:http://www.amazon.de/gp/product/B00AFRXKFU?psc=1&redirect=true&ref_=oh_aui_detailpage_o07_s00 )

    ESP8266 mit dem USB zu TTL Konverter verkabeln:

    ESP           USB
    GND      zu GND :D
    TX        zu RXD
    CH_PD   zu VCC
    VCC      zu VCC 3,3V oder auch 5V
    RX        zu TXD
    WICHTIG ZUM FLASHEN der Firmware ( bei uns nodemcu) muss GPIO0 and GND angeschlossen werden! zum Firmware flashen nutze ich  das programm hier: https://github.com/nodemcu/nodemcu-flasher

    sollte alles so angeschlossen sein solltet ihr am pc im Geräte-Manager unter Anschlüsse(COM & LPT) einen punkt finden "Silicon Labs CP210x USB to URAT Bridge (COM.....)

    nun den Com-port im nodemcu flasher einstellen
    kurz den CH_PD pin von VCC lösen und wieder einstecken ESP8266 startet neu und ihr sollte auf "Flash" drücken der vorgang dauert nun eine weile


    so wenn alles geschaft ist sollte die nodemcu firmware auf dem ESP8266 drauf sein, jetzt könnt ihr GPIO0 von GND lösen
    jetzt kann man mit z.b. ESPlorer das programm auf den ESP8266 schreiben



    [hr]

    dht22.lua


    Quellcode

    1. -- ***************************************************************************
    2. -- DHT22 module for ESP8266 with nodeMCU
    3. --
    4. -- Written by Javier Yanez
    5. -- but based on a script of Pigs Fly from ESP8266.com forum
    6. --
    7. -- MIT license, http://opensource.org/licenses/MIT
    8. -- ***************************************************************************
    9. local moduleName = ...
    10. local M = {}
    11. _G[moduleName] = M
    12. local humidity
    13. local temperature
    14. function M.read(pin)
    15.   local checksum
    16.   local checksumTest
    17.   humidity = 0
    18.   temperature = 0
    19.   checksum = 0
    20.   -- Use Markus Gritsch trick to speed up read/write on GPIO
    21.   local gpio_read = gpio.read
    22.  
    23.   local bitStream = {}
    24.   for j = 1, 40, 1 do
    25.     bitStream[j] = 0
    26.   end
    27.   local bitlength = 0
    28.   -- Step 1:  send out start signal to DHT22
    29.   gpio.mode(pin, gpio.OUTPUT)
    30.   gpio.write(pin, gpio.HIGH)
    31.   tmr.delay(100)
    32.   gpio.write(pin, gpio.LOW)
    33.   tmr.delay(20000)
    34.   gpio.write(pin, gpio.HIGH)
    35.   gpio.mode(pin, gpio.INPUT)
    36.   -- Step 2:  DHT22 send response signal
    37.   -- bus will always let up eventually, don't bother with timeout
    38.   while (gpio_read(pin) == 0 ) do end
    39.   local c=0
    40.   while (gpio_read(pin) == 1 and c < 500) do c = c + 1 end
    41.   -- bus will always let up eventually, don't bother with timeout
    42.   while (gpio_read(pin) == 0 ) do end
    43.   c=0
    44.   while (gpio_read(pin) == 1 and c < 500) do c = c + 1 end
    45.  
    46.   -- Step 3: DHT22 send data
    47.   for j = 1, 40, 1 do
    48.     while (gpio_read(pin) == 1 and bitlength < 10 ) do
    49.       bitlength = bitlength + 1
    50.     end
    51.     bitStream[j] = bitlength
    52.     bitlength = 0
    53.     -- bus will always let up eventually, don't bother with timeout
    54.     while (gpio_read(pin) == 0) do end
    55.   end
    56.   --DHT data acquired, process.
    57.   for i = 1, 16, 1 do
    58.     if (bitStream[i] > 4) then
    59.       humidity = humidity + 2 ^ (16 - i)
    60.     end
    61.   end
    62.   for i = 1, 16, 1 do
    63.     if (bitStream[i + 16] > 4) then
    64.       temperature = temperature + 2 ^ (16 - i)
    65.     end
    66.   end
    67.   for i = 1, 8, 1 do
    68.     if (bitStream[i + 32] > 4) then
    69.       checksum = checksum + 2 ^ (8 - i)
    70.     end
    71.   end
    72.   checksumTest = (bit.band(humidity, 0xFF) + bit.rshift(humidity, 8) + bit.band(temperature, 0xFF) + bit.rshift(temperature, 8))
    73.   checksumTest = bit.band(checksumTest, 0xFF)
    74.   if temperature > 0x8000 then
    75.     -- convert to negative format
    76.     temperature = -(temperature - 0x8000)
    77.   end
    78.   -- conditions compatible con float point and integer
    79.   if (checksumTest - checksum >= 1) or (checksum - checksumTest >= 1) then
    80.     humidity = nil
    81.   end
    82. end
    83. function M.getTemperature()
    84.   return temperature
    85. end
    86. function M.getHumidity()
    87.   return humidity
    88. end
    89. return M
    Alles anzeigen

    [hr]
    ds18b20.lua:

    Brainfuck-Quellcode

    1. --------------------------------------------------------------------------------
    2. -- DS18B20 one wire module for NODEMCU
    3. -- NODEMCU TEAM
    4. -- LICENCE: http://opensource.org/licenses/MIT
    5. -- Vowstar <vowstar@nodemcu.com>
    6. -- 2015/02/14 sza2 <sza2trash@gmail.com> Fix for negative values
    7. --------------------------------------------------------------------------------
    8. -- Set module name as parameter of require
    9. local modname = ...
    10. local M = {}
    11. _G[modname] = M
    12. --------------------------------------------------------------------------------
    13. -- Local used variables
    14. --------------------------------------------------------------------------------
    15. -- DS18B20 dq pin
    16. local pin = nil
    17. -- DS18B20 default pin
    18. local defaultPin = 4
    19. --------------------------------------------------------------------------------
    20. -- Local used modules
    21. --------------------------------------------------------------------------------
    22. -- Table module
    23. local table = table
    24. -- String module
    25. local string = string
    26. -- One wire module
    27. local ow = ow
    28. -- Timer module
    29. local tmr = tmr
    30. -- Limited to local environment
    31. setfenv(1,M)
    32. --------------------------------------------------------------------------------
    33. -- Implementation
    34. --------------------------------------------------------------------------------
    35. C = 0
    36. F = 1
    37. K = 2
    38. function setup(dq)
    39.  pin = dq
    40.  if(pin == nil) then
    41.    pin = defaultPin
    42.  end
    43.  ow.setup(pin)
    44. end
    45. function addrs()
    46.  setup(pin)
    47.  tbl = {}
    48.  ow.reset_search(pin)
    49.  repeat
    50.    addr = ow.search(pin)
    51.    if(addr ~= nil) then
    52.      table.insert(tbl, addr)
    53.    end
    54.    tmr.wdclr()
    55.  until (addr == nil)
    56.  ow.reset_search(pin)
    57.  return tbl
    58. end
    59. function readNumber(addr, unit)
    60.  result = nil
    61.  setup(pin)
    62.  flag = false
    63.  if(addr == nil) then
    64.    ow.reset_search(pin)
    65.    count = 0
    66.    repeat
    67.      count = count + 1
    68.      addr = ow.search(pin)
    69.      tmr.wdclr()
    70.    until((addr ~= nil) or (count > 100))
    71.    ow.reset_search(pin)
    72.  end
    73.  if(addr == nil) then
    74.    return result
    75.  end
    76.  crc = ow.crc8(string.sub(addr,1,7))
    77.  if (crc == addr:byte(8)) then
    78.    if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then
    79.      -- print("Device is a DS18S20 family device.")
    80.      ow.reset(pin)
    81.      ow.select(pin, addr)
    82.      ow.write(pin, 0x44, 1)
    83.      -- tmr.delay(1000000)
    84.      present = ow.reset(pin)
    85.      ow.select(pin, addr)
    86.      ow.write(pin,0xBE,1)
    87.      --print("P="..present)
    88.      data = nil
    89.      data = string.char(ow.read(pin))
    90.      for i = 1, 8 do
    91.        data = data .. string.char(ow.read(pin))
    92.      end
    93.      -- print(data:byte(1,9))
    94.      crc = ow.crc8(string.sub(data,1,8))
    95.      -- print("CRC="..crc)
    96.      if (crc == data:byte(9)) then
    97.        t = (data:byte(1) + data:byte(2) * 256)
    98.        if (t > 32767) then
    99.          t = t - 65536
    100.        end
    101.      
    102.        if(unit == nil or unit == C) then
    103.          t = t * 625
    104.        elseif(unit == F) then
    105.          t = t * 1125 + 320000
    106.        elseif(unit == K) then
    107.          t = t * 625 + 2731500
    108.        else
    109.          return nil
    110.        end
    111.        --print("temp1:" ..t.. "next")
    112.        t = t / 1
    113.        --print("temp2/10000:" ..t.. "next")
    114.        
    115.        --print("Temperature="..t1.."."..t2.." Centigrade")
    116.        -- result = t1.."."..t2
    117.        return t
    118.      end
    119.      tmr.wdclr()
    120.    else
    121.    -- print("Device family is not recognized.")
    122.    end
    123.  else
    124.  -- print("CRC is not valid!")
    125.  end
    126.  return result
    127. end
    128. function read(addr, unit)
    129.  t = readNumber(addr, unit)
    130.  if (t == nil) then
    131.    return nil
    132.  else
    133.    return t
    134.  end
    135. end
    136. -- Return module table
    137. return M
    Alles anzeigen

    [hr]

    um ds18b20 daten an shc zu senden:


    Brainfuck-Quellcode

    1. print("init.lua Start... v.0.20")
    2. ---------------------------------
    3. function read_temp()
    4. sensor = require("ds18b20")
    5. ---------------------------------
    6. -- Sensor pin (nodemcu I/O Index)
    7. sensorPin = 3
    8. -- Sensor Initialisieren
    9. sensor.setup(sensorPin)
    10. -- Temperatur auslesen und ausgeben ggf anpassung für kommastelle
    11.    temperatur = sensor.read()
    12.    t1 = string.sub(temperatur,1,2)
    13.    t2 = string.sub(temperatur,3,7)
    14.    return temperatur,t1,t2
    15. end
    16. ---------------------------------------
    17. function send_to_shc()
    18. print("Sending data to shc...")
    19. read_temp()
    20. --print("temp:" ..temperatur.. "\n")
    21. conn=net.createConnection(net.TCP, 0)
    22. conn:on("receive", function(conn, payload) print(payload) end)
    23. -- senden an shc
    24. conn:connect(80,"192.168.0.15") <--- SHC ip anpassen
    25. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=26&sid=28-0315515793ff&type=1&v1=" ..t1.. "." ..t2.. " HTTP/1.1\r\n") <-- ggf pfad anpassen und sid anpassen
    26. conn:send("Host: 192.168.0.15\r\n")  <-- SHC ip anpassen
    27. conn:send("Accept: */*\r\n")
    28. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    29. conn:send("\r\n")
    30. conn:on("sent",function(conn)
    31.                      --print("Closing connection")
    32.                      conn:close()
    33.                      print("daten an shc gesendet" ..t1.. "." ..t2.. "\n")
    34.                  end)
    35. conn:on("disconnection", function(conn)
    36.                                print("Got disconnection...")
    37.                                --print("error...")
    38.  end)
    39. end
    40. -----------------------------------------------
    41. -- STA Modus
    42. wifi.setmode(wifi.STATION)
    43. -- SSID, Passwort
    44. wifi.sta.config("SSID", "wlanpassword")  <-- WLAN DATEN anpassen
    45. ---------------------------------
    46. -- Statische IP
    47. wifi.sta.setip({ip="192.168.0.210",netmask="255.255.255.0",gateway="192.168.0.1"}) <- um dem ganzen eine feste ip zugeben
    48. print(wifi.sta.getip())
    49. read_temp()
    50. send_to_shc()
    51. --print("Temperature: "..t1.. "." ..t2.. "'C")
    52. --- alle 30sek an shc senden
    53. tmr.alarm(0, 30000, 1, function()
    54. send_to_shc()
    55. end)
    Alles anzeigen


    [hr]

    für dht22


    Brainfuck-Quellcode

    1. --------------------------------------
    2. -- DS18B20 Temperatur Webserver mit statischer IP und Auto-Refresh
    3. --------------------------------------
    4. -- Quellen
    5. --   github.com/nodemcu/nodemcu-firmware#connect-to-your-ap
    6. --   github.com/nodemcu/nodemcu-firmware#or-a-simple-http-server
    7. --   github.com/nodemcu/nodemcu-firmware/tree/master/lua_modules/ds18b20
    8. --------------------------------------
    9. print("DHT22 v.0.1")
    10. function read_temp()
    11. PIN = 3 --  data pin, GPIO0
    12. dht22 = require("dht22")
    13. dht22.read(PIN)
    14. t = dht22.getTemperature()
    15. h = dht22.getHumidity()
    16. if h == nil then
    17.  print("Error reading from DHT22")
    18. else
    19. t1 = string.sub(t,1,2)
    20. t2 = string.sub(t,3,4)
    21. h1 = string.sub(h,1,2)
    22. h2 = string.sub(h,3,4)
    23. if t2 == nil then
    24. t2 = 0
    25. elseif h2 == nil then
    26. h2 = 0
    27. end
    28. print ("t:" ..t1.. "." .. t2.. "\nh:" ..h1.. "." ..h2.. "\n")
    29. return t1,t2,h1,h2
    30. end
    31. -- release module
    32. dht22 = nil
    33. package.loaded["dht22"]=nil
    34. end
    35. ---------------------------------------
    36. function send_to_shc()
    37. print("Sending data to shc 2.2 ...")
    38. read_temp()
    39. --print("temp:" ..temperatur.. "\n")
    40. conn=net.createConnection(net.TCP, 0)
    41. conn:on("receive", function(conn, payload) print(payload) end)
    42. -- senden an shc
    43. conn:connect(80,"192.168.0.12") <- shc ip
    44. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=1&sid=1&type=2&v1=" ..t1.. "." ..t2.. "&v2=" ..h1.. "." ..h2.. " HTTP/1.1\r\n") <- id anpassen
    45. conn:send("Host: 192.168.0.12\r\n")  <-shc ip
    46. conn:send("Accept: */*\r\n")
    47. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    48. conn:send("\r\n")
    49. conn:on("sent",function(conn)
    50.                      --print("Closing connection")
    51.                      conn:close()
    52.                      print("daten an shc gesendet\n" ..t1.. "." ..t2.. "\nh:" ..h1.. "." ..h2.. "\n")
    53.                  end)
    54. conn:on("disconnection", function(conn)
    55.                                print("Got disconnection...")
    56.  end)
    57. end
    58. -----------------------------------------------
    59. -- STA Modus
    60. wifi.setmode(wifi.STATION)
    61. -- SSID, Passwort
    62. wifi.sta.config("SSID", "wlanpassword ") <-- wlan einstellungen
    63. ---------------------------------
    64. -- Statische IP
    65. wifi.sta.setip({ip="192.168.0.180",netmask="255.255.255.0",gateway="192.168.0.1"}) <-- daten für feste ip
    66. print(wifi.sta.getip())
    67. read_temp()
    68. send_to_shc()
    69. --- alle 30sek an shc senden
    70. tmr.alarm(0, 30000, 1, function()
    71. send_to_shc()
    72. end)
    Alles anzeigen


    [hr]
    Dateien
    • esp8266_1.png

      (694,46 kB, 140 mal heruntergeladen, zuletzt: )
    • dht222.jpg

      (353,83 kB, 90 mal heruntergeladen, zuletzt: )
    • dsleep.jpg

      (429,25 kB, 101 mal heruntergeladen, zuletzt: )
    • kühschrank.jpg

      (483,66 kB, 82 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gMaN ()

  • RE: ESP8266 schickt Temperatur an SHC

    premo schrieb:


    Wenn die Firmware drauf ist, muss ich dann z.b. den Inhalt von ds18.lua als Textdatei anlegen und dann mit ESPlorer öffnen und auf den ESP schreiben.


    du kannst direkt im ESPlorer unter der registerkarte "NodeMCU+MicroPython" eine neue datei erstellen diese den passenden namen geben z.b. ds18b20.lua und direkt mit "Save" auf den esp schreiben sollte "save" grau sein einfach z.b. 1x enter in der datei drücken und wieder löschen dann ist Save blau und du kannst es auf den esp schreiben

    jsp-email schrieb:


    Wo gibts das dink und wie teuer ist er?



    z.b hier
    http://rpi-controlcenter.de/showthread.php?tid=366

    bei 5 stück könnte ich auch 3,5€ das stück anbieten inkl versand