Spannung der Sensoren ist 0,00V

  • RE: Spannung der Sensoren ist 0,00V

    agent47 wrote:


    also mit "http://localhost/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=1&type=999&v1=3.75" setzt er bei mir die Spannung. Es muss natürlich vorher der Sensor existieren für den du die Spannung setzen willst.


    So funktioniert es, die Spannung wird angezeigt.
    Die Sensoren (und die Werte, die sie senden) haben sich seit Version 2.2.2 nicht geändert.
  • RE: Spannung der Sensoren ist 0,00V

    An den ESP hängen DHT22, diese Werte kommen im SHC an.
    An einem der ESP hängt zusätzlich noch ein DS18B20, dessen Wert erscheint auch nicht, bzw. der Sensor selbst ist im SHC gar nicht vorhanden.

    Die Sendereihenfolge der ESP ist (jeweils kurz hintereinander):
    1. Wert DHT22
    2. Wert DS18B20 (sofern vorhanden)
    3. Wert Spannung

    Es schein also, dass von jedem ESP nur jeweils der erste Wert im SHC ankommt.
    Kann es sein, dass das ein Timingproblem ist? oder dass prinzipiell nur der jeweils erste gültige Wert angenommen wird?
    Hier scheint mir die Ursache für das Spannungs- und jetzt auch DS18B20-Problem zu liegen.
    Deshalb funktioniert auch das manuelle Senden des Spannungswertes, da dieser Wert ja in dem Fall der erste ist.

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

  • RE: Spannung der Sensoren ist 0,00V

    Wie schnell hintereinander die wirklich gesendet werden kann ich nicht sagen, es gibt keine direkte Pause dazwischen. Hat aber bei Version 2.2.2 über Wochen einwandfrei funktioniert.
    Hier mal die Sende-Funktion (LUA mit nodemcu):

    Source Code

    1. function send_to_shc()
    2. print("Sending data to shc 2.2 ...")
    3. ReadDHT()
    4. getDS()
    5. conn=nil
    6. conn=net.createConnection(net.TCP, 0)
    7. conn:on("receive", function(conn, payload) print(payload) end)
    8. -- senden an shc
    9. conn:connect(80,"192.168.2.81")
    10. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=40&type=2&v1=" ..temp.."."..temp_decimal.."&v2=" ..humi.."."..humi_decimal.." HTTP/1.1\r\n")
    11. conn:send("Host: 192.168.2.81\r\n")
    12. conn:send("Accept: */*\r\n")
    13. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    14. conn:send("\r\n")
    15. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=28-ab08de0002&type=1&v1="..t1.." HTTP/1.1\r\n")
    16. conn:send("Host: 192.168.2.81\r\n")
    17. conn:send("Accept: */*\r\n")
    18. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    19. conn:send("\r\n")
    20. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&type=999&v1="..voltage.." HTTP/1.1\r\n")
    21. conn:send("Host: 192.168.2.81\r\n")
    22. conn:send("Accept: */*\r\n")
    23. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    24. conn:send("\r\n")
    25. conn:on("sent",function(conn)
    26.                     print("Closing connection")
    27.                    conn:close()
    28.                     print("daten an shc gesendet\nt:" ..temp.."."..temp_decimal.."\nh:" ..humi.."."..humi_decimal.."\n")
    29.                 end)
    30. conn:on("disconnection", function(conn)
    31.                               print("Got disconnection...")
    32. end)
    33. end
    Display All
  • RE: Spannung der Sensoren ist 0,00V

    okay, ich würde es dann nicht direkt an shc senden ich würde es an ein schnell zusammen gebauten php script schicken und von dort an shc

    [code=php]
    <?php
    # ? name.php?dht_temp=X&dht_humi=x&ds=X&voltage=X

    $dht_temp = $_GET[dht_temp];
    $dht_humi = $_GET[dht_humi];
    $ds = $_GET[ds];
    $voltage = $_GET[voltage];

    $send1 = file_get_contents("http://192.168.2.81/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=40&type=2&v1=$dht_temp&v2=$dht_humi");
    $send2 = file_get_contents("http://192.168.2.81/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=28-ab08de0002&type=1&v1=$ds");
    $send3 = file_get_contents("http://192.168.2.81//shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&type=999&v1=$voltage");


    ?>
    [/php]

    sollte das nicht gehen einfach swischen den file_get_contents mal ein sleep einbauen

    würdest du mir mal dein lua scrpt senden wie du die spannung ausliest ?

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

  • RE: Spannung der Sensoren ist 0,00V

    gMaN wrote:


    okay, ich würde es dann nicht direkt an shc senden ich würde es an ein schnell zusammen gebauten php script schicken und von dort an shc


    Hmmm...ich will aber nicht mit jedem Update des SHC alle meine Sensoren umprogrammieren müssen. Wie schon gesagt, mit Version 2.2.2 hat es wochenlang funktioniert.

    gMaN wrote:


    würdest du mir mal dein lua scrpt senden wie du die spannung ausliest ?


    Die Spannung kann man nur auslesen, wenn der ESP nicht im STATION-Mode ist, sonst stürzt das Modul ab und startet neu (Bug. Da die WLAN-Zugangsdaten aber im Flash gespeichert sind, verbindet er sich ziemlich fix neu, wenn er aufwacht. Deshalb gibt's ziemlich viele Timer-Schleifen und disconnects, damit ganz sicher das Modul nicht abstürzt.

    Das Script (ohne dsleep):

    Source Code

    1. wifi.setmode(wifi.STATIONAP)
    2. function ReadDHT()
    3. pin = 4
    4. status,temp,humi,temp_decimal,humi_decimal = dht.read(pin)
    5. if( status == dht.OK ) then
    6.  -- Float firmware using this example
    7.  print("DHT Temperature:"..temp.."."..temp_decimal.."\nHumidity:"..humi.."."..humi_decimal.."\n")
    8. elseif( status == dht.ERROR_CHECKSUM ) then
    9.  print( "DHT Checksum error." );
    10. elseif( status == dht.ERROR_TIMEOUT ) then
    11.  print( "DHT Time out." );
    12. end
    13. return status,temp,humi,temp_decimal,humi_decimal
    14. end
    15. function getDS()
    16. dspin = 3
    17. ow.setup(dspin)
    18. count = 0
    19. ow.reset(dspin)
    20. repeat
    21.  count = count + 1
    22.  addr = ow.reset_search(dspin)
    23.  addr = ow.search(dspin)
    24.  tmr.wdclr()
    25. until((addr ~= nil) or (count > 100))
    26. if (addr == nil) then
    27.  print("No more addresses.")
    28. else
    29.  print(addr:byte(1,8))
    30.  crc = ow.crc8(string.sub(addr,1,7))
    31.  if (crc == addr:byte(8)) then
    32.    if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then
    33.      print("Device is a DS18S20 family device.")
    34.          ow.reset(dspin)
    35.          ow.select(dspin, addr)
    36.          ow.write(dspin, 0x44, 1)
    37.          tmr.delay(1000000)
    38.          present = ow.reset(dspin)
    39.          ow.select(dspin, addr)
    40.          ow.write(dspin,0xBE,1)
    41.          print("P="..present)  
    42.          data = nil
    43.          data = string.char(ow.read(dspin))
    44.          for i = 1, 8 do
    45.            data = data .. string.char(ow.read(dspin))
    46.          end
    47.          print(data:byte(1,9))
    48.          crc = ow.crc8(string.sub(data,1,8))
    49.          print("CRC="..crc)
    50.          if (crc == data:byte(9)) then
    51.             t = (data:byte(1) + data:byte(2) * 256) * 625
    52.             t1 = t / 10000
    53.             t2 = t % 10000
    54.             print("Temperatur="..t1.." Grad")
    55.            
    56.          end                  
    57.          tmr.wdclr()
    58.    else
    59.      print("Device family is not recognized.")
    60.    end
    61.  else
    62.    print("CRC is not valid!")
    63.  end
    64. end
    65. return t1
    66. end
    67. function send_to_shc()
    68. print("Sending data to shc 2.2 ...")
    69. ReadDHT()
    70. getDS()
    71. conn=nil
    72. conn=net.createConnection(net.TCP, 0)
    73. conn:on("receive", function(conn, payload) print(payload) end)
    74. -- senden an shc
    75. conn:connect(80,"192.168.2.81")
    76. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=40&type=2&v1=" ..temp.."."..temp_decimal.."&v2=" ..humi.."."..humi_decimal.." HTTP/1.1\r\n")
    77. conn:send("Host: 192.168.2.81\r\n")
    78. conn:send("Accept: */*\r\n")
    79. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    80. conn:send("\r\n")
    81. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=28-ab08de0002&type=1&v1="..t1.." HTTP/1.1\r\n")
    82. conn:send("Host: 192.168.2.81\r\n")
    83. conn:send("Accept: */*\r\n")
    84. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    85. conn:send("\r\n")
    86. conn:send("GET /shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&type=999&v1="..voltage.." HTTP/1.1\r\n")
    87. conn:send("Host: 192.168.2.81\r\n")
    88. conn:send("Accept: */*\r\n")
    89. conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
    90. conn:send("\r\n")
    91. conn:on("sent",function(conn)
    92.                     print("Closing connection")
    93.                    conn:close()
    94.                     print("daten an shc gesendet\nt:" ..temp.."."..temp_decimal.."\nh:" ..humi.."."..humi_decimal.."\n")
    95.                 end)
    96. conn:on("disconnection", function(conn)
    97.                               print("Got disconnection...")
    98. end)
    99. end
    100. --- alle 60sek an shc senden
    101. tmr.alarm(0, 60000, 1, function()
    102. wifi.sta.disconnect()
    103. wifi.sta.autoconnect(0)
    104. wifi.setmode(wifi.STATIONAP)
    105. tmr.alarm(2,1000,0, function()
    106. voltage=adc.readvdd33() / 1000
    107. print("Spannung: "..voltage.."\n")
    108. end)
    109. tmr.alarm(3,2000,0, function()
    110. wifi.setmode(wifi.STATION)
    111. wifi.sta.config("SSID", "WLAN_PW")
    112. tmr.alarm(1,1000, 1, function() if wifi.sta.getip()==nil then print(" Wait to IP address!") else print("New IP address is "..wifi.sta.getip()) tmr.stop(1) send_to_shc() end end)
    113. end)
    114. end)
    Display All
  • RE: Spannung der Sensoren ist 0,00V

    gMaN wrote:


    okay, ich würde es dann nicht direkt an shc senden ich würde es an ein schnell zusammen gebauten php script schicken und von dort an shc

    [code=php]
    <?php
    # ? name.php?dht_temp=X&dht_humi=x&ds=X&voltage=X

    $dht_temp = $_GET[dht_temp];
    $dht_humi = $_GET[dht_humi];
    $ds = $_GET[ds];
    $voltage = $_GET[voltage];

    $send1 = file_get_contents("http://192.168.2.81/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=40&type=2&v1=$dht_temp&v2=$dht_humi");
    $send2 = file_get_contents("http://192.168.2.81/shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&sid=28-ab08de0002&type=1&v1=$ds");
    $send3 = file_get_contents("http://192.168.2.81//shc/index.php?app=shc&a&ajax=pushsensorvalues&spid=4&type=999&v1=$voltage");


    ?>
    [/php]

    sollte das nicht gehen einfach swischen den file_get_contents mal ein sleep einbauen

    würdest du mir mal dein lua scrpt senden wie du die spannung ausliest ?


    wenn du es so machen würdest, dann müsstest du deine esp's quasi nie updaten und müsstest nur den php script anpassen wenn es mal ein shc update gibt, der die schnittstelle ändert :D