Developing my weather station, Work in Progress



  • Which intervals do you apply for temperature, windspeed, wind direction, light and uv?

    Personally I do not go below the 10 minutes interval just because there are few use cases you need so many data points unless you have critical actions to be executed based on those values and their accuracy. I have also a bunch of zigbee-based xiaomi devices for which the interval cannot be configured and they push new measures every now and then but I'm still fine with it.



  • @user2684
    Would it be possible to enhance the features of the "input widget"?

    At the moment under "allowed values" e.g. ON,OFF" is possible. It would be helpful if a range for numbers could be inserted here. In my case it would prevent inputting wrong numbers for the selection of a sensor controlled by one module.



  • @user2684

    I do have a serious problem with ESP628MQTTMESH. Outgoing everything is OK but incoming the messages are arriving but the callback routine is not triggered anymore. I put an issue in Github, but nowadays reactions take a rather long time.
    So I can not take any control over the weather station via MQTT now.



  • Would it be possible to enhance the features of the "input widget"?

    https://github.com/egeoffrey/egeoffrey-gui/issues/61

    I do have a serious problem with ESP628MQTTMESH.

    This is not related to eGeoffrey right? Just to understand if I can do something or not. Thx



  • @user2684
    The mesh problem has nothing to do with eGeoffrey.
    I am now organising the web page setup.
    I aim to have an overview without having to scroll too much.



  • @user2684

    I fixed the mesh problem. I am now working on controlling the sensors via MQTT by means of eGeoffrey.

    I remark about sensor configuration:
    when "Mqtt service" is chosen and e.g. "actuator" one inserts the topic on tab "configuration".

    When one later on changes the "actuator" to "push" the data on the "configuration" tab are deleted.

    Would be handy if these data would be retained and not deleted.



  • The tsl2561 sensor turns out to be overloaded very fast. That means the reading is 6555 and that is it.

    I ordered a different type the VEML 7700 together with a I2C type UV index sensor the SI1145.



  • Surveying the CPU temperature is a good idea.
    The temperature reading I saw was around 65 degrees centigrade. That could be a little bit high. For that reason I mounted the Raspi in a different casing. The result is worthwhile.

    OtherCasing.jpeg

    The casing of my choice is:

    RPI_CASE_ALU_07F_01.jpg

    I purchased it from "reichelt.de"



  • Using MQTT in two directions, from the sensor module to eGeoffrey and the other way around, turned out to be very simple.

    During development and testing it is handy to control several aspects of each individual sensor.
    The following aspects will be made adjustable from within eGeoffrey:

    • on/off

    • operational data transmission interval

    • test data transmission interval

    • operational/test

    • adjust measurement level

    To send all these parameters from within eGeoffrey a sensor control page is made.
    On this page one widget is used to select the number of the sensor.
    Than five widgets are used to select the aspect or set the value.
    A last widget is used to sent an “acknowledgment” to the module.

    The sensor module receives the MQTT messages which are transmitted by eGeoffrey. As soon as the “ack” is received the data are processed and stored into EEPROM to be used from now on.



  • The idea explained above is working. eGeoffrey sends data to the sensor module and the module sends the requested data in return. That means that with the sensor control page from 12 sensors five aspects can be controlled with eGeoffrey.

    To give you an impression of how that is achieved a little bit more detail is below.

    eGeoffrey sending data

    Topic structure

    onshuis/sensor
    onshuis/status
    onshuis/opsinterval
    onshuis/testinterval
    onshuis/opstest
    onshuis/adjust
    onshuis/ack

    sensors publishing with topic:
    mesh-in/XXXX/onshuis/sensor
    data: integer 0 .. 11

    mesh-in/XXXX/onshuis/status
    data: integer 1 / 0

    mesh-in/XXXX/onshuis/opsinterval
    data: integer 1 .. 60 (minutes)

    mesh-in/XXXX/onshuis/testinterval
    data: integer 1 .. 20 (seconds)
    mesh-in/XXXX/onshuis/opstest
    data: integer 1 / 0

    mesh-in/XXXX/onshuis/adjust
    data: float -5 .. 5

    mesh-in/XXXX/onshuis/ack
    data: integer 1

    widgets:
    onshuis/sensor
    type: input box

    onshuis/status
    type: on/off switch

    onshuis/opsinterval
    type: input box

    onshuis/testinterval
    type: input box

    onshuis/opstest
    type: on/off switch

    onshuis/adjust
    type: slider

    onshuis/ack
    type: on/off switch

    To be sure that the data are received correctly the sensor module sends the data back to eGeoffrey.
    Six widgets are used to display the data received from the module.

    eGeoffrey receiving data

    sensors receiving with topic:
    mesh-out/+/onshuis/sensor
    data: string

    mesh-out/+/onshuis/status
    data: integer 1 / 0

    mesh-out/+/onshuis/opsinterval
    data: integer 1 .. 60 (minutes)

    mesh-out/+/onshuis/testinterval
    data: integer 1 .. 20 (seconds)

    mesh-out/+/onshuis/opstest
    data: integer 1 / 0

    mesh-out/+/onshuis/adjust
    data: float -5 .. 5

    widgets:
    onshuis/sensor
    type: display latest value

    onshuis/status
    type: display on/off status

    onshuis/opsinterval
    type: display latest value

    onshuis/testinterval
    type: display latest value

    onshuis/opstest
    type: display on/off status

    onshuis/adjust
    type: display latest value

    Also it is possible to interrogate a module and retrieve the settings from a sensor.

    eGeoffrey retrieving sensor settings

    Topic structure:

    onshuis/retrieve
    onshuis/ack

    sensors publishing with topic:

    mesh-in/XXXX/onshuis/retrieve
    data: integer 0 .. 11

    mesh-in/XXXX/onshuis/ack
    data: integer 1

    widgets:
    onshuis/retrieve
    type: input box

    onshuis/ack
    type: on/off switch

    eGeoffrey resetting sensor module

    After finishing a test series it is handy to reset the module to the default values with only two actions.

    Topic structure

    onshuis/default
    onshuis/ack

    sensors publishing with topic:

    mesh-in/XXXX/onshuis/default
    data: integer 0 .. 11

    mesh-in/XXXX/onshuis/ack
    data: integer 1

    widgets:
    onshuis/default
    type: input box

    onshuis/ack
    type: on/off switch



  • When one later on changes the "actuator" to "push" the data on the "configuration" tab are deleted.
    Would be handy if these data would be retained and not deleted.

    Understand but when something is saved, I loose previous configuration so bot something easy to implement as for now 😕

    Surveying the CPU temperature is a good idea.

    Very nice chart! 🙂

    The idea explained above is working. eGeoffrey sends data to the sensor module and the module sends the requested data in return. That means that with the sensor control page from 12 sensors five aspects can be controlled with eGeoffrey.

    Good! Just in case you want to share a screenshot of the page you have built once completed, I'd be really curious 🙂



  • Using the same technic it is also possible to turn all sensors on or off and to switch all sensors from test mode into operations mode. Last but not least the possibility to evoke a reboot of a module is added.

    Result

    A sensor module has several sensors.

    Each sensor transmits data with an operational interval. For testing purposes each sensor can transmit data with a test interval. When the quantity measured changes rapidly above a "delta" value extra data is transmitted to catch this kind of rapid strong variations.
    Furthermore the measured value of each sensor can be modified with a positive or negative float value. The aim is to move the curve representing the data of the sensor up and down on the screen.

    The values mentioned above are controlled by eGeoffrey. With eGeoffrey the following aspects of each sensor can be modified:

    • on/off

    • ops/test

    • ops interval

    • test interval

    • delta

    • adjustment value

    When an aspect of a sensor is changed, the value of each aspect is displayed.
    Next to that each sensor can be interrogated to transmit the value of it's aspects.
    All values can be reset to their default values.

    All sensors together of each module can be switched:

    • on/off

    • from ops to test and vice versa

    A module can be rebooted.



  • Some screenshots of the system as it is now:

    1small.jpg

    On this part of the page one can select a sensor and change the values of the aspects. "kies sensor" is used to select a sensor.

    "bevestig bericht" transmits an acknowledgement. On receipt the changes are performed.

    2small.jpg

    "opvragen data" facilitates querying a sensor.
    under "data" the value of all aspects are displayed.

    3small.jpg

    "reset module" enforces resetting the aspects to their default values.
    "totaal" designates the buttons to change settings of all sensors together



  • I like it a lot!



  • Where I have to recreate eGeoffrey for some reasons, I take the opportunity to re-work my documentation to come to a more general approach. I am also going to find out if some ideas which have popped-up along the way to come to a yet more smooth workflow are feasible.

    The documentation will result in a "recipe" for myself to create the weather station in eGeoffrey from scratch.(just in case I would like to change in the future). It will not be a "step-by-step" description. When somebody did follow my "Howto" for a simple working system this recipe will be intelligible enough to come to a working weather station. When my station is operational and I have debugged it I will publish my updated document here.



  • @user2684

    I have some intermediate results which I am already rather satisfied with:

    1.jpg

    This is the weather station control page.

    The first screenshot is the part where data to be adapted are inserted

    I succeeded to change the colour of the text from black into blue. I like blue more because results in a more "pleasant" impression of the image.

    2.jpg

    This the part of the page where the data sent back by the weather station are displayed.

    Here I do like the green colour because the clear signal of it. Only text from numerical values can be forced to green.

    I did not succeed to change the colour of the fields above the rows on a page.

    In general I would like the possibility to change the colour of the presentation of data from black in user selectable colour.

    Furthermore I would like to have "AAN / UIT" in the green field "can/uit" instead of "0" or "1". I would also prefer "OPS / TEST" for the green field "ops/test" but that does not work yet.

    I posted a different remark about that one.



  • @user2684

    I enjoy working with eGeoffrey.

    I made some more adaptations to the display.
    This is the status at the moment for my display windows:

    module.jpg

    With each widget is now a short term to indicate which action is performed with the widget.
    In general in green the feedback off the module on the ordered action is presented.

    By selecting "-1" for the module, the text in the info widget is blanked.

    I like this result already very much!
    Great system!

    Still some "details" to be solved.



  • @user2684

    I think I am getting there!

    Controlling sensors

    1.jpg

    2.jpg

    Controlling modules

    3.jpg

    I think only a few enhancements are left.
    The first of which is the translation from "1" and "0" to other values.
    The second one would be an overview of the possible colours.
    The third one would be to know if it is possible to change the colour of the font of the text of data.



  • Very nice job first of all, in a short time the result is very compelling!

    The first of which is the translation from "1" and "0" to other values.

    Ok let me try to understand better. Is the post processing value not a viable option because you need to use the value somewhere else right? So just a "translation" which should happen in the presentation layer right?

    The second one would be an overview of the possible colours.
    The third one would be to know if it is possible to change the colour of the font of the text of data.

    Here you mean the colour of the row title? or the widget title?



  • @user2684

    Have a look to the row with five green widgets.
    I would like to have the "1" being presented as "ops" and the "0" as "test".
    I solved the issue for the time being with the explanatory text in the widget.

    Furthermore the only black text I could not change until now are the ones you see on the print screen.

    If there is a way for the user to change the colour of the headings of the rows on a page also it would be the cherry on the cake and finish the lay-out.


Log in to reply