Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hi
Klar bekommst du die Daten.
Alle Daten von pluggit_01.zip entpacken nach "/data/callidomus/local/plugins/pluggit"
Callidomus Core neustarten
Unter "https://callidomus.local:445/#plugins" das Plugin aktivieren und die IP Adresse der Pluggitanlage Eintragen
Unter "https://callidomus.local:445/#items" das Item pluggit.fanSpeed erstellen, Typ=Nummer, Generische Attribute pluggit_listen=prmRomIdxSpeedLevel
Unter "https://callidomus.local:445/#visu" eine Seite erstellen mit dem Widget Wert und dem Item pluggit.fanSpeed
Visu neustarten
Und dann sollte man es testen können (hoffe ich)
MFG Simon
Also
Scheinbar gibt es Probleme die Verbindung zur KWL aufrecht zu halten.
Ich habe die Zeit zum abrufen stark runtergesetzt auf 30sec und bekomme keine fehler mehr.
Aber es kann ja nicht sinn und zweck sein alle 30sec die Daten von der KWL abzurufen.
Hat jemand eine Idee?
MFG Simon
Leider verstehe ich davon zu wenig
Aber ich kann es ja mal versuchen.
Wenn ich das Richtig verstehe bezieht sich
Code:
2017-01-12 16:41:21,044 ERROR Pluggit Pluggit: something went wrong in the refresh function: 'NoneType' object has no attribute 'getRegister' -- __init__.py:_refresh:292
auf das scipt __init__.py Zeile 292 Richtig?
Code:
except Exception as e:
logger.error("Pluggit: something went wrong in the refresh function: {0}".format(e))
return
end_time = time.time()
cycletime = end_time - start_time
logger.debug("Pluggit: cycle took {0} seconds".format(cycletime))
def execute(self, request):
''' Starts the producer to send the next request to
consumer.write(Frame(request))
'''
retries = Defaults.Retries
request.transaction_id = self.getNextTID()
_logger.debug("Running transaction %d" % request.transaction_id)
while retries > 0:
try:
self.client.connect()
self.client._send(self.client.framer.buildPacket(request))
# I need to fix this to read the header and the result size,
# as this may not read the full result set, but right now
# it should be fine...
result = self.client._recv(1024)
self.client.framer.processIncomingPacket(result, self.addTransaction)
break;
except socket.error as msg:
self.client.close()
_logger.debug("Transaction failed. (%s) " % msg)
retries -= 1
return self.getTransaction(request.transaction_id)
Nein...Da man so nicht zuordnen kann wo welch Zeile ist...
okay durch deine oben angehängten code sieht man das der Fehler hier im try block passieren muss weil nur da ein getRegister aufruf ist.
Code:
try:
# myCounter = 1
for pluggit_key in self._myTempReadDict:
# logger.debug("Pluggit: ---------------------------------> Wir sind in der Refresh Schleife")
values = self._modbusRegisterDic[pluggit_key]
[COLOR=#FF0000] # [/COLOR]logger.debug("Pluggit: Refresh Schleife: Inhalt von values ist {0}".format(values))
# 2015-01-07 23:53:08,296 DEBUG Pluggit Pluggit: Refresh Schleife: Inhalt von values ist 168 -- __init__.py:_refresh:158
item = self._myTempReadDict[pluggit_key]
# logger.debug("Pluggit: Refresh Schleife: Inhalt von item ist {0}".format(item))
# 2015-01-07 23:53:08,316 DEBUG Pluggit Pluggit: Refresh Schleife: Inhalt von item ist pluggit.unitMode -- __init__.py:_refresh:160
#=======================================================#
# read values from pluggit via modbus client registers
#=======================================================#
# logger.debug("Pluggit: ------------------------------------------> Wir sind vor dem Auslesen der Werte")
registerValue = None
[COLOR=#FF0000] registerValue = self._Pluggit.read_holding_registers(values, read_qty = 1).getRegister(0)[/COLOR]
jetzt must du rausfinden welcher der Register aufrufe fehlschläft...am besten nimmst du deine Doku zur Hand und schaust nach welch der Register es bei dir wirklich gibt. Oder du kommentierst die Loggermeldungen wieder ein...z.b. mit dem roten # würde ich anfangen.
Code:
_modbusRegisterDic = {
# 'prmDateTime': 108, # 40109: Current Date/time in Unix time (amount of seconds from 1.1.1970)
'prmRamIdxT1': 133, # 40133: T1, °C
'prmRamIdxT2': 135, # 40135: T2, °C
'prmRamIdxT3': 137, # 40137: T3, °C
'prmRamIdxT4': 139, # 40139: T4, °C
# 'prmRamIdxT5': 140, # 40141: T5, °C
'prmRamIdxUnitMode': 168, # 40169: Active Unit mode> 0x0004 Manual Mode; 0x0008 WeekProgram
'prmRamIdxBypassActualState': 198, # 40199: Bypass state> Closed 0x0000; In process 0x0001; Closing 0x0020; Opening 0x0040; Opened 0x00FF
'prmRomIdxSpeedLevel': 324, # 40325: Speed level of Fans in Manual mode; shows a current speed level [4-0]; used for changing of the fan speed level
# 'prmVOC': 430, # 40431: VOC sensor value (read from VOC); ppm. If VOC is not installed, then 0.
# 'prmBypassTmin': 444, # 40445: Minimum temperature of Bypass openning (°C), if T1 < Tmin then bypass should be closed
# 'prmBypassTmax': 446, # 40447: Maximum temperature of Bypass openning (°C), if T1 > Tmax or Tmax is 0 then bypass should be closed
# 'prmWorkTime': 624 # 40625: Work time of system, in hour (UNIX)
'prmNumOfWeekProgram': 466, # 40467: Number of the Active Week Program (for Week Program mode)
'prmFilterRemainingTime': 554 # 40555: Remaining time of the Filter Lifetime (Days)
}
p.s. Die Frage aus Post #28 ist auch wichtig...das du die Beantwortest.
Vg
Jürgen
Zuletzt geändert von heckmannju; 12.01.2017, 22:02.
Guten Abend
Ich verwende habe pymodbus-python3.
Die Register sind alle verfügbar, da ich das Plugin unter SmartHome.py ohne Probleme am laufen hatte und ich mir da auch alles anzeigen lassen konnte.
Momentan hole ich mir nur das Register "'prmRomIdxSpeedLevel': 324"
Wenn ich Loggermeldungen aktiviere die du vorgeschlagen hast kommt folgendes
Code:
2017-01-12 22:45:19,504 DEBUG Pluggit Pluggit: Refresh Schleife: Inhalt von values ist 324 -- __init__.py:_refresh:197
2017-01-12 22:45:19,505 DEBUG Pluggit Running transaction 2 -- transaction.py:execute:56
2017-01-12 22:45:19,507 DEBUG Pluggit -- transaction.py:processIncomingPacket:338
2017-01-12 22:45:19,508 DEBUG Pluggit getting transaction 2 -- transaction.py:getTransaction:158
2017-01-12 22:45:19,509 ERROR Pluggit Pluggit: something went wrong in the refresh function: 'NoneType' object has no attribute 'getRegister' -- __init__.py:_refresh:292
2017-01-12 22:45:20,036 DEBUG Scheduler Pluggit next time: 2017-01-12 22:50:20+01:00 -- scheduler.py:_update_next_time:403
Hi Simon,
dann weiss ich auch nicht weiter.
Was für eine pymodbus lib und phyton verwendest du den unter smarthome.py?
Noch eine Frage da ich mir die Lib auch nochmal ansehen werde...gibt es da so einen Debug modus wo man sich die gesendeten und empfangenen Bytes ansehen kann?
Viele Grüsse
Jürgen
Zuletzt geändert von heckmannju; 13.01.2017, 17:34.
ich habe mich jetzt mal ein wenig intensiver mit dem Plugin beschäftigt und bei mir läuft es jetzt so weit. Ich bin zwar noch dran das man auch die Lüfter stufe einstellen kann, aber sonst haut alles hin. Ich habe auch mal die config.md und die item.md erweitert und mit den commands gefüttert.
Den Error den du bekommst habe ich auch ab und an mal, allerdings scheint das nix neues zu sein siehe den Post hier vom 15.06.2015 :-) Wenn ich die refresh time bei ca 10s halte kommt der Fehler gar nicht.
Gruß
Jörg
P.S.: Hier noch die Version mit der es bei mir läuft.. Pluggit.zip
Das man sieht welch Daten (Bytes) geschickt wurden was empfangen wurde...Connection auf abbauen Wartezeiten usw. Bei der minimalmodbus muss man nur einen Schalter umlegen dann sieht man alles wichtige was abgeht.
@ Jürgen: Sowas kenne ich von pymodbus nicht, bin aber auch keine "experte"
Was die Fehlermeldung angeht, so tritt die immer auf wenn die refresh time über 60s ist, da nach 60 Sekunden die Pluggit Anlage die Verbindung trennt und es beim Wiederaufbau manchmal zu Problemen kommt.
Ich schreibe das Plugin aber gerade ein wenig um und werde versuchen mich dem Fehler abzunehmen.
Guten Abend
Also Experte bin ich absolut überhaupt nicht :-D
Zu dem refresh Fehler gibt's die Möglichkeit vor dem Aktualisieren zu trennen dann wird zwar die Verbindung immer wieder neu aufgebaut aber man hat keine Ärger mehr mit dem Fehler.
Ich muss das Thema nochmal ausgraben
Seit dem Update am 25.02 kann ich auf meine KWL nicht mehr zugreifen.
Was hat sich geändert?
Bei callidomus.debug kommt folgendes
Code:
2017-03-04 12:14:52,268 INFO Core Pluggit: connecting to {'cycle': 60, 'host': '192.168.178.4', 'plugin': 'pluggit', 'port': 502, 'type': 'plugin', '_nid': 409, '_path': 'KWL', '_parent': '', '_node': 'KWL'}:502 -- __init__.py:connect:94
2017-03-04 12:14:52,271 INFO Core Pluggit: connected to {'cycle': 60, 'host': '192.168.178.4', 'plugin': 'pluggit', 'port': 502, 'type': 'plugin', '_nid': 409, '_path': 'KWL', '_parent': '', '_node': 'KWL'}:502 -- __init__.py:connect:101
2017-03-04 12:14:52,273 INFO Core Pluggit: connection took 0.004687786102294922 seconds -- __init__.py:connect:104
2017-03-04 12:14:52,274 INFO Core Pluggit: disconnect took 1.5974044799804688e-05 seconds -- __init__.py:disconnect:115
Code:
2017-03-04 12:23:29,285 DEBUG KNX KNX: sending connect request -- base.py:_send_connect_request:298
Exception in thread Pluggit:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/mfs/core/lib/plugin.py", line 185, in run
self.plugin.start()
AttributeError: 'Pluggit' object has no attribute 'start'
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar