tasmota - mosquitto - telegraf - InfluxDB - Grafana   06.11.2022   

 

Im Folgenden wird der E-Zähler Iskra MT 175 (des Netzversorgers) im Keller über seine Infrarotschnittstelle mit dem Adapter Hichi lR wifi

ausgelesen und mit Hilfe von Tasmota und MQTT über einen WiFi-AP in das häusliche WLAN eingespeist.
Das MQTT-topic lautet  Keller / E_Verbrauch / SENSOR
Der MQTT-Broker mosquitto auf dem Windows-PC empfängt die Daten und gibt sie an den Agent Telegraf weiter.
Der Agent Telegraf speist mit diesen Daten den bucket "Stromverbrauch" in der Datenbank InfluxDB.
Telegraf benutzt ein an mosquitto angepasstes Input-Plugin und ein an InfluxDB angepasstes Output-Plugin.

Der Visualisierer Grafana stellt die Daten in einem Graph dar.


*********************************************************************************************************************
Befehlsliste

InfluxDB-Web-UI:    https://docs.influxdata.com/influxdb/v2.0/get-started/

 

PowerShell:
cd "C:\Program Files\InfluxData\influxdb"
./influxd
--reporting-disabled                  (siehe reporting-disabled)                  

 

start-InfluxDB.bat  (muss sich auf C:\ befinden)

@echo off

cd C:\Programme\InfluxData\influxdb\

influxd

 

Firefox:

localhost:8086  ruedi / testruedi

 

start CLI

cd "C:\Program Files\InfluxData\influxd"

./influx

 

Der Agent "telegraf" wird "von Hand" gestartet:

cd "C:\Program Files\telegraf"

Telegraf-Stromverbrauch:
./telegraf --config http://localhost:8086/api/v2/telegrafs/
0a38e4873d8a0000    (dieser Befehl stammt aus dem InfluxDB-Web-UI )

Telegraf-Solar-PV-AC:

./telegraf --config http://localhost:8086/api/v2/telegrafs/0a39d0d358c32000

 

Grafana
localhost:3000  admin/admin   skip (submit) 

 

*********************************************************************************************************************

Installation  

Tasmota  

MQTT-Broker mosquitto 

MQTT-Explorer
Was sendet der Broker ?

Install InfluxDB-Daemon
Install influx CLI
Telegraf

 

Setup

Start InfluxDB Web-UI
API-Token
Setup influxCLI
INFLUX_TOKEN
CLI-list-Befehle
reporting-disabled                 

Telegraf Konfigurierung
Telegraf as a Service
Entfernen eines Dienstes

InfluxDB - neuer bucket

 

 

Install Grafana

Graph in Grafana

Grafana Panel Einstellungen

 

tasmota-WiFi  konfigurieren

TASMOTA Script

OBIS-Codierung der Anzeigewerte

ISKRA MT175  Pin-Eingabe

Portfreigabe in Firewall

*********************************************************************************************************************

 

Der Zähler-Adapter mit Tasmota               https://tasmota.github.io/docs/

 

Der E-Zähler Iskra MT 175 (des Netzversorgers) im Keller verfügt über eine Infrarot-Schnittstelle.
Diese wird von einem Infrarot-Adapter Hichi lR wifi ausgelesen.

