Adding support for Seneye Aquarium & Pond Sensors (removing the need for a Seneye Web Server)

why would you check parameters in pond (rather than once a month with all-in-one strip test? and why do you need it in HA?
Ph? will you add kilo of soda to your pond to raise Ph 1pp?
Temperature - how many heaters do you need and why? carps and gold fish doesn’t need heating. Ammonia? there shall not be any as ponds are big in volume and there are plenty of bacteria to consume fishes wee, anyway O2 and Ammonia not measured by seney it is just a calculated formula of Temperature over Ph. e.g. O2 is 8.3pp when water is cooler than 24.5C, if it is hot 24.5-25.3 it calculated that O2 is 8.2pp, and if hoter than 25.5 then S. will always show 8.1pp, same with Ammonia
Water level? - how it will work? when your pond is totally dry seney will text you :wink:

Frankly speaking don’t wast any money on monitoring your puddle, it is cheaper to bay 2-3 carps every Spring.

Hi @notovich , thx for replying.
So if i read you good, you wouldnt buy it.
Lol
However, yesterday i just bought a second hand seneye pond, so its too late.
I will place the seneye in my filter…
However still not sure how i will remove the need for the webserver (thats the title in this topic).
The webserver costs a lot. You say you got your setup on ebay for under 50$ , is that the webserver? how?

Can you point me which post i need to follow to get the stuff in HA?
I would want HA so HA can warn me if things are too low/high
Not sure here, how it works:

  1. connect the seneye to the webserver, which uploads to the cloud, and then use the api to get it to HA
  2. or does for example a raspberry pi read the seneye and then post to HA in some way?
  3. or something else

Looking for the cheapest way to get it in ha

@notovich hi
I have the seneye now, can you help me please to get it into HA?

  • I could get a thin client, connected to the seneye but how do i get it into HA then?
    Or
  • I can get a raspberry pi connected to the seneye and then to HA
    Whats the easiest way?
    I could test the pi, in a vm on my windows machine to see if it works

do you get data in https://www.seneye.me ? sort of what is in pic below?
the way you describing I see two issues:
1st - connecting your sensor to network, so data loaded to seneye servers (if your slide is not expired they will send you sms warnings if your parameters above or below set levels; - I’m using SeneyeWebServer, not sure if you plug seneye usb to RasPi will it work, in theory it shall work as if you would plug S.USB to laptop with INTERNET it would upload data to your account in seneye;
2nd - puling data from seneye to HA - this task is not complex I can help you here;

Actually i havent done anything yet.
Before i do, i would like to know which way to go, with a raspberry pi, or a thin client (running 24/24)

@skank - for pond I would not spend money on monitor as it is pointless, monitoring without actions (e.g. your temperature to low/high - what you gona do? or Ph to low - will you add 5KG of Soda to raise it)
But for marine/reef aqua this is must, I have 4 DIY dozers that adds NOPOX, Ph buffer[Soda], Mg, Ca, dKh buffer, heaters, chillers, water top up, lighting - all those depends on monitor parameters, e.g. temperature too hot - lights to 50% power, Chiller on, etc. another example if Ph at 8PM is to low (<8.1) add 10Mill of Soda buffer.

ok back to you, correct path in your case, S.USB to be connected to Internet (SWS, laptop, PC etc.) so data can be uploaded to cloud, and then from API to HA - option 1 in your question.

Hi i want to monitor my pond cause i have fish die, without a reason
Yes monitor ph/ NH and stuff
Also just because i can :stuck_out_tongue:
ok good to know… push to cloud then from cloud to HA

First things first, im looking for a mini pc thats uses the lowest energy to run, but still can connect to the seneye + cloud

look, for 99% of seneye users are happy to monitor from Seneye.me and warnings sent to SMS [as long as you pay new slide every month ($10/each or $120/year), so the cost for you would be not just the S.USB but slides, lets say winter your pond is frozen, will you monitor it? for $120/year you can upgrade filter, or new UV or bunch of fishes. my reef needs monitoring every day.
did you try those cheap water test strips? cost about 5$, but no hassle with connecting to HA/Seneye.

Yes
I want to move away from strips i forget it, readings are not accurate etc etc
So i have my account now, still doubting if i should buy a webserver but it costs so much, will try a thin client

Maybe i’m only gonna monitor 6 months too and not in winter

EDit: i’m about to jump on a nuc to adjust the seneye to…
That way i dont need webserver :stuck_out_tongue:

@notovich
Can you help me now how i get everything from the cloud into HA?

can you send me screen shot of your results from html request?
just run the below link in your browser: https://api.seneye.com/v1/devices/AAAAAAAA?IncludeState=1&user=BBBBBBBBB&pwd=CCCCCC where AAAAAA is your device id (can be found on www.seneye.com 2nd page “maintenance tools”, and CCCCCC - your pasword from seneye.me
you should get similar to this:

Ok got it

perfect, now we can play with crazy stuff.
run nod-red on your HA (it is normally on port 1880 of your HA IP, e.g. 192.168.xxx.xxx:1880, you need following structure:


where:
1st node will trigger push every 30 sec
2nd is http request (the one that you used post ago https://api.seneye.com/v1/devices…)
3rd function that will interpret outcome from API request (for time and date it is a bit complex see 2 on the top)
4th send data to MQTT channel
[please see some posts ago i’ve posted full export code to use in nod-red as input
then you will pick up data from MQTT mosquito and push it to sensor.xxxx - need to modify sensors.yaml in your config.

And then you can do the decoration graphs, displays etc.

easy isn’t it?
to help you out I can do a skype call with you to go together, but be prepared that it will take 1-2 good hours.

Ouch don’t say perfect too soon :frowning:
i dont use node red
You can do it differently?
By script or something? Or by rest?

well, without node-red there will be hundreds of automations, and I’m not ready to go this road, sure in HA everything is possible to implement, but Node-Red is doing everything for you in fast and easy way.
My Node-Red didn’t want to work for me at the beginning, but once i’ve watched some youtube guides, now I can’t imagine life without it. So go ahead fix your node-red then give me a shout.

I managed to get it into HA
In fact, it was quite easy using the rest platform, so if any one wants to test this too, heres my code and sensors

sensor:
- platform: rest
  name: Vijver Seneye
  json_attributes:
    - status
    - exps
  value_template: '{{ value_json.status.disconnected }}'  
  resource: !secret vijver_resource
  username: !secret vijver_user
  password: !secret vijver_paswoord
  scan_interval: 60

template:
  - sensor:
    - name: Vijver Temperatuur
      state: "{{ (state_attr('sensor.vijver_seneye', 'exps').temperature.curr|default(0)) }}"
      availability: "{{ not is_state('sensor.vijver_seneye', 'unavailable') }}"
      attributes:
        trend: "{{ state_attr('sensor.vijver_seneye', 'exps').temperature.trend|default('unknown') }}"
        critical_in: "{{ state_attr('sensor.vijver_seneye', 'exps').temperature.critical_in|default('unknown') }}"
        avg: "{{ state_attr('sensor.vijver_seneye', 'exps').temperature.avg|default('unknown') }}"
        status: "{{ state_attr('sensor.vijver_seneye', 'exps').temperature.status|default('unknown') }}"
        advises: "{{ state_attr('sensor.vijver_seneye', 'exps').temperature.advises|default('unknown') }}"
    - name: Vijver Ph
      state: "{{ (state_attr('sensor.vijver_seneye', 'exps').ph.curr|default(0)) }}"
      availability: "{{ not is_state('sensor.vijver_seneye', 'unavailable') }}"
      attributes:
        trend: "{{ state_attr('sensor.vijver_seneye', 'exps').ph.trend|default('unknown') }}"
        critical_in: "{{ state_attr('sensor.vijver_seneye', 'exps').ph.critical_in|default('unknown') }}"
        avg: "{{ state_attr('sensor.vijver_seneye', 'exps').ph.avg|default('unknown') }}"
        status: "{{ state_attr('sensor.vijver_seneye', 'exps').ph.status|default('unknown') }}"
        advises: "{{ state_attr('sensor.vijver_seneye', 'exps').ph.advises|default('unknown') }}"
    - name: Vijver NH3
      state: "{{ (state_attr('sensor.vijver_seneye', 'exps').nh3.curr|default(0)) }}"
      availability: "{{ not is_state('sensor.vijver_seneye', 'unavailable') }}"
      attributes:
        trend: "{{ state_attr('sensor.vijver_seneye', 'exps').nh3.trend|default('unknown') }}"
        critical_in: "{{ state_attr('sensor.vijver_seneye', 'exps').nh3.critical_in|default('unknown') }}"
        avg: "{{ state_attr('sensor.vijver_seneye', 'exps').nh3.avg|default('unknown') }}"
        status: "{{ state_attr('sensor.vijver_seneye', 'exps').nh3.status|default('unknown') }}"
        advises: "{{ state_attr('sensor.vijver_seneye', 'exps').nh3.advises|default('unknown') }}"
    - name: Vijver Zuurstof
      state: "{{ (state_attr('sensor.vijver_seneye', 'exps').o2.curr|default(0)) }}"
      availability: "{{ not is_state('sensor.vijver_seneye', 'unavailable') }}"
      attributes:
        max_value: "{{ state_attr('sensor.vijver_seneye', 'exps').o2.max_value|default('unknown') }}"
        status: "{{ state_attr('sensor.vijver_seneye', 'exps').o2.status|default('unknown') }}"
        advises: "{{ state_attr('sensor.vijver_seneye', 'exps').o2.advises|default('unknown') }}" 
    - name: Vijver Licht
      state: "{{ (state_attr('sensor.vijver_seneye', 'exps').light.curr|default(0)) }}"
      availability: "{{ not is_state('sensor.vijver_seneye', 'unavailable') }}"
      attributes:
        trend: "{{ state_attr('sensor.vijver_seneye', 'exps').light.trend|default('unknown') }}"
        critical_in: "{{ state_attr('sensor.vijver_seneye', 'exps').light.critical_in|default('unknown') }}"
        avg: "{{ state_attr('sensor.vijver_seneye', 'exps').light.avg|default('unknown') }}"
        status: "{{ state_attr('sensor.vijver_seneye', 'exps').light.status|default('unknown') }}"
        advises: "{{ state_attr('sensor.vijver_seneye', 'exps').light.advises|default('unknown') }}"        

I’m now thinking of how i want it in my dashboard…

One thing though, my slide expires state, shows strange no? you can see in the xml file too

Thats no date?

right, date comes in strange numeric format, but i’ve node-red to interpret that:

  1. pull date from API with Function:
    msg.payload = msg.payload[0].status.slide_expires;
    return msg;
  2. Edit time/date with formater:
  3. use format from now (just show time left from/to now):
    $moment(msg.payload).fromNow()
  4. dump the result to MQTT, so sensor can pick it up from there
    full flow:

    hope it helps.

end result:

Hi,

Hey guys i need some help.
I’m doing something wrong and i am not understanding.

A friend of mine have a Seneye reef and a couple of months i installed a RaspberryPi3 running hassio with the seneye from @mcclown up and running.
Everything was working well untill the card decided to deliver his soul to the creator… .kaput… Old equipment.

I decided to upgrade, and got a small computer (like a nuc), installed Hassio with the integration, but no go.

Homeassistant log

Seneye SUD device

The file tree from custom_components/seneye/
tree

On the manifest i added the version and removed the requirements

Thanks for the help
Regards
Bonifácio

Anyone can help??
How do you guys install this custom component?

regards
Bonifácio