diff --git a/.woodpecker.yml b/.woodpecker.yml index c558add..33dab84 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -4,12 +4,12 @@ steps: settings: repo: gitea.hottis.de/wn/digitaltwin1 registry: - from_secret: container_registry + from_secret: local_registry tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG} username: - from_secret: container_registry_username + from_secret: local_username password: - from_secret: container_registry_password + from_secret: local_password dockerfile: Dockerfile when: - event: [push, tag] diff --git a/deployment/install-yml.tmpl b/deployment/install-yml.tmpl index 210eb7b..cb9d310 100644 --- a/deployment/install-yml.tmpl +++ b/deployment/install-yml.tmpl @@ -12,6 +12,7 @@ data: MQTT__BROKER: "emqx01-anonymous-cluster-internal.broker.svc.cluster.local" MQTT__DIGITALOUTPUTTOPICPREFIX: "dt1/coil" MQTT__DIGITALINPUTTOPICPREFIX: "dt1/di" + MQTT__COILINPUTTOPICPREFIX: "dt1/ci" MQTT__ANALOGINPUTEVENTTOPICPREFIX: "dt1/ai/event" MQTT__ANALOGINPUTPERIODICTOPICPREFIX: "dt1/ai/periodic" MQTT__ANALOGINPUTPUBLISHPERIOD: "60.0" diff --git a/src/MqttEventPublisher.py b/src/MqttEventPublisher.py index 05dc0d9..38736f7 100644 --- a/src/MqttEventPublisher.py +++ b/src/MqttEventPublisher.py @@ -22,6 +22,7 @@ class MqttEventPublisher(AbstractMqttPublisher): continue discreteInputChangeset = self.processImage.getChangedDiscreteInputs() + coilInputChangeset = self.processImage.getChangedCoils() if not self.disableAnalogInputEventPublishing: analogInputChangeset = self.processImage.getChangedAnalogsInputs() @@ -34,6 +35,15 @@ class MqttEventPublisher(AbstractMqttPublisher): str(discreteInputChangeItem[1][0]), retain=True) + for coilInputChangeItem in coilInputChangeset: + logger.debug("Coil input {} changed from {} to {}" + .format(coilInputChangeItem[0], + coilInputChangeItem[1][1], + coilInputChangeItem[1][0])) + self.client.publish("{}/{}".format(self.config["coilInputTopicPrefix"], str(coilInputChangeItem[0])), + str(coilInputChangeItem[1][0]), + retain=True) + if not self.disableAnalogInputEventPublishing: for analogInputChangeItem in analogInputChangeset: logger.debug("Analog input {} changed from {} to {}" diff --git a/src/ProcessImage.py b/src/ProcessImage.py index 85fad99..50dc546 100644 --- a/src/ProcessImage.py +++ b/src/ProcessImage.py @@ -64,12 +64,12 @@ class ProcessImage(Condition): self.coils[coilNum] = value self.coilEvent.set() -# def getChangedCoils(self): -# if not self.initialized: -# raise NotInitializedException -# changedCoils = zippingFilter(self.coils, self.shadowCoils) + def getChangedCoils(self): + if not self.initialized: + raise NotInitializedException + changedCoils = zippingFilter(self.coils, self.shadowCoils) # self.shadowCoils = self.coils -# return changedCoils + return changedCoils def getCoils(self): if not self.initialized: diff --git a/src/config.py b/src/config.py index 87de43d..c21fda5 100644 --- a/src/config.py +++ b/src/config.py @@ -6,6 +6,7 @@ class Config: 'mqtt': [ 'broker', 'digitalOutputTopicPrefix', 'digitalInputTopicPrefix', + 'coilInputTopicPrefix', 'analogInputEventTopicPrefix', 'analogInputPeriodicTopicPrefix', 'analogInputPublishPeriod',