Der Adapter Hichi lR wifi enthält ein ESP8266 ESP-01S WLAN WiFi Modul  das mit der Firmware "Tasmota" geflasht ist.
(Wie man das Modul flasht, wird in https://www.youtube.com/watch?v=s6qQs4FN9B0 sehr gut beschrieben)

Nach Anschluss der 5V-Versorgungsspannung über Mini-USB spannt der Adapter ein WiFi auf, über das man den Adapter konfigurieren kann:
(Achtung: Kein automatisches Update machen, ansonsten  verliert man die Script Konsole)
Eingabe der Zugangsdaten zum Haus-WLAN.
Jetzt kann der Adapter über das Haus-WLAN angesprochen werden:
à Konfigurationsmenu:     à  Configuration / Configure Module à  Generic(0)   

                                                                                                                                                                         Save nicht vergessen!

Das Gerät weiß jetzt noch nicht, auf welchem E-Zähler es sitzt bzw., wie es den jeweiligen E-Zähler auslesen soll.
Dazu braucht es ein Script.
Das zum Zähler passende Script findet man unter https://tasmota.github.io/docs/Smart-Meter-Interface/#iskra-mt-174-obis

Im vorliegenden Fall das Script für den Iskra MT 175 (SML) 


Das passende Script wird im Main-Menu unter Consoles / Edit Script mit copy&paste eingefügt:
  Script enable und Save nicht vergessen!

 

Das Main-Menu sollte nun die Zählerdaten anzeigen:
  Der Iskra MT 175 gibt die Summe P (nicht die einzelnen Phasen L1, L2, L3) aus.

 

Achtung Falle: Eventuell gibt der Zähler seine Daten über die Infrarotschnittstelle nur aus, wenn er vorher mit einer PIN gefüttert wurde.
Die PIN erhält man vom Energieversorger per Post.
Beantragung auf der der Webseite des Energieversorgers.

 

Der Tasmota im Keller ist jetzt auf xx.xx.xx.126 erreichbar:

 

Mit dem Web-UI der Tasmota-Firmware kann man zwar die aktuellen Zählerwerte mit dem Browser betrachten.
Aber für die weitere Verarbeitung bzw. Sammlung und grafische Darstellung dieser Daten muss es möglich sein, auf die Daten von außen bzw. über das WLAN zuzugreifen.

Dafür wird die Tasmota-Firmware des  Hichi lR wifi so konfiguriert, dass dieser seine Daten per MQTT ins Netz stellt.

(Eine wirklich gute MQTT-Linksammlung gibt es unter https://www.msxfaq.de/sonst/iot/mqtt.htm)


Über Configuration / Configure MQTT werden folgende Parameter eingestellt:

 

Host:               IP des Gerätes, auf dem  der Broker (hier mosquitto ) läuft.
                                   hier: alle beteiligten Programme laufen auf dem Windows-PC "Asus-Mini"
                                   Die hier benutzte IP ist daher die, unter der der "Asus-Mini" im WLAN angesprochen wird.
Port:1883       Der MQTT-Broker mosquitto lauscht standardmäßig auf Port 1883.
                                   Achtung: Die Firewall des Host-PC (hier "Asus-Mini") muss port 1883 für eingehende tcp-Verbindungen öffnen !!!
Client:
             Client-ID der Tasmota-Installation bzw. des Tasmota-MQTT-Client (Teil der geflashten Firmware)
                                  
Der Tasmota-MQTT-Client loggt beim MQTT-Broker mosquitto ein.
                                  
Frei wählbar, z.B. hier z.B. E_Zaehler
User:               User-Name zum Einloggen beim MQTT-Broker, z.B. e_zaehler
                                  
Fürs Erste soll das Ganze ohne user/passwort funktionieren à Passwort NICHT aktiviert
                                   Der Broker mosquitto muss so konfiguriert werden (!), dass er keine Login-Daten erwartet, siehe später.
Password:
       Optional, muss nicht aktiviert werden
                                   Benutzer und Passwort sind grundsätzlich optional, also nur nötig, wenn der Broker Login-Daten erwartet.
Topic:             Frei wählbar, z.B. hier E_Verbrauch
                                   Es ist sinnvoll, sich mit den Begrifflichkeiten von MQTT vertraut zu machen, insbesondere "Topic"
                                   Tasmota verwendet das Konzept von Präfixes und gerätespezifischen Topics.
                                   Standardmäßig lautet das Topic Tasmota_<6 Stellen der MAC-Adresse>  , z.B. hier tasmota_8EC539                    

Full Topic:     hier: Keller/Topic, siehe später.
                       
                        nicht vergessen: SAVE

 

Tasmota sendet also MQTT-messages an den MQTT-Broker "mosquitto" .

Der ist auf dem Asus-Mini-PC installiert und wird daher vom Tasmota mit xx.xx.xx.69 adressiert.

*********************************************************************************************************************

MQTT-Broker mosquitto 

 

Der MQTT-Broker "mosquitto" empfängt messages bzw. Daten von verschiedenen Quellen, z.B. hier vom Tasmota-E-Zähler.
Und sendet diese (auf Anforderung) an die Datenbank influxDB bzw. an einen "bucket" in dieser Datenbank.

Der MQTT-Broker wird auf einem beliebigen Host (PC) im Netz installiert, hier auf dem Windows-Asus-Mini-PC.
Er lauscht auf Port 1883.

Der Asus-Mini ist unter xx.xx.xx.69 erreichbar.
Also ist der MQTT-Broker "mosquitto" unter xx.xx.xx.69:1883 erreichbar.
Vom Asus-Mini selbst aus also unter  127.0.0.1:1883 oder auch unter localhost:1883 .


mosquitto-2.0.15-install-windows-x64.exe

        
                                                                       mosquito läuft als Service im Hintergrund

                                         



 

Die Datei  C:\Program Files\mosquitto\mosquitto.conf   MUSS  konfiguriert werden:
(Achtung: nicht (!) versehentlich die Endung .conf  mit dem Editor verbinden)

 

Falsche Dateiverknüpfungen per Registry korrigieren
Schlüssel "HKEY_CURRENT_USER\ Software\Microsoft\Windows\ CurrentVersion\Explorer\FileExts"
Schlüssels der betreffenden Datei-Endung (zum Beispiel ".dat") löschen.
Es gehen dabei nur die Einstellungen des aktiven Benutzers verloren, so daß der Typ wieder unzugeordnet ist.


# listener port-number [ip address/host name/unix socket path]

listener 1883

 

# Defaults to false, unless there are no listeners defined in the configuration

# file, in which case it is set to true, but connections are only allowed from

# the local machine.

allow_anonymous true

 

Die Firewall muss Port 1883 frei geben:   
   siehe Firewall

Neustart !

 

Damit empfängt mosquitto die Daten vom Tasmota.
Und gibt sie aus, wenn ein Client sie per "subscribe" anfordert.

Spätestens hier ist es sinnvoll (aber nicht unbedingt nötig), sich mit MQTT vertraut zu machen.

 

Gut zu wissen:

mosquitto gibt die Daten via http im json-Format aus.

mosquitto kann in der Konsole gestartet werden mit
cd C:\Program Files\mosquitto
./mosquitto

oder
./mosquitto -p 1883               
damit er auf port 1883 lauscht

oder
./mosquitto -h                        
für Anzeige von help

oder
mosquitto -v

Wenn allerdings mosquitto im Hintergrung als Dienst läuft, führt ein zusätzlicher Start von Hand zu einer Fehlermeldung:

 

127.0.0.1:1883  bzw. localhost:1883  darf nicht gleichzeitig 2 mal benutzt werden.

127.0.0.1 ist die IP des Local_Host.

*********************************************************************************************************************

MQTT-Explorer

Um zu überprüfen, ob und was der MQTT-Broker anzubieten hat, ist der MQTT-Explorer ein ausgzeichnetes Werkzeug.

Download: https://mqtt-explorer.com/   à  Installation (hier auf dem Asus-Mini-PC)

 

Der MQTT-Explorer  loggt beim localhost  127.0.0.1 Port 1883 ein:
(genauer bzw. allgemein: bei dem Gerät, auf dem der Broker läuft !)

MQTT-Explorer-Setup-0.4.0-beta1.exe

 

Der MQTT-Explorer (auf MiiX-Notebook UND auf Mini-PC) adressiert den Broker mosquitto (auf dem MiiX-Notebook) mit xx.xx.xx.69 :

  

 

Das Verbindungsprofil bekommt den Namen "mosquitto" und wird mit Ziel-IP und Ziel-Port definiert.

Die Logindaten Username / Password sind nicht nötig, wenn in  C:\Program Files\mosquitto\mosquitto.conf  die Zeile  allow_anonymous true aktiviert ist.

(Das Verbindungsprofil "mqtt.eclipse.org" ist per default vorhanden).

 

mosquitto lauscht auf Port 1883. Daher muss die Windows-Firewall für diesen Port geöffnet werden:

 

Neustart !

 

Ansonsten gibt es noch KEINE neuen Firewall-Regeln (außer MQTT, s.o.)

 

CONNECT stellt die Verbindung zum MQTT-Broker mosquitto her:


und zeigt den gesamten Verkehr auf dem Broker an.
Den Tasmota allerdings nur, wenn dieser mit dem Broker via IP des Host verbunden ist.

(Host des mosquitto  ist hier der Asus-Mini-PC)

Dazu muss in der Firewall der mosquitto-Host port 1833 geöffnet sein.

Wichtig ist im vorliegenden Beispiel die Anzeige des topic  Keller/E_Verbrauch/SENSOR

Keller war in der Tasmota-Konfiguration der Präfix, E_Verbrauch war dort das topic.

(Erklärung des Begriffs "topic" siehe https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/ )


*********************************************************************************************************************

Was sendet der Broker ?

  1. Tasmota sendet  MQTT  (ESP8266 D1mini loggt mit xx.xx.xx.126 via 2.4G_ WiFi _B in PDS-LAN ein

  2. mosquitto MQTT-Broker  (läuft automatisch im Hintergrund als Service)
    empfängt und sendet
    Was der Broker  sendet, kann mit dem MQTT-Explorer überprüft werden:

    tasmota à  discovery  à  MAC  à sensors=
    {"sn":{"Time":"2022-09-25T08:34:03","MT175":{"E_in":9945.4 , "P":75.00 , "Server_ID":"xxxxxxxxxxxxxxxxxxxx"}},"ver":1} 

      Keller/E_Verbrauch/SENSOR=
     {"Time":"2022-10-09T09:22:13","MT175":{"Zählerstand ":10003.2,"P-aktuell":385.00,"Server_ID":" xxxxxxxxxxxxxxxxxxxx "}}

*********************************************************************************************************************

Install InfluxDB-Daemon

 

Der InfluxDB-Daemon ist die "eigentliche" Datenbank, die via Kommandozeile gestartet und dann über das Web-UI bedient wird.

 

Download influxdb  à  https://portal.influxdata.com/downloads/

                                       https://docs.influxdata.com/influxdb/v2.4/install/?t=Windows

Auswahl Windows

Download and install InfluxDB v2.4

> Expand-Archive .\influxdb2-2.4.0-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\'
> mv 'C:\Program Files\InfluxData\influxdb2-2.4.0-windows-amd64' 'C:\Program Files\InfluxData\influxdb'

 

In Powershell, navigate into C:\Program Files\InfluxData\influxdb and start InfluxDB by running the influxd daemon:

> cd -Path 'C:\Program Files\InfluxData\influxdb'
> ./influxd

When starting InfluxDB for the first time, Windows Defender will appear with the following message:
Windows Defender Firewall has blocked some features of this app.

  1. Select Private networks, such as my home or work network.
  2. Click Allow access.

Es gibt noch KEINE neuen Firewall-Regeln (außer MQTT, s.o.)

Start InfluxDB-Daemon via PowerShell:
cd "C:\Program Files\InfluxData\influxdb"            ( "  " wegen Program Files - Programme )
./influxd                                            
( "./" (!) wegen PowerShell )

 
   

à Firewall: 4 neue eingehende Regeln influxD
    
C:\Program Files\InfluxData\influxdb\influxd.exe  TCP  alle ports  öffentlich     rot
    
C:\Program Files\InfluxData\influxdb\influxd.exe  TCP  alle ports   privat grün
    
C:\Program Files\InfluxData\influxdb\influxd.exe  UDP  alle ports  öffentlich rot
    
C:\Program Files\InfluxData\influxdb\influxd.exe  UDP  alle ports  privat grün



Nach einem Neustart des PC sieht dieser Bildschirm etwas länger aus:
Nach
2022-11-02T05:51:16.767106Z     info    Listening       {"log_id": "0duj8q60000", "service": "tcp-listener", "transport": "http", "addr": ":8086", "port": 8086}
werden etliche weitere "infos" gesendet:


*********************************************************************************************************************
Install influx CLI

Über das Influx Command Line Interface (oder über das Web-UI) wird InfluxDB bedient bzw. gesteuert.

 

The InfluxDB server (influxd) and the influx CLI are packaged and versioned separately.
For information about installing the
influx CLI, see Install and use the influx CLI.

https://docs.influxdata.com/influxdb/v2.4/tools/influx-cli/?t=Windows


Download the
influx CLI package.

> Expand-Archive .\influxdb2-client-2.4.0-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\'
> mv 'C:\Program Files\InfluxData\influxdb2-client-2.4.0-windows-amd64' 'C:\Program Files\InfluxData\influx'

 

When using the influx CLI for the first time, Windows Defender displays the following message:
Windows Defender Firewall has blocked some features of this app.
To grant the
influx CLI the required access, do the following:

  1. Select Private networks, such as my home or work network.
  2. Click Allow access

Start CLI mit Admin-PowerShell:
cd "C:\Program Files\InfluxData\influxd\"
./influx

Die Firewall meldet sich NICHT !
Keine weiteren Firewall-Regeln.

*********************************************************************************************************************

Telegraf            https://www.influxdata.com/time-series-platform/telegraf/

                   

 

Download:  https://portal.influxdata.com/downloads/



wget https://dl.influxdata.com/telegraf/releases/telegraf-1.24.2_windows_amd64.zip -UseBasicParsing -OutFile telegraf-1.24.2_windows_amd64.zip
Expand-Archive .\telegraf-1.24.2_windows_amd64.zip -DestinationPath 'C:\Program Files\InfluxData\telegraf'

 

Installiert (d.h. entpackt) wird (hier) telegraf-1.24.1_windows_amd64 nach C:\Program Files\telegraf\telegraf.exe

Mit dabei ist C:\Program Files\telegraf\telegraf.conf

telegraf.conf ist eine riesige Text-Datei, die jede Menge Konfigurations-Plugins enthält.

Telegraf wird über das influxDB-Web-UI konfiguriert, siehe  Telegraf Konfigurierung


*********************************************************************************************************************

*********************************************************************************************************************

*********************************************************************************************************************

 

Setup

 

 

Start InfluxDB Web-UI via Firefox
(vorher muss via PowerShell der InfluxDB-Daemon gestartet sein, siehe Start InfluxDB-Daemon : Jetzt lauscht der "influx-Dämon" auf Port 8086)

Erst danach (!) kann das Influx-Web-UI im Browser mit   127.0.0.1:8086   oder  localhost:8086  geöffnet werden.

Erststart mit  admin / admin, evtl. skip submit

 

Beim Erststart wird für das Web-UI ein Benutzerkonto mit user / Password sowie Organisation angelegt.
(hier Benutzer "ruedi" und Organisation "shag").


Passwort: testruedi

C:\Users\MiiX\.influxdbv2 enthält nur
Ordner engine
influxd.bolt
influxd.sqlite

also KEIN configs !


4 Links sind direkt erreichbar:
https://docs.influxdata.com/influxdb/latest/query-data/get-started/
https://docs.influxdata.com/influxdb/latest/query-data/execute-queries/data-explorer/
https://docs.influxdata.com/influxdb/latest/visualize-data/dashboards/
https://docs.influxdata.com/influxdb/latest/process-data/get-started/

*********************************************************************************************************************API-Token   (For instructions on how to create API tokens, see Create a token)

Die Seite API TOKENS zeigt bereits nach dem Start des Web-UI  bzw. den Einträgen in "Setup Initial User"
das Token "ruedi's Token" mit allen Rechten an:

LMC auf ruedi'sToken:

ruedi's Token ist allaccess :
1Ip363gshd97oCXn1o5u9FimWVrZXpbQp084Mz0r-Jo1cuOgt4GFtZmrXpjGzXCqgYB8IhOLsZwnxWaZXjY1TQ==

*********************************************************************************************************************Setup influxCLI

To avoid having to pass your InfluxDB host, API token, and organization with each command, store them in an influx CLI configuration.

influx commands that require these credentials automatically retrieve these credentials from the active config.

Use the influx config create command

 to create an influx CLI config and set it as active:
influx config create --config-name <config-name> \
  --host-url http://localhost:8086 \
  --org <your-org> \
  --token <your-auth-token> \
  --active

ruedi's Token (allaccess !) wird dem Web-UI entnommen (s.o.):

Start CLI mit admin-PowerShell:
cd "C:\Program Files\InfluxData\influxd"

./influx config create --config-name ruediall --host-url http://localhost:8086 --org shag --token 1Ip363gshd97oCXn1o5u9FimWVrZXpbQp084Mz0r-Jo1cuOgt4GFtZmrXpjGzXCqgYB8IhOLsZwnxWaZXjY1TQ== --active

(ruediall = willkürlich vergebener Name)

(statt localhost:1883 kann auch 127.0.0.1:1883 verwendet werden)

Diese Aktion ergibt die Datei C:\Users\Atze\.influxdbv2\configs  mit dem Inhalt:
[ruediall]
url = http://localhost:8086
token = "
1Ip363gshd97oCXn1o5u9FimWVrZXpbQp084Mz0r-Jo1cuOgt4GFtZmrXpjGzXCqgYB8IhOLsZwnxWaZXjY1TQ=="
org = "shag"
active = true
#
# [eu-central]
#   url = https://eu-central-1-1.aws.cloud2.influxdata.com
#   token = "XXX"
#   org = ""
#
# [us-central]
#   url = https://us-central1-1.gcp.cloud2.influxdata.com
#   token = "XXX"
#   org = ""
#
# [us-west]
#   url = https://us-west-2-1.aws.cloud2.influxdata.com
#   token = "XXX"
#   org = ""

Die CLI-Befehle wie z.B.
./influx user list

./influx org list
funktionieren noch NICHT:

Es fehlt der Zugangs-Token "ruedi's allaccess"

Damit das Command Line Interface CLI auf InfluxDB zugreifen kann, muss die Systemvariable "INFLUX_TOKEN" mit "ruedi's allaccess" belegt werden:

 


Jetzt ist INFLUX_TOKEN
mit dem Inhalt
1Ip363gshd97oCXn1o5u9FimWVrZXpbQp084Mz0r-Jo1cuOgt4GFtZmrXpjGzXCqgYB8IhOLsZwnxWaZXjY1TQ==
systemweit verfügbar.
INFLUX_TOKEN ist die "Eintrittskarte" für InfluxDB bzw. die Erlaubnis, auf die Datenbank zuzugreifen.

Jetzt funktionieren auch die CLI-list-Befehle (immer mit voran gestelltem ./ ) !
cd "C:\Program Files\InfluxData\influxd"
./influx user list

./influx org list


For more information about managing CLI configurations, see the
influx config documentation.

*********************************************************************************************************************
reporting-disabled

By default, InfluxDB sends telemetry data back to InfluxData.
Die aktuelle Konfigurierung von InfluxDB kann man mit 
http://localhost:8086/api/v2/config  anzeigen:


To opt-out of sending telemetry data back to InfluxData, include the
--reporting-disabled flag when starting influxd.

cd "C:\Program Files\InfluxData\influxdb"
./influxd --reporting-disabled

 

https://docs.influxdata.com/influxdb/v1.8/administration/config/


*********************************************************************************************************************

Telegraf Konfigurierung

Unter Start InfluxDB Web-UI  wurde bereits definiert:
- Username für das Web-UI             
ruedi
- Passwort für das Web-UI               
testruedi
- Gruppe                                            
shag
- bucket                                             
Stromverbrauch

 

(Daten-Sammlungen bzw. -Banken heißen bei Influx/Grafana "bucket" = Korb)

 

Damit der bucket "Stromverbrauch" mit Daten gefüllt werden kann, muss (speziell für diesen bucket) ein Telegraf-Verbindungsprofil zum MQTT-Broker konfiguriert werden:

 

Falls noch nicht geschehen:

Start InfluxDB-Daemon mit PowerShell:
cd "C:\Program Files\InfluxData\influxdb"
./influxd 

Start InfluxDB-Web-UI

localhost:8086
ruedi / testruedi

 

Unter Menu / Telegraf  gibt es noch kein Verbindungsprofil:


Unter Menu / BUCKETS gibt es 3 Buckets: 

 

Für den bucket "Stromverbrauch" wird nun (speziell für diesen bucket) das Telegraf-Verbindungs-Profil "Telegraf-Stromverbrauch" erstellt:

 

a) Input-Plugin laden und konfigurieren

Menu / SOURCES     

In der Such-Zeile wird MQTT eingegeben, das MQTT-Plugin für das telegraf-Verbindungsprofil wird (nach Click auf MQTT) angezeigt:

  à 

Das Plugin "inputs.mqtt_consumer" wird in die Zwischenablage übernommen: Text komplett markieren, ctrl-C

Alle mit # auskommentierten Zeilen wurden hier zwecks besserer Übersicht entfernt, können bleiben, müssen aber nicht.

 

[[inputs.mqtt_consumer]]
  servers = ["tcp://127.0.0.1:1883"]
  topics = [
    "telegraf/host01/cpu",
    "telegraf/+/mem",
    "sensors/#",
  ]
  # username = "telegraf"
  # password = "metricsmetricsmetricsmetrics"
  data_format = "influx"

 

Dieses Plugin muss angepasst werden:
Der Broker "mosquitto" befindet sich auf dem Notebook "MiiX" 
à  servers = ["tcp://xx.xx.xx.65:1883"]
topic ist (hier im Beispiel) Keller/E_Verbrauch/SENSOR

Telegraf soll (vorerst) anonym bei mosquitto einloggen  à username = ""  und   password = ""
Ausgabeformat von mosquitto ist json

 

Das angepasste input-plugin lautet also:

[[inputs.mqtt_consumer]]
  servers = ["tcp://xx.xx.xx.65:1883"]
  topics = [
    " Keller/E_Verbrauch/SENSOR ",
  ]
  username = ""
  password = ""
  data_format = "json"

 

Dieses angepasste Plugin wird (später) in das Verbindungsprofil "Telegraf-Stromverbrauch" kopiert, siehe Einfügen des MQTT-Input.

 

b) Verbindungsprofil "Telegraf-Stromverbrauch" erstellen:

 

Menu TELEGRAF  à  + CREATE CONFIGURATION  à  Auswahl bucket "Stromverbrauch"  à  System
                                                                                                  
                                                                          CONTINUE 

 

Eingabe Name des Profils: Telegraf-Stromverbrauch

Sinnvoll ist (hier) der Profil-Name "Telegraf-Stromverbrauch", weil der output des Profils auf den bucket "Stromverbrauch" zielt.

 

CREATE AND VERIFY  

 

                                                 NICHT FINISH  !!!

                                                 stattdessen scrollen:

                                           NICHT FINISH  !!!

                                           stattdessen Telegraf starten !

überspringen:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Der Befehl
export INFLUX_TOKEN= xxxxxxxxxx........xxxxxxxxx==

ist das Kommando, mit dem via PowerShell eine Umgebungsvariable gesetzt werden soll.

 

Wenn das Feld GENERATE NEW API TOKEN ausgegraut ist, wurde die Umgebungsvariable bereits gesetzt.

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 

Daten aus mosquitto in bucket "Stromverbrauch" schreiben bzw. anzeigen

 

COPY TO CLIPBOARD

à  telegraf --config http://localhost:8086/api/v2/telegrafs/0a38e4873d8a0000   befindet sich jetzt in der Zwischenablage.
Das ist der bucket-spezifische Befehl, mit dem Telegraf speziell für den bucket "Stromverbrauch" gestartet wird.


Telegraf wird in der admin-PowerShell gestartet:

cd "C:\Program Files\telegraf"

./telegraf --config http://localhost:8086/api/v2/telegrafs/0a38e4873d8a0000   (die PowerShell verlangt voran gestelltes  ./ ):

 

 

Jetzt erst: LISTEN FOR DATA

Telegraf hat mit dem für "Stromverbrauch" vergebenen Zugangscode  0a38e4873d8a0000  bei InfluxDB eingeloggt.

 

Und jetzt erst FINISH  !!

 

Jetzt wird das Profil angezeigt:

 

Das neue Verbindungsprofil "Telegraf-Stromverbrauch" erreicht man über Menu / Telegraf:
LMC  (= Linker Maus Click) auf "
Telegraf-Stromverbrauch"

 

Es enthält automatisch etliche Konfigurierungen:

[agent]

  interval = "10s"

  round_interval = true

  metric_batch_size = 1000

  metric_buffer_limit = 10000

  collection_jitter = "0s"

  flush_interval = "10s"

  flush_jitter = "0s"

  precision = ""

  hostname = ""

  omit_hostname = false

 

 

 [[outputs.influxdb_v2]]

  urls = ["http://localhost:8086"]

  token = "$INFLUX_TOKEN"

  organization = "shag"

  bucket = "Stromverbrauch"

  user_agent = "telegraf"

 Gruppe "shag" und Ziel-bucket "Stromverbrauch" wurden automatisch gesetzt.

 

INFLUX_TOKEN ist die "Eintrittskarte" für InfluxDB bzw. die Erlaubnis, in die Datenbank "Stromverbrauch" zu schreiben.
Wenn der Agent Telegraf über
INFLUX_TOKEN verfügt, kann er in " Stromverbrauch" schreiben.
Dafür muss
INFLUX_TOKEN im Output-Plugin des Telegraf-Verbindungsprofils aktiviert sein.
Alle eventuellen weiteren Verbindungsprofile benutzen das o.g. Token, indem sie im Profil
$INFLUX_TOKEN aufrufen.
$INFLUX_TOKEN wurde bereits mit
"ruedi's Token" =  1Ip363gshd97oCXn1o5u9FimWVrZXpbQp084Mz0r-Jo1cuOgt4GFtZmrXpjGzXCqgYB8IhOLsZwnxWaZXjY1TQ==  belegt (siehe oben)
Das $ zeigt an, dass es sich um eine Systemvariable handelt.

 

Automatisch vorhanden sind

[[inputs.cpu]]

  percpu = true

  totalcpu = true

  collect_cpu_time = false

  report_active = false

[[inputs.disk]]

  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

[[inputs.diskio]]

 [[inputs.mem]]

 [[inputs.net]]

 [[inputs.processes]]

 [[inputs.swap]]

 [[inputs.system]]

 

Es fehlt das input-Plugin !

 

Einfügen des MQTT-Input-Plugin:

 

Das plugin " [[inputs.mqtt_consumer]]" muss diesem Verbindungsprofil noch hinzu gefügt werden:
Menu / Telegraf 
à LMC auf  "Telegraf-Stromverbrauch".

Mit copy&paste wird das bereits angepasste input-Plugin (siehe oben) eingefügt:

[[inputs.mqtt_consumer]]

  servers = ["tcp://xx.xx.xx.69:1883"]

  topics = [

    "Keller/E_Verbrauch/SENSOR",

  ]

 username = ""

 password = ""

  data_format = "json"

 

wichtig:

- Adresse des MQTT-Brokers                       hier: xx.xx.xx.69:1883
- das gewünschte topic                                  hier:
Keller/E_Verbrauch/SENSOR

- das Ausgabeformat                                     hier: json   (Das Ausgabeformat des mosquitto ist "json")

müssen angepasst werden!

SAVE CHANGES   !!!


Wichtig ist  data format = "
json". Das ist das Ausgabeformat von mosquitto.

 

Der Agent Telegraf kann nun mit diesem Profil mosquitto und  InfluxDB verbinden.

 

*********************************************************************************************************************

Telegraf as a Service on Windows 11 / Windows 10 


Die Im InfluxDB-Web-UI unter Load Data / telegraf /Asus_Mini_mosquitto verwendete
Konfigurierung (s.o.)
wird 1:1 in die Datei
C:\Program Files\telegraf\telegraf.conf kopiert.

 

a)  Es wird das Telegraf-Verbindungsprofil "Telegraf_Service"  erstellt, das beim automatischen Start benutzt wird:

 

cd "C:\Program Files\InfluxData\influxd"
./influx telegrafs create --name "Telegraf_Service" --description "Telegraf startet automatisch" --file "C:\Program Files\telegraf\telegraf.conf"
 

Ergebnis ist ein neues Telegraf-Verbindungsprofil:

b)  Telegraf als Service:

admin-PowerShell !
cd "C:\Program Files\telegraf"
.\telegraf.exe --service install --config "C:\Program Files\telegraf\telegraf.conf"
 

Der Dienst muss noch gestartet werden: Neustart (wird dabei automatisch gestartet)

*********************************************************************************************************************

Test if the installation works
C:\"Program Files"\telegraf\telegraf.exe --config C:\"Program Files"\telegraf\telegraf.conf --test

Start the service with   C:\"Program Files"\telegraf\telegraf.exe --service start

(nicht nötig wegen Autostart)

 

funktioniert mit bucket "Stromverbrauch", weiterhin einziges Token ist "ruedi's Token":

*********************************************************************************************************************Entfernen eines Dienstes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Hier reicht es, den Schlüssel mit dem Dienstnamen zu löschen. Neustart!

*********************************************************************************************************************

InfluxDB - neuer bucket

 

Die "Zeitreihe" (Datentabelle Zeit à Wert) bzw. "Timeline" bzw. der "bucket" wird mit einem Namen definiert, z.B. "Solar-PV-AC".

