subDesTagesMitExtraKaese 2 rokov pred
rodič
commit
f6a432eaf4

+ 14 - 0
box-pc/Dockerfile

@@ -0,0 +1,14 @@
+# syntax=docker/dockerfile:1
+FROM python:3
+ENV PYTHONDONTWRITEBYTECODE=1
+ENV PYTHONUNBUFFERED=1
+WORKDIR /plc-connector
+
+COPY ./plc-connector/requirements.txt /plc-connector/requirements.txt
+
+RUN pip install -r requirements.txt
+COPY ./plc-connector /plc-connector/
+
+EXPOSE 102
+
+CMD ["python3", "main.py", "2>&1"]

+ 37 - 0
box-pc/docker-compose.yml

@@ -0,0 +1,37 @@
+version: "3.7"
+   
+services:
+  plc-connector:
+    container_name: plc-connector
+    build: .
+
+    restart: on-failure
+
+    ports:
+      - 102:102
+
+    volumes:
+      - ./logs:/plc-connector/logs
+
+    networks:
+      - influxdb
+  
+  influxdb:
+    container_name: influxdb
+    image: influxdb:latest
+    
+    restart: unless-stopped
+
+    ports:
+      - 8086:8086
+
+    networks:
+      - influxdb
+
+    volumes:
+      - "./conf:/etc/influxdb2"
+      - "./influxdbv2:/var/lib/influxdb2"
+
+networks:
+  influxdb:
+    name: influxdb

+ 0 - 0
box-pc/application/database/__init__.py → box-pc/plc-connector/database/__init__.py


+ 0 - 0
box-pc/application/database/__main__.py → box-pc/plc-connector/database/__main__.py


+ 0 - 0
box-pc/application/database/csvFile.py → box-pc/plc-connector/database/csvFile.py


+ 0 - 0
box-pc/application/database/influxdb.py → box-pc/plc-connector/database/influxdb.py


+ 0 - 0
box-pc/application/database/sqliteDb.py → box-pc/plc-connector/database/sqliteDb.py


+ 0 - 0
box-pc/application/inputs/__main__.py → box-pc/plc-connector/inputs/__main__.py


+ 5 - 1
box-pc/application/inputs/allen_bradley_connect.py → box-pc/plc-connector/inputs/allen_bradley_connect.py

@@ -1,3 +1,5 @@
+import logging
+
 from pylogix import PLC
 from threading import Thread
 import time
@@ -84,4 +86,6 @@ class AllenBradleyCPU(Input):
     ret = self.comm.Read(self.tags)
     if ret[0].Status == "Success":
       values = [r.Value for r in ret]
-      self._q.put(PlantState(timestamp, "AB", *values))
+      self._q.put(PlantState(timestamp, "AB", *values))
+    else:
+      logging.error("CPU read: " + ret[0].Status)

+ 0 - 0
box-pc/application/inputs/balluff_ethernet_ip.py → box-pc/plc-connector/inputs/balluff_ethernet_ip.py


+ 0 - 0
box-pc/application/inputs/balluff_html.py → box-pc/plc-connector/inputs/balluff_html.py


+ 0 - 0
box-pc/application/inputs/common.py → box-pc/plc-connector/inputs/common.py


+ 4 - 2
box-pc/application/inputs/snap7_connect.py → box-pc/plc-connector/inputs/snap7_connect.py

@@ -1,3 +1,5 @@
+import logging
+
 import time
 from datetime import datetime
 import struct
@@ -23,8 +25,8 @@ class SiemensCPU(Input):
   def start(self):
     try:
       self.cpu.connect(self.address, rack=0, slot=0)
-    except Snap7Exception:
-      pass
+    except Snap7Exception as ex:
+      logging.exception(ex)
     super().start()
 
   def read_handler(self):

+ 2 - 2
box-pc/application/inputs/snap7_server.py → box-pc/plc-connector/inputs/snap7_server.py

@@ -30,11 +30,11 @@ class SiemensServer(Input):
       text = self.server.event_text(event)
       match = re.match("^(?P<datetime>\d+-\d+-\d+ \d+:\d+:\d+) \[(?P<host>[\w\.:]+)\] (?P<type>[\w ]+), Area : (?P<area>.+), Start : (?P<start>\d+), Size : (?P<size>\d+) --> (?P<response>.+)$", text)
       if not match:
-        logging.info(text)
+        logging.warn(text)
         continue
       
       if match.group("type") != "Write request":
-        logging.info(text)
+        logging.warn(text)
         continue
       
       if int(match.group("start")) + int(match.group("size")) <= 4:

+ 0 - 0
box-pc/application/inputs/tcp_connect.py → box-pc/plc-connector/inputs/tcp_connect.py


+ 7 - 4
box-pc/application/main.py → box-pc/plc-connector/main.py

@@ -8,7 +8,7 @@ import time
 
 logging.basicConfig(level=logging.WARNING)
 
-logging.info("starting")
+logging.warning("starting")
 
 sources = [
   #SiemensCPU("192.168.0.10"),
@@ -18,14 +18,14 @@ sources = [
 ]
 
 sinks = [
-  InfluxDB("http://localhost:8086"),
+  InfluxDB("http://influxdb:8086"),
   CSVStorage("logs"),
 ]
 
 for source in sources:
   source.start()
 
-logging.info("started sources")
+logging.warning("started sources")
 
 startTime = 0
 
@@ -49,7 +49,10 @@ def printStats(values):
   else:
     text = "0 Messungen in {:.03f}s               ".format(dt)
 
-  print(text, end='\r')
+  if not counts or len(ids) < 3:
+    logging.warning(text)
+  else:
+    logging.info(text)
 
 while True:
   values = []

BIN
box-pc/plc-connector/requirements.txt


+ 0 - 0
box-pc/application/structures/measurement.py → box-pc/plc-connector/structures/measurement.py


+ 0 - 0
box-pc/application/structures/plant.py → box-pc/plc-connector/structures/plant.py


BIN
box-pc/requirements.txt