Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Controllers
  3. Domoticz
  4. gw.request - how is it done?

gw.request - how is it done?

Scheduled Pinned Locked Moved Domoticz
15 Posts 4 Posters 6.0k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    hyla
    wrote on last edited by
    #1

    Hejda,

    I'm trying to get my power meter sensor running. The final piece that is missing is the
    feature to get the last known value from domoticz. In theory it should be something like:

    gw.begin(incomingMessage, NODE_ID, true);
    gw.present(CHILD_ID, V_VAR1);

    And after that I should be able to retrieve the value by using:

    gw.request(CHILD_ID, V_VAR1);

    I'd have to provide the routine for incoming of course:

    void incomingMessage(const MyMessage &message){}

    But this routine is never ever entered.
    Now, has anyone here a code example for me which successfully requests a variable
    from the domoticz server?
    I have of course tried the examples from MySensors but without success.

    I'm using Domoticz 2.3488 beta on a RaspberryPi and MySensors 1.5.

    So far I had just hard coded the value for the energy meter counter at the time of startup into my
    firmware and hoped I would never have to reboot.
    But today I had a power failure and I'm back to my problem again. And I'd reeeeeaally like to get this
    solved :)

    Thanks for any help!

    Christoph

    1 Reply Last reply
    0
    • hekH Online
      hekH Online
      hek
      Admin
      wrote on last edited by
      #2

      Can't help much when we don't see the Domoticz/GW/Node logs.

      Does the req-message reach Domoticz? Is it issuing an answer?

      1 Reply Last reply
      0
      • H Offline
        H Offline
        hyla
        wrote on last edited by
        #3

        @hek said:

        Can't help much when we don't see the Domoticz/GW/Node logs.

        Does the req-message reach Domoticz? Is it issuing an answer?

        Where do I have to look for those logs? All I'm aware of is the log tab in
        the setup page of my Domoticz server homepage. But I don't get any
        details there, just which sensor sent anything at all:


        2015-10-29 20:41:52.312 Hardware Monitor: Fetching data (System sensors)
        2015-10-29 20:42:04.279 (Pyramid) Temp (Temp_Dach_Fien)
        2015-10-29 20:42:06.155 (Pyramid) Temp (TempTest_03)
        2015-10-29 20:42:06.173 (Pyramid) Temp (BattVoltage)

        and so on.

        So, where are thos logs You mentioned?

        Oh, and I had another power failure today. It was my wife's flat iron
        ;)

        Thanks,
        Christoph

        1 Reply Last reply
        0
        • hekH Online
          hekH Online
          hek
          Admin
          wrote on last edited by
          #4

          Hook up the sensor to Arduino IDE and look in serial monitor.

          1 Reply Last reply
          0
          • H Offline
            H Offline
            hyla
            wrote on last edited by
            #5

            Okay. Did that already, of course. :)
            Let's start from something known. I've used the demo code for
            the EnergyMeterPulseSensor Example. All I changed is the Node_ID
            (to 123). Did this in:

            gw.begin(incomingMessage, NODE_ID, false);

            And I am sending a demo value to V_VAR1:

            gw.send(pcMsg.set(123456));
            This does get sent obviously. In the Domoticz.db file I can find that value
            in the "MySensorsVar" table. After having sent the value I remove this line.

            And this is what I get (b.t.w.: how do I decipher those messages? This is
            not the format that is used in the MySensors SerialProtocol document):

            send: 123-123-0-0 s=255,c=0,t=17,pt=0,l=3,sg=0,st=ok:1.5
            send: 123-123-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
            sensor started, id=123, parent=0, distance=1
            send: 123-123-0-0 s=255,c=3,t=11,pt=0,l=12,sg=0,st=ok:Energy Meter
            send: 123-123-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0
            send: 123-123-0-0 s=0,c=0,t=13,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            read: 12-13-0 s=0,c=1,t=1,pt=7,l=5,sg=0:46.6
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:
            send: 123-123-0-0 s=0,c=2,t=24,pt=0,l=0,sg=0,st=ok:

            and so on.
            Some of this I understand (I think). What about the lonesome "read" line?
            As I already wrote: it doesn't look like the routine...

            void incomingMessage(const MyMessage &message)

            ... is ever entered.

            What else can I tell You?

            Christoph

            1 Reply Last reply
            0
            • hekH Online
              hekH Online
              hek
              Admin
              wrote on last edited by
              #6

              Ok, guess you have to ask someone over at Domoticz forum if it even supports REQ/VARx.

              1 Reply Last reply
              0
              • H Offline
                H Offline
                hyla
                wrote on last edited by
                #7

                Okay, will do.
                But apart from that: really nobody here with Domoticz who successfully worked with
                "request"? Can't believe that...

                Thanks,
                Christoph

                1 Reply Last reply
                0
                • H Offline
                  H Offline
                  hyla
                  wrote on last edited by
                  #8

                  Hi,

                  this is my workaround for my problem:
                  Ive added a 1F goldcap capacitor as an emergency power supply.
                  If my powersupply voltage drops a routine is called which stores
                  the current counter value via gw.setState() and then enters an
                  endless loop. And an LED is switched on to empty the capacitor.
                  Next time the sensor boots up, first thing it'll do is to retrieve the
                  old value for the pulsecount from the EEPROM.

                  With this I can use the setstate function in case it's necessary
                  but I don't have to write to the EEPROM continuously which
                  wouldn't work for long (100k write cycle limit).

                  It's probably not failsafe. For example: what happens if there
                  are multiple reboots because the brownout watchdog "barks"
                  and the final power cut happens while the EEPROM is written to?

                  But for now it seems to work. Dah!

                  :)
                  Christoph

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Mediacj
                    wrote on last edited by
                    #9

                    Interesting workaround!

                    Could you please share your sketch?

                    H 1 Reply Last reply
                    0
                    • sundberg84S Offline
                      sundberg84S Offline
                      sundberg84
                      Hardware Contributor
                      wrote on last edited by sundberg84
                      #10

                      I have made a sketch requesting VVAR1 from Domoticz. It didnt work with the stable version but better with the beta.
                      But as i wrote in this post im still having issues with getting the request back: http://forum.mysensors.org/topic/2116/hard-to-grab-time-and-value-sent-from-controller

                      The sketch is in the link, but its a rain gauge.

                      Controller: Proxmox VM - Home Assistant
                      MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                      MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                      RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                      H 1 Reply Last reply
                      1
                      • H Offline
                        H Offline
                        hyla
                        wrote on last edited by
                        #11

                        @Mediacj sure. It's not cleaned up. And a hack of various sources.
                        I guess You won't mind ;)
                        EnergyMeterPulseSensorGrace.ino

                        The fun stuff happens in the void graceful() routine.

                        First of all You'll have to run this line once to set Your startup value:
                        pulseCount = ((1912810 * PULSE_FACTOR / 10) + 5) / 10; graceful();

                        After that You can comment this out and hopefully won't ever need it again :)
                        With the next booting of the sensor the value will be read from the EEPROM:

                        pulseCount = 0;
                        pulseCount += gw.loadState(GRACE + 3); // get highest byte
                        pulseCount *= 256;
                        pulseCount += gw.loadState(GRACE + 2);
                        pulseCount *= 256;
                        (and so on).

                        If the pre-voltage-regulator voltage drops the gold cap will still hold enough power
                        to save the current value to the EEPROM.

                        Still. I'd much prefer the software solution ...

                        Christoph

                        1 Reply Last reply
                        0
                        • sundberg84S sundberg84

                          I have made a sketch requesting VVAR1 from Domoticz. It didnt work with the stable version but better with the beta.
                          But as i wrote in this post im still having issues with getting the request back: http://forum.mysensors.org/topic/2116/hard-to-grab-time-and-value-sent-from-controller

                          The sketch is in the link, but its a rain gauge.

                          H Offline
                          H Offline
                          hyla
                          wrote on last edited by
                          #12

                          @sundberg84 I'll have a look at that.
                          I've just tried the TimeAwareSensor example mentioned and it doesn't work.
                          But I DO get some reads, as far as I could see I got them from those
                          sensors that are repeater enabled.
                          But NEVER anything from "GW". WHat's it's address anyway?

                          Christoph

                          1 Reply Last reply
                          0
                          • M Mediacj

                            Interesting workaround!

                            Could you please share your sketch?

                            H Offline
                            H Offline
                            hyla
                            wrote on last edited by
                            #13

                            @Mediacj

                            You guessed it:

                            pulseCount = ((1912810 * PULSE_FACTOR / 10) + 5) / 10; graceful();
                            You don't use the number 1912810 of course: that's just my kWh at the time I started, MULTIPLYED BY 100!

                            Christoph

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              Mediacj
                              wrote on last edited by
                              #14

                              Thanks for sharing!!

                              Yes it would be better to have a stable software solution but your solution is good also and even safer when there is a power failure!

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                Mediacj
                                wrote on last edited by Mediacj
                                #15

                                Gizmocuz has a working sketch example

                                I have successfully used it.

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                11

                                Online

                                11.7k

                                Users

                                11.2k

                                Topics

                                113.0k

                                Posts


                                Copyright 2019 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • MySensors
                                • OpenHardware.io
                                • Categories
                                • Recent
                                • Tags
                                • Popular