Menu / BUCKETS  
à   + CREATE BUCKET

                                        CREATE
Der neue Bucket wird jetzt auf der Seite Load Data / Buckets angezeigt.

 

Es muss nun ein Telegraf-Verbindungsprofil für den bucket "Solar-PV-AC" erstellt werden:

                                                                                                      CONTINUE


                                                                                  CREATE AND VERIFY

 

                                              NICHT FINISH !!!

                                                    scrollen !!!

                                           NICHT FINISH !!!

COPY TO CLIPBOARD:  telegraf --config http://localhost:8086/api/v2/telegrafs/0a3b20e6b772c000

 

Mit diesem Befehl wird in einer neuen Instanz von PowerShell der Agent Telegraf gestartet (mit voran gestelltem ./):

 

cd "C:\Program Files\telegraf"

./telegraf --config http://localhost:8086/api/v2/telegrafs/0a3b20e6b772c000

                                 ... Current platform is not supported   !

 

 

Das angepasste Input-Plugin muss eingefügt werden.
Mit MQTT-Explorer wird das topic ermittelt:

 

 

[[inputs.mqtt_consumer]]

  servers = ["tcp://xx.xx.xx.69:1883"]

  topics = [

    "Dose-1/delock-PV/SENSOR",

  ]

 username = ""

 password = ""

  data_format = "json"

 

 

Das für "Solar-PV-AC" angepasste Input-Plugin wird eingefügt (alle auskommentierten Zeilen wurden entfernt):


Noch zeigt Influx keine Messwerte an: "No Submit"
Grund ist dass Telegraf beim Start noch kein Input-Plugin vorgefunden hat, daher "[inputs.processes] Current platform is not supported" (s.o.)

Telegraf muss noch einmal (mit dem vervollständigten Plugin) via PowerShell gestartet werden:
cd "C:\Program Files\telegraf"

./telegraf --config http://localhost:8086/api/v2/telegrafs/0a3b20e6b772c000

 

à

 

 

 

*********************************************************************************************************************

*********************************************************************************************************************
*********************************************************************************************************************

 

https://grafana.com/docs/grafana/latest/setup-grafana/installation/windows/

https://www.smarthome-tricks.de/grafana/1-3-grafana-installation/   !!!

Install Grafana     

Navigate to Download Grafana  

  1. Select a Grafana version you want to install.
  2. Select an Edition.
  3. Click Windows.

Install with Windows installer (recommended)  

  1. Click Download the installer.   à  grafana-enterprise-9.2.1.windows-amd64.msi
  2. Open and run the installer.

     
                                                                    als Server installiert !

 

Firefox:          localhost:3000   Getting Started.

            user:       admin
            password:   admin

            skip

https://grafana.com/docs/grafana/latest/getting-started/get-started-grafana-influxdb/

 

Add your InfluxDB data source to Grafana

You can have more than one InfluxDB data source defined in Grafana.

Follow the general instructions to add a data source.

Menu Configuration   
à  Data sources à Suche Influx


LMC auf    öffnet Setup-Page:
   
Query Language: 
Flux

Und nach unten gescrollt kann mit  Save&test die Verbindung zu InfluxDB getestet werden.

 

Das Token (unter Organization) ist 
"
ruedi's Token" =  1Ip363gshd97oCXn1o5u9FimWVrZXpbQp084Mz0r-Jo1cuOgt4GFtZmrXpjGzXCqgYB8IhOLsZwnxWaZXjY1TQ==  

 

*********************************************************************************************************************

Graph in Grafana

 

Menu à  Dashboards  à  Tab Browse   à NEW  à  New Dashboard  à  Add a new panel

 

Das Edit-Panel mit dem Graph von Zufallsdaten erscheint:

 

Auswahl "InfluxDB-Flux"

 

Links unten rechts neben A wird in die Zeile "InfluxDB-Flux" das Query-Script eingefügt, das man aus InfluxDB kopiert:


Dazu geht man zunächst in InfluxDB in den Data Explorer von InfluxDB:



SCRIPT EDITOR zeigt das aktuell benutzte Flux-Query.-Script an:

 

from(bucket"Stromverbrauch")

  |> range(start: v.timeRangeStartstopv.timeRangeStop)

  |> filter(fn: (r) => r["_measurement"== "mqtt_consumer")

  |> filter(fn: (r) => r["_field"== "MT175_P-aktuell")

  |> filter(fn: (r) => r["host"== "ASUS-Mini")

  |> filter(fn: (r) => r["topic"== "Keller/E_Verbrauch/SENSOR")

  |> aggregateWindow(every: v.windowPeriodfn: mean, createEmptyfalse)

  |> yield(name"mean")

 

Das wird mit copy&paste in den Panel-Editor von Grafana kopiert:

Auswahl DATA SOURCE: InfluxDB-Flux     (das ist der Name, der für das Dashboard gewählt wurde)

Dann Copy & Paste
Und evtl.
Refresh Dashboard

Damit sollte mit Apply (rechts oben) der Graph oben erscheinen.
In welcher Form und vor allem für welches Zeitintervall hängt von den weiteren Einstellungen rechts ab.
Zunächst mal: SAVE (rechts oben): Dashboard-Name 
Tasmota-Power

 

*********************************************************************************************************************

 

Individueller Graph

Zunächst wählt man den anzuzeigenden Zeitbereich aus.
Rechts oben über das Pull-Down-Menu:

 

Oder:  mit gedrückter linker Maustaste wird ein Zeitbereich aufgezogen.

 

Mit Apply  (rechts oben) gelangt man in die Vollansicht:

 

Zurück zur Edit-Ansicht gelangt man über das Pull-Down-Menu, das sich unter dem "Panel Title"  mittig über dem Graph versteckt:

  Auswahl "Edit"

 

Folgende Einstellungen werden rechts im Edit-Panel vorgenommen:

Title                                        aktuelle Leistung in Watt

Show Grid                             On

Line width                             2

Gradient Mode                      Scheme

Unit                                        Energy / Watt (W)     

Dispay Name                         24 Stunden Verlauf
Colour scheme                       blue yellow red

Thresholds                             

 

 

Apply:

 

*********************************************************************************************************************

*********************************************************************************************************************

*********************************************************************************************************************

 

tasmota-WiFi  konfigurieren

 

Tasmota mit USB-5V verbinden.

Einwahl mit Smarty in tasmota_8EC539-1337

 

alternativ: PC auf  192.168.1.2  à  Einwahl mit PC

  

Eingabe der WiFi-Daten  des Routers
 

WiFi Password aktiviert !!!

Save !!!

 

Das WiFi     2.4G_WiFi_B   läuft unter  xx.xx.xx.47  (Einstellung für Router AR-750 in Fritzbox)

 

Mit Smarty in WiFi   2.4G_WiFi_B   einloggen.

tasmota wird mit  xx.xx.xx.126  adressiert:

 

Auswahl: Configuration / Configure Module

Auswahl: Generic(0)
 
 
Save !!!

 

Zähler-Script einfügen

 

Im Main-Menu Auswahl Consoles / Edit Script

 

Script Iskra MT 175 (SML)   (findet man unter  https://tasmota.github.io/docs/Smart-Meter-Interface/#iskra-mt-174-obis )
 

This meter needs a PIN to unlock the current power usage.

>D
>B
->sensor53 r
>M 1
+1,3,s,16,9600,MT175
1,77070100010800ff@1000,E_in,kWh,E_in,1
1,77070100020800ff@1000,E_out,kWh,E_out,1
1,77070100100700ff@1,P,W,P,18
1,77070100240700ff@1,L1,W,L1,18
1,77070100380700ff@1,L2,W,L2,18
1,770701004C0700ff@1,L3,W,L3,18
1,77070100000009ff@#,Server_ID,,Server_ID,0 
#

 

Script mit copy&paste einfügen:

Script enabled !

 

à  Main Menu:

 

IP  xx.xx.xx.126

Configure the following.

Tasmota verwendet das Konzept von Präfixes und gerätespezifischen Topics.
Standardmäßig ist das Topic Tasmota_<6 Stellen der MAC-Adresse>  , z.B. hier
tasmota_8EC539                    

 

Der Präfix fasst verschiedene Geräte als Oberbegriff zusammen.
Ein Full Topic könnte z.B. lauten:
Keller/E-Zähler
Keller/Schaltsteckdose

 

Das Topic beschreibt in Tasmota das Gerät, aus dem sich ein Status auslesen lässt.

Das Topic beschreibt in openHAB eine Eigenschaft mit auslesbarem Status

 

Empfehlenwert sind lesbarere Topics wie wohnzimmer/steckdose1, küche/arbeitsplatte/led, usw.

                              Save !!!

 

**********************************************************************************************************************

 

TASMOTA Script  à    wird hier erklärt    https://homeitems.de/smartmeter-mit-tasmota-auslesen/

 

**********************************************************************************************************************

OBIS-Codierung der Anzeigewerte

OBIS - ("Object Identification System") Kennzahlen werden zur eindeutigen Identifikation von Messwerten (Energiemengen, Zählerstände) und abstrakten Daten beim elektronischen Datenaustausch verwendet (siehe https://www.kbr.de/de/obis-kennzeichen/obis-kennzeichen )

Tasmota-Script aus  https://tasmota.github.io/docs/Smart-Meter-Interface/#holley-dtz541-sml

>D
>B
->sensor53 r
>M 1
+1,3,s,0,9600,MT176
1,77070100010800ff@1000,E_in,kWh,E_in,1
1,77070100020800ff@1000,E_out,kWh,E_out,1
1,77070100100700ff@1,P,W,P,18
1,77070100240700ff@1,L1,W,L1,18
1,77070100380700ff@1,L2,W,L2,18
1,770701004C0700ff@1,L3,W,L3,18
1,77070100000009ff@#,Server_ID,,Server_ID,0
#

 

Die Anzeigewerte sind nach OBIS wie folgt codiert:

OBIS-Kennzahl

Bezeichung

Kanaltyp

 

Hinweis

1-0:1.8.0*255

Zählerstand Bezug

El. Energie (Zählerstände)

kWh

 

1-0:1.8.1*255

Zählerstand Bezug

El. Energie (Zählerstände)

kWh

 

1-0:1.8.2*255

Zählerstand Bezug

El. Energie (Zählerstände)

kWh

 

1-0:2.8.0*255

Zählerstand Lieferung

El. Energie (Zählerstände)

kWh

 

1-0:16.7.0*255

Leistung (Momentan)

El. Energie (Leistungswerte)

kW

Summe aus P_L1, P_L2, P_L3

1-0:36.7.0*255

Leistung an L1 (Momentan)

El. Energie (Leistungswerte)

kW

 

1-0:56.7.0*255

Leistung an L2 (Momentan)

El. Energie (Leistungswerte)

kW

 

1-0:76.7.0*255

Leistung an L3 (Momentan)

El. Energie (Leistungswerte)

kW

 

 

Im Script wird hexadezimale Darstellung verwendet:
0108   à  01.08  à  0x16+1.08    à    0+1.08    à   1.8

1007   à  10.07  à  1x16+0.07    à  16+0.07    à  16.7

2407   à  24.07  à  2x16+4.07    à  32+4.07    à  36.7

3807   à  38.07  à  3x16+8.07    à  48+8.07    à  56.7
4C07  à  4C.07  à  4x16+12.07  à  64+12.07  à  76.7

 

Der MT175  liefert nur  1.8  und  16.7  !!  (siehe Bedienungsanleitung mt175.pdf)

Außerdem 0000  die Server-ID

 

Daher kann

1,77070100020800ff@1000,E_out,kWh,E_out,1
1,77070100240700ff@1,L1,W,L1,18
1,77070100380700ff@1,L2,W,L2,18
1,770701004C0700ff@1,L3,W,L3,18

aus dem Script entfernt werden !

 

**********************************************************************************************************************

ISKRA MT175  Pin-Eingabe
1. Blaue Taste kurz drücken
à Alle Segmente des Displays leuchten auf.  

2. Blaue Taste kurz drücken à Aufleuchten der „0“ im Display.
3. Die Taste mehrfach hintereinander betätigen bis die erste Ziffer des PIN-Codes erreicht ist.
    (Achtung: bei Falscheingabe fängt die PIN-Code-Abfrage von vorn an).

4. Nach Eingabe der ersten Ziffer drei Sekunden pausieren bis in der zweiten Stelle eine „0“ aufleuchtet.
    Die nächste Ziffer eingeben.

5. Nach vollständiger Eingabe (4 Ziffern) des PIN-Codes wird das Hauptmenü angezeigt.
    Durch weiteres Drücken der mechanischen Taste können die unterschiedlichen Menüpunkte
    aufgerufen werden:

• Aktuelle Wirkleistung (P)

• Verbrauch seit letzter Nullstellung (E)

• Verbrauch unterschiedlicher Zeiträume (1d*,7d,30d,365d,730d) **

6. Um den Zähler erneut zu sperren Menüpunkt „0.2.2“ aufrufen und die mechanische Taste

lange gedrückt halten (mind. fünf Sekunden).

*d= Tag(e)

**Um die historischen Verbrauchswerte zu löschen, Menüpunkt Hls Clr aufrufen und die
   mechanische Taste so lange drücken (mind. fünf Sekunden) bis „Clr on“ auf dem Display
   erscheint.

 

**********************************************************************************************************************

Portfreigabe in Firewall

 

 

Erweiterte Einstellungen

Eingehende Regeln

 

Neue Regel:
        

 

                           

 

**********************************************************************************************************************