i@R4:~ $ sudo find / -name fhem.py
/opt/fhem/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem.py
/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem.py
/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem.py
/opt/fhem/.fhempy/fhempy_venv/lib/python3.9/site-packages/fhempy/lib/fhem.py
find: '/home/pi/thinclient_drives': Keine Berechtigung
find: '/proc/6947': Datei oder Verzeichnis nicht gefunden
find: '/proc/6959': Datei oder Verzeichnis nicht gefunden
find: '/proc/6960': Datei oder Verzeichnis nicht gefunden
find: '/proc/6977': Datei oder Verzeichnis nicht gefunden
find: '/proc/6982': Datei oder Verzeichnis nicht gefunden
find: '/proc/6985': Datei oder Verzeichnis nicht gefunden
/opt/fhem/.fhempy/fhempy_venv/lib/python3.9/site-packages/fhempy/lib/fhem.py
import asyncio
import json
import logging
import os
import platform
import random
import socket
import time
import traceback
from datetime import datetime
import aiohttp
import websockets
from .version import __version__
logger = logging.getLogger(__name__)
function_active = []
update_locks = {}
ZitatMich hatte dann der Betrieb mit Batterie etwas gestört, da ja zumindest in Kalten Monaten der Zähler schon oft um die eigene Achse dreht
Zitat von: TomLee am 23 März 2025, 17:26:40Sry, muss nochmal. Kam mir erst jetzt. Kann mir vorstellen das man mit einem Tür-/Fensterkontakt (zigbee) so einen Gaszähler auch ausgelesen bekommt. Da würde sich das basteln wsl. darauf beschränken die Platine aus dem Gehäuse zu befreien, um näher an den Magneten zu kommen. Nur so ne Idee.
Edit: kurzes googeln zeigt das die Idee grundsätzlich nicht so abwegig.
Zitat von: Thoffi1978 am 23 März 2025, 11:46:39Ich habe eine alte Jessie installation, bekomme die aber nicht aktuell.
energyConsumed":"([\d.]+)
2025-03-19 20:51:56,574 io.vertx.core.impl.ContextImpl ERROR [vert.x-worker-thread-0] Unhandled exception
java.lang.NumberFormatException: For input string: "00502269981762"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:?]
at java.lang.Integer.parseInt(Integer.java:652) ~[?:?]
at java.lang.Integer.parseInt(Integer.java:770) ~[?:?]
at de.eq3.cbcs.legacy.communication.rpc.internal.format.xml.XmlRpcParser.parseValue(XmlRpcParser.java:324) ~[HMIPServer.jar:?]
at de.eq3.cbcs.legacy.communication.rpc.internal.format.xml.XmlRpcParser.parseParams(XmlRpcParser.java:275) ~[HMIPServer.jar:?]
at de.eq3.cbcs.legacy.communication.rpc.internal.format.xml.XmlRpcParser.parseMethodCall(XmlRpcParser.java:126) ~[HMIPServer.jar:?]
at de.eq3.cbcs.legacy.communication.rpc.internal.format.xml.XmlRequestResponseProcessor.parseRequest(XmlRequestResponseProcessor.java:230) ~[HMIPServer.jar:?]
at de.eq3.cbcs.legacy.bidcos.rpc.internal.AbstractLegacyAPIWorker.handle(AbstractLegacyAPIWorker.java:79) ~[HMIPServer.jar:?]
at de.eq3.cbcs.legacy.bidcos.rpc.internal.AbstractLegacyAPIWorker.handle(AbstractLegacyAPIWorker.java:30) ~[HMIPServer.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100) ~[HMIPServer.jar:?]
at io.vertx.core.impl.WorkerContext.lambda$emit$0(WorkerContext.java:59) ~[HMIPServer.jar:?]
at io.vertx.core.impl.WorkerContext.lambda$execute$2(WorkerContext.java:104) ~[HMIPServer.jar:?]
at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76) ~[HMIPServer.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[HMIPServer.jar:?]
at java.lang.Thread.run(Thread.java:829) ~[?:?]
mbpoll -a 1 -r 4 192.168.6.33 -p 5000
mbpoll 1.0-0 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, https://github.com/epsilonrt/mbpoll
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type 'mbpoll -w' for details.
Protocol configuration: Modbus TCP
Slave configuration...: address = [1]
start reference = 4, count = 1
Communication.........: 192.168.6.33, port 5000, t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table
-- Polling slave 1... Ctrl-C to stop)
[4]: 77
-- Polling slave 1... Ctrl-C to stop)
[4]: 82
-- Polling slave 1... Ctrl-C to stop)
[4]: 82
Also der Sensor gibt Werte raus, huer das register 4.define myModbus Modbus 192.168.6.33:5000 TCP
attr myModbus DbLogExclude .*
attr myModbus group Sticks
attr myModbus icon it_net
attr myModbus room Soil
attr myModbus verbose 5
# DEF 192.168.6.33:5000 TCP
# DeviceName 192.168.6.33:5000
# EXPECT idle
# FD 4
# FUUID 67e0124b-f33f-2563-eacf-23e2222ab7888b89
# IODev myModbus
# LASTOPEN 1742738741.4696
# MODE master
# NAME myModbus
# NOTIFYDEV global
# NR 61
# NTFY_ORDER 50-myModbus
# PARTIAL
# PROTOCOL RTU
# STATE opened
# TCPConn 1
# TIMEOUTS 412
# TYPE Modbus
# devioLoglevel 3
# devioNoSTATE 1
# eventCount 1
# nextOpenDelay 60
# FRAME:
# QUEUE:
# READ:
# READINGS:
# 2025-03-23 15:05:41 state opened
# REMEMBER:
# lid 1
# lname myModbus
# lsend 1742741789.25838
# defptr:
# SoilSensor 1
#
setstate myModbus opened
setstate myModbus 2025-03-23 15:05:41 state opened
define SoilSensor ModbusAttr 1 10
attr SoilSensor IODev myModbus
attr SoilSensor obj-h0-expr $val * 0.1
attr SoilSensor obj-h0-format %.1f
attr SoilSensor obj-h0-reading Bodenfeuchte
attr SoilSensor obj-h1-expr $val * 0.1
attr SoilSensor obj-h1-format %.1f
attr SoilSensor obj-h1-reading Bodentemperatur
attr SoilSensor obj-h2-expr $val
attr SoilSensor obj-h2-reading Leitfaehigkeit
attr SoilSensor obj-h3-expr $val * 0.1
attr SoilSensor obj-h3-format %.1f
attr SoilSensor obj-h3-reading PH-Wert
attr SoilSensor obj-h4-expr $val
attr SoilSensor obj-h4-reading Stickstoff
attr SoilSensor obj-h5-expr $val
attr SoilSensor obj-h5-reading Phosphor
attr SoilSensor obj-h6-expr $val
attr SoilSensor obj-h6-reading Kalium
attr SoilSensor room Soil
attr SoilSensor verbose 5
# CFGFN
# DEF 1 10
# FUUID 67e01b0b-f33f-2563-39b7-ec7fcac307671d32
# IODev myModbus
# Interval 10
# MODBUSID 1
# MODE master
# MODULEVERSION Modbus 4.5.6 - 7.11.2023
# NAME SoilSensor
# NOTIFYDEV global
# NR 62
# NTFY_ORDER 50-SoilSensor
# PROTOCOL RTU
# STATE active
# TYPE ModbusAttr
# devioNoSTATE 1
# eventCount 16
# FRAME:
# READ:
# READINGS:
# 2025-03-23 16:37:47 IODev myModbus
# 2025-03-23 16:37:47 state opened
# REMEMBER:
# lsend 1742741789.25838
# UPDATECACHE:
# lastRead:
#
setstate SoilSensor active
setstate SoilSensor 2025-03-23 16:37:47 IODev myModbus
setstate SoilSensor 2025-03-23 16:37:47 state opened
Default device address is 1, RS485
Default parameters 48 00,n,8,1
Register map:
Read status registers, read function code: 0x30
Register
address
(Hex)
P
LC
A
dd ress
(
decimal
meaning
Number
of bytes
c
ontent remark
0000
40001
2
0.1
%RH r
ead
000
1 4000
2 T
e mperature 2
0.1
0.1℃
r
ead
000
2 4000
3 Conductivity
2
1
r
ead
000
3 4000
4 P
H 2
0.
1 r
ead
000
4 4000
5 Nitrogen
( 2
1 mg/kg
read / write
000
5 4000
6 Phosphorus
( 2
1 mg/kg
read / write
000
6 4000
7 Potassium
( 2
1 mg/kg
read / write
000
7 4000
8 S
alinity 2
1
mg/L r
ead
000
8 4000
9 T
DS 2
1
mg/L r
ead
0022
40035
Conductivity
factor 2
0
100 correspond
to 0.0% 10.0%
Default
0.0%
read / write
2025.03.23 16:49:53 5: SoilSensor: CreateUpdateHash full object list: h0 h1 h2 h3 h4 h5 h6
2025.03.23 16:49:53 4: SoilSensor: CombineUpdateHash objHash keys before combine:
2025.03.23 16:49:53 5: SoilSensor: CombineUpdateHash tries to combine read commands
2025.03.23 16:49:53 5: SoilSensor: CombineUpdateHash keys are now
2025.03.23 16:49:53 4: SoilSensor: GetUpdate will now create requests for
2025.03.23 16:50:03 4: SoilSensor: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
2025.03.23 16:50:03 4: SoilSensor: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 10.0 sec at 16:50:13.056, interval 10
Zitat von: moerte am 23 März 2025, 15:59:35Ok, also wichtig ist das kein CH340 Chip .. das liest man viel.
Woran man das erkennt weiß ich nicht. Wäre dann sowas in der richtig das passende? Link
Wollt jetzt auch nicht in diesem Thread vom egtl Thema abschweifen .. sollte es stören dann entschuldige ich mich dafür.