Home Assistant mit eigenen Sensoren?

Ich beginne gerade mit Home Assistant am RPi und die "fertigen" Integrationen laufen soweit.
Ich hab jetzt hier aber noch eine Reihe von eigenen Sensoren (AVR und ESPs) die ich gern einbinden will.

Welche Integration ermöglicht mir, HTTP Requests aus dem LAN zu übernehmen?
Also im einfachsten fall

  • Sensor schickt ein POST mit den Parametern an den Home Assistant
  • Sensor schickt ein JSON
  • bzw. hab ich auch einen externen Webserver mit PHP laufen, der die meisten Werte heute schon bekommt, der soll dann auch eine Schnittstelle zu meinem lokalen Home Assistant bekommen

Praktisch wäre auch eine Integration die periodisch Sensoren abfragt / pollt und sich die Daten aus dem JSON rausparsen kann (besonders die AVRs haben fast keinen freien Progmem mehr...)

Keiner meiner selbstgeschriebenen Sensoren hat MQTT oder ESPHome ... und sollten sie auch nicht wirklich bekommen.

(reserviert)

Also für meine Solaranlage bin ich ja den MQTT-Weg gegangen.

Sieht dann so aus:

Das NEP-GW fängt die HTTP-Anfragen des Inverters ab und leitet die an die original Cloud weiter, sowie per MQTT an den Home Assistant.

Du suchst jetzt aber eine REST-Integration oder?

mit Home Assistant ein JSON mittels HTTP von Sensoren abholen:
Ja ich mach jetzt eine "REST" Integration

Einstellungen - Add-ons - "Add-on Store" - File editor installieren
Dann im File editor das File configuration.yaml öffnen und editieren.

Beispiele gibts auf

Und ich hab da jetzt mehrere Varianten ausprobiert, entweder als sensor: oder als rest:
Der Unterschied ist mir noch nicht ganz klar.
Auch nicht wie man mehrere Werte von einem Sensor gruppieren soll,

# Meine Einträge
sensor:
  - platform: rest
    resource: http://ip.jsontest.com
    name: External IP
    value_template: "{{ value_json.ip }}"
    
  - platform: rest
    resource: http://172.18.67.79/json
    name: "79 Laufzeit"
    value_template: "{{ (value_json.ss / 60 / 60) | round(0)}}"
    unit_of_measurement: "h"
    
  - platform: rest
    resource: http://172.18.67.65/json
    name: "65 Laufzeit"
    value_template: "{{ (value_json.ss / 60 / 60) | round(0)}}"
    unit_of_measurement: "h"

rest:   
  - resource: http://172.18.67.113/json
    sensor:
     - name: "113 Laufzeit"
       value_template: "{{ (value_json.ss / 60 / 60) | round(0)}}"
       unit_of_measurement: "h"
     - name: "113 Wasser"
       value_template: "{{ value_json.volumeDay0 }}"
       unit_of_measurement: "l"   
     - name: "113 Kaffee"
       value_template: "{{ value_json.volumeDay1 }}"
       unit_of_measurement: "l"   
     - name: "113 Sonstiges"
       value_template: "{{ value_json.volumeDay2 }}"
       unit_of_measurement: "l"   

  - resource: http://172.18.67.96/ajax
    scan_interval: 300
 #   name: "Arduino UNO"
    sensor:
      - name: "96 Laufzeit"
        value_template: "{{ (value_json.ss / 60 / 60) | round(0)}}"
        unit_of_measurement: "h"
      - name: "96 Temp außen"
        value_template: "{{ value_json.t }}"
        unit_of_measurement: "°C"
      - name: "96 Temp Tief"
        value_template: "{{ value_json.dl }}"
        unit_of_measurement: "°C"
      - name: "96 Temp Höchst"
        value_template: "{{ value_json.dh }}"
        unit_of_measurement: "°C"
      - name: "96 Temp innen"
        value_template: "{{ value_json.t1 }}"
        unit_of_measurement: "°C"
      - name: "96 Druck"
        value_template: "{{ value_json.p }}"
        unit_of_measurement: "hP"
      - name: "96 CO2"
        value_template: "{{ value_json.co }}"

damit bekomm ich zwar alle Werte als Entität, aber ich brauch diese Nummern-Krücke damit ich weis welcher Wert zu welchem meiner Boards gehört:

das kanns noch nicht ganz sein. Obwohl andere Integrationen das eigentlich auch so machen:

Das positive dran: alle Sensoren mit Weboberfläche und FetchAPI/JSON hab ich unmittelbar verfügbar - ich brauch keinen bestehenden AVR/ESP Code verändern.