Prezentování údajů z čidel na TMEP a openSenseMap

Ucelené projekty, návody a postupy.
Odpovědět
kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Prezentování údajů z čidel na TMEP a openSenseMap

Příspěvek od kiklhorn »

Návod jak prezentovat údaje již přítomné v HA na přehledové mapy.

Zajímavý může být třeba monitoring venkovní prašnosti nebo teplot a dalších hodnot.

Myslel jsem že se mi povede publikovat i na https://sensor.community/cz/, kde jsem ale nenašel popis rozhraní. Uvítám radu.

Takže zatím popíšu dva mapové weby přátelské k vlastním čidlům:
Samozřejmě nemusíte použít oba...

TMEP:
- zdarma tři čidla, každé může obsahovat až tři měřené veličiny
- v češtině, rychlé, autor reaguje téměř obratem.
hodnotyCidlaTmep.jpg
- jedno čidlo = jedna domena.tmep.cz nebo jednadomena.tmep.eu pro zobrazení vlastních údajů, a další bla-bla.tmep.cz pro nahrávání údajů

https://tmep.cz/?page=o-sluzbe
https://tmep.cz/mapa/?id_mapa=1
https://tmep.cz/mapa/?id_mapa=3

openSenseMap:
- senseBox obsahuje čidla, počet senseBoxů ani čidel na jeden senseBox pravděpodobně není omezen
- pro HA přidáme nový senseBox a jako typ hardware vybereme "Manual configuration"
- "phenomenon" je volný název měřené veličiny, doporučuji použít https://opensensemap.org/filter kde se nechá filtrovat dle "phenomenon" pole a po jeho zvolení uvidíte kolikrát je daný název použit. Asi je vhodné vybrat nějaký s pokud možno co nejvíce použitími.
sensorsOpnSense.jpg
https://opensensemap.org/
https://opensensemap.org/filter
https://api.opensensemap.org/
https://opensensemap.org/account

SenseBox ID najdeme v hlavičce vygenerovaného arduino skriptu
ID jednotlivých senzorů najdeme buď na stránce sensorů, nebo také v hlavičce vygenerovaného arduino skriptu
autorizační přístupový token najdeme na záložce security - doporučuji zapnout


Podstatné věci k webům jsou na obrázcích, korespondují s kódem
Teď strana HA:

v secrets.yaml

Kód: Vybrat vše

tmep_dom1: domena-bla-bla-pro-zasilani.tmep.cz

opensenseauth: 6436123131_proste_dlouhe_cislo_z_security
opensensemapurl: "https://api.opensensemap.org/boxes/SenseBOXidZhlavickyArduinoSkriptu/data"
opensensetempid: cisloIDsenzoru1
opensensepm10id: cisloIDsenzoru2
opensensepm2_5id: cisloIDsenzoru3
V configuration.yaml

Kód: Vybrat vše

input_text:
  tmep_dom1:
    initial: !secret tmep_dom1
    mode: password
  opensensetempid:
    initial: !secret opensensetempid
    mode: password
  opensensepm10id:
    initial: !secret opensensepm10id
    mode: password
  opensensepm2_5id:
    initial: !secret opensensepm2_5id
    mode: password

rest_command:
  send_tmep_oudoor:
    #Pozor, nasledujici multiline konstrukce přidává (namísto prostého ignorování \n) mezeru (reprezentována jako + v url) i když by neměla přidávat nic. TMEP to skousne i tak.
    url: >-
      http://{{states("input_text.tmep_dom1")}}/?
      out_temp={{ states("sensor.loznice_thp_venkovni_temperature")}}&
      pm2_5={{ states("sensor.outdoor_sps30_pm_2_5um_weight_concentration")}}&
      pm10={{ states("sensor.outdoor_sps30_pm_10um_weight_concentration")}}
  send_opensense_data:
    # url: "https://api.opensensemap.org/boxes/MOJEsenseBoxId/data"
    url: !secret opensensemapurl
    method: POST
    headers:
      authorization: !secret opensenseauth
    # payload: '{"{{states("input_text.opensensetempid")}}":"{{ states("sensor.loznice_thp_venkovni_temperature") }}","{{states("input_text.opensensepm10id")}}":"{{ states("sensor.outdoor_sps30_pm_10um_weight_concentration") }}","{{states("input_text.opensensepm2_5id")}}":"{{ states("sensor.outdoor_sps30_pm_2_5um_weight_concentration") }}"}'
    payload: >-
      {
        "{{states("input_text.opensensetempid")}}":"{{ states("sensor.loznice_thp_venkovni_temperature") }}",
        "{{states("input_text.opensensepm10id")}}":"{{ states("sensor.outdoor_sps30_pm_10um_weight_concentration") }}",
        "{{states("input_text.opensensepm2_5id")}}":"{{ states("sensor.outdoor_sps30_pm_2_5um_weight_concentration") }}"
      }
    content_type: "application/json; charset=utf-8"
    verify_ssl: true
[spoiler=poznámky ke kódu configuration.yaml kliknutím na očičko ->]Snažím se všechny citlivé údaje nechat v secrets.yaml
Pro jejich použití jen jako část hodnoty je potřebuji nějak přetransformovat. Pro to použiji textového pomocníka v modu password, takže ani v uživatelském rozhraní se jeho hodnota nezobrazuje.
Pokud nechcete citlivé údaje v configuration.yaml skrývat tak klidně vynechejte celý blok "input_text"
a namísto konstrukce

Kód: Vybrat vše

"{{states("input_text.opensensetempid")}}":"{{ states("sensor.loznice_thp_venkovni_temperature") }}",
použijte všude přímý zápis

Kód: Vybrat vše

"PrimoNapsaneIDsenzoru":"{{ states("sensor.loznice_thp_venkovni_temperature") }}",
[/spoiler]
názvy vlastních senzorů nejlépe zjistíte ve "vývojové nástroje" - stavy

[spoiler=Po úpravě configuration.yaml je potřeba restart]
restart.jpg
[/spoiler]

Po restartu stačí přidat jednoduchou automatizaci

Kód: Vybrat vše

alias: TMEPaOpenSenseMap
description: ""
trigger:
  - platform: time_pattern
    minutes: /1
condition: []
action:
  - service: rest_command.send_tmep_oudoor
    data: {}
  - service: rest_command.send_opensense_data
    data: {}
mode: single
nebo ji naklikat:
automatizace.jpg

----------------------------------------------

TMEP i openSenseMap se nechá použít i naopak.
Tedy jako zdroj dat pro HA
https://wiki.tmep.cz/doku.php?id=home_a ... at_z_tmepu
https://www.home-assistant.io/integrati ... nsensemap/
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Re: Prezentování údajů z čidel na TMEP a openSenseMap

Příspěvek od kiklhorn »

Takže jsem zprovoznil publikování dat i na sensor.community

Přidání nového senzoru na https://devices.sensor.community/
Typ HW Raspi, ID: si zjistíme

Z terminálu

Kód: Vybrat vše

grep -i serial /proc/cpuinfo 
V configuration yaml doplnit dvě volání pro odesílání dat. (A periodicky je volat z automatizace - viz předchozí příspěvek)

Kód: Vybrat vše

  send_sensor_community_pm:
    url: https://api.sensor.community/v1/push-sensor-data/
    method: POST
    headers:
      X-PIN: 1
      X-Sensor: raspi-SerioveCisloZpredchozihoKroku
      cache-control: no-cache
    payload: '{"software_version":"HA-2022-KIK","sensordatavalues":[{"value_type":"P1","value":"{{states("sensor.outdoor_sps30_pm_10um_weight_concentration")}}"},{"value_type":"P2","value":"{{states("sensor.outdoor_sps30_pm_2_5um_weight_concentration")}}"}]}'
    content_type: "application/json; charset=utf-8"
  send_sensor_community_thp:
    url: https://api.sensor.community/v1/push-sensor-data/
    method: POST
    headers:
      X-PIN: 11
      X-Sensor: raspi-SerioveCisloZpredchozihoKroku
      cache-control: no-cache
    payload: '{"software_version":"HA-2022-KIK","sensordatavalues":[{"value_type":"temperature","value":"{{states("sensor.loznice_thp_venkovni_temperature")}}"},{"value_type":"humidity","value":"{{states("sensor.loznice_thp_venkovni_humidity")}}"},{"value_type":"pressure","value":"{{states("sensor.loznice_thp_venkovni_pressure")|float(0)*100}}"}]}'
    content_type:
      "application/json; charset=utf-8"
[spoiler]První otázka - kde vzít ID aby se netlouklo se senzory někoho jiného?
vycházím z https://learn.pimoroni.com/article/envi ... ty-station
resp. https://github.com/pimoroni/enviroplus-python
kde je jako ID použito sériové číslo procesoru
pokud HA běží na jiném HW než Raspberry tak sériové číslo nemusí existovat.
Typy senzorů a datapointy: https://github.com/opendata-stuttgart/d ... ettings.py
SPS30 je sedmatřicátý senzor, datapoint 1 (X-PIN: 1)
BME280 je sedmnáctý senzor, datapoint 11 (X-PIN 11), pozor pressure v Pa, abs. hodnota, na hl. moře přepočítá web
což budou údaje nutné pro sestavení publikovaných dat, teď potřebuji najít jak má vypadat struktura datapointu
příklad pro některé je zde: https://github.com/opendata-stuttgart/meta/wiki/EN-APIs

každý datapoint se posílá zvlášť?
https://github.com/pimoroni/enviroplus- ... ftdaten.py
[/spoiler]
Typy senzorů a datapointy: (X-PIN) https://github.com/opendata-stuttgart/d ... ettings.py
value_types: https://github.com/opendata-stuttgart/d ... l/views.py
software_version: Libovolný vlastní název.

Pravděpodobně se dá použít i jiný formát publikování přes API, s využitím čísel senzorů. Tuto možnost začnu zkoumat až budu potřebovat publikovat třeba radiaci. Ale samozřejmě uvítám pokud to třeba ze zdrojáků na githubu vytáhne někdo jiný. ;)
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

Odpovědět

Zpět na „Komplexní projekty“