Redirect 302 redirect from GET @entry_comment_create (24d8b4)

GET https://kbin.spritesserver.nl/u/@dgriffith@aussie.zone/threads/active/%E2%88%9E/all

Components

18 Twig Components
37 Render Count
101 ms Render Time
14.0 MiB Memory Usage

Components

Name Metadata Render Count Render Time
settings_row_switch
"App\Twig\Components\SettingsRowSwitchComponent"
components/_settings_row_switch.html.twig
15 2.67ms
user_settings_row_switch
"App\Twig\Components\UserSettingsRowSwitchComponent"
components/_user_settings_row_switch.html.twig
4 0.98ms
date
"App\Twig\Components\DateComponent"
components/date.html.twig
2 0.39ms
settings_row_enum
"App\Twig\Components\SettingsRowEnumComponent"
components/_settings_row_enum.html.twig
2 0.50ms
entry
"App\Twig\Components\EntryComponent"
components/_cached.html.twig
1 37.16ms
user_inline
"App\Twig\Components\UserInlineComponent"
components/user_inline.html.twig
1 0.27ms
date_edited
"App\Twig\Components\DateEditedComponent"
components/date_edited.html.twig
1 0.19ms
magazine_inline
"App\Twig\Components\MagazineInlineComponent"
components/magazine_inline.html.twig
1 0.25ms
vote
"App\Twig\Components\VoteComponent"
components/vote.html.twig
1 0.63ms
boost
"App\Twig\Components\BoostComponent"
components/boost.html.twig
1 4.22ms
user_actions
"App\Twig\Components\UserActionsComponent"
components/user_actions.html.twig
1 0.62ms
related_magazines
"App\Twig\Components\RelatedMagazinesComponent"
components/_cached.html.twig
1 9.90ms
active_users
"App\Twig\Components\ActiveUsersComponent"
components/_cached.html.twig
1 9.36ms
related_categories
"App\Twig\Components\RelatedCategoriesComponent"
components/_cached.html.twig
1 6.58ms
related_posts
"App\Twig\Components\RelatedPostsComponent"
components/_cached.html.twig
1 6.00ms
related_entries
"App\Twig\Components\RelatedEntriesComponent"
components/_cached.html.twig
1 9.51ms
support_us_block
"App\Twig\Components\SupportUsBlock"
components/_cached.html.twig
1 8.74ms
featured_magazines
"App\Twig\Components\FeaturedMagazinesComponent"
components/_cached.html.twig
1 8.84ms

Render calls

entry App\Twig\Components\EntryComponent 14.0 MiB 37.16 ms
Input props
[
  "entry" => App\Entity\Entry {#1551
    +user: App\Entity\User {#260
      +avatar: null
      +cover: null
      +email: "dgriffith@aussie.zone"
      +username: "@dgriffith@aussie.zone"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "I’m a technical kinda guy, doing technical kinda stuff."
      +lastActive: DateTime @1729552629 {#273
        date: 2024-10-22 01:17:09.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
      +entries: Doctrine\ORM\PersistentCollection {#190 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
      +posts: Doctrine\ORM\PersistentCollection {#78 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
      +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
      +follows: Doctrine\ORM\PersistentCollection {#1769 …}
      +followers: Doctrine\ORM\PersistentCollection {#1771 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
      +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
      +reports: Doctrine\ORM\PersistentCollection {#2399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
      +violations: Doctrine\ORM\PersistentCollection {#2421 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
      +awards: Doctrine\ORM\PersistentCollection {#1976 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
      +categories: Doctrine\ORM\PersistentCollection {#1912 …}
      -id: 47433
      -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
      +apId: "dgriffith@aussie.zone"
      +apProfileId: "https://aussie.zone/u/dgriffith"
      +apPublicUrl: "https://aussie.zone/u/dgriffith"
      +apFollowersUrl: null
      +apInboxUrl: "https://aussie.zone/inbox"
      +apDomain: "aussie.zone"
      +apPreferredUsername: "dgriffith"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1706718291 {#276
        date: 2024-01-31 17:24:51.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1696022922 {#272
        date: 2023-09-29 23:28:42.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1728
      +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
      +name: "electronics@discuss.tchncs.de"
      +title: "electronics"
      +description: """
        **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: No circuit design or repair, tools or component questions.\n
        \n
        5: No excessively promoting your own sites, social media, videos etc.\n
        \n
        ---\n
        \n
        *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 43
      +entryCommentCount: 201
      +postCount: 1
      +postCommentCount: 3
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1723220252 {#2315
        date: 2024-08-09 18:17:32.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
      +entries: Doctrine\ORM\PersistentCollection {#2282 …}
      +posts: Doctrine\ORM\PersistentCollection {#2279 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
      +bans: Doctrine\ORM\PersistentCollection {#2219 …}
      +reports: Doctrine\ORM\PersistentCollection {#2205 …}
      +badges: Doctrine\ORM\PersistentCollection {#2270 …}
      +logs: Doctrine\ORM\PersistentCollection {#2253 …}
      +awards: Doctrine\ORM\PersistentCollection {#2203 …}
      +categories: Doctrine\ORM\PersistentCollection {#2242 …}
      -id: 5
      +apId: "electronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/electronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "electronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1719675646 {#2322
        date: 2024-06-29 17:40:46.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1686642591 {#2321
        date: 2023-06-13 09:49:51.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1689 …}
    +slug: "My-customisable-solar-hot-water-system-controller-project-in-progress"
    +title: "My customisable solar hot water system controller (project in progress)"
    +url: null
    +body: """
      Hi all,\n
      \n
      In an effort to liven up this community, I’ll post this project I’m working on.\n
      \n
      I’m building a solar hot water controller for my house. The collector is on the roof of a three-storey building, it is linked to a storage tank on the ground floor. A circulating pump passes water from the tank to the collectors and back again when a temperature sensor on the outlet of the collector registers a warm enough temperature.\n
      \n
      The current controller does not understand that there is 15 metres of copper piping to pump water through and cycles the circulating pump in short bursts, resulting in the hot water at the collector cooling considerably by the time it reaches the tank (even though the pipes are insulated). The goal of my project is to read the sensor and drive the pump in a way to minimise these heat losses. Basically instead of trying to maintain a consistent collector output temp with slow constant pulsed operation of the pump, I’ll first try pumping the entire volume of moderately hot water from the top half of the collector in one go back to the tank and then waiting until the temperature rises again.\n
      \n
      I am using an Adafruit PyPortal Titano as the controller, running circuitpython. For I/O I am using a generic ebay PCF8591 board, which provides 4 analog input and a single analog output over an I2C bus. This is inserted into a motherboard that provides pullup resistors for the analog inputs and an optocoupled zero crossing SCR driver + SCR to drive the (thankfully low power) circulating pump. Board design is my own, design is rather critical as mains supply in my country is 240V.\n
      \n
      The original sensors are simple NTC thermistors, one at the bottom of the tank, and one at the top of the collector. I have also added 4 other Dallas 1-wire sensors to measure temperatures at the top of tank, ambient, tank inlet and collector pump inlet which is 1/3rd of the way up the tank. I have a duplicate of the onewire sensors already on the hot water tank using a different adafruit board and circuitpython. Their readings are currently uploaded to my own IOT server and I can plot the current system’s performance, and I intend to do the same thing with this board.\n
      \n
      The current performance is fairly dismal, a very small bump of perhaps 0.5 - 1 deg C in the normally 55 degree C tank temperature around 12pm to 1pm, and this is in Australia in hot spring weather of 28-32 degrees C.(There’s some inaccuracy of the tank temperatures, the sensors aren’t really bonded to the tank in any meaningful way, so tank temp is probably a little warmer than this. But I’m looking for relative temperature increases anyway)\n
      \n
      Right now , the hardware is all together and functional, and is driving a 13W LED downlight as a test, and I can read the onewire temp sensors, read an analog voltage on the PCF8591 board (which will go to the NTC sensors), and I’m pulsing the pump output proportionally from 0-100 percent drive on a 30 second duty cycle, so that a pump drive function can simply say “run the pump at 70 percent” and you’ll get 21 seconds on, 9 seconds off. Duty cycle time is adjustable, so I might lower it a bit to 15 or 10 seconds.\n
      \n
      The next step is to try it on the circulating pump (which is quite an inductive load, even if it is only 20 watts), and start working on an algorithm that reads the sensors and maximises water temperature back to the tank. There are a few safety features that I’ll put in there, such as a “fault mode” to drive the pump at a fixed rate if there is a sensor failure, and a “night cool” mode if the hot water tank is severely over temperature to circulate hot water to the collector at night to cool it. There are the usual overtemp/overpressure relief valves in the system already.\n
      \n
      All this is going in a case with a clear hinged cover on the front so I can open it and poke the Titano’s touchscreen to do some things.\n
      \n
      Right now I am away from home from work, so my replies might be a bit sporadic, but I’ll try to get back to any questions soon-ish.\n
      \n
      A few photos for your viewing pleasure:\n
      \n
      The I/O and mainboard plus a 5V power supply mounted up: ![](https://aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)\n
      \n
      The front of the panel, showing the Pyportal: ![](https://aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)\n
      \n
      Thingsboard display showing readings from the current system: ![](https://aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)\n
      \n
      Mainboard PCB design and construction via EasyEDA: ![](https://aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)\n
      \n
      ![](https://aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 7
    +favouriteCount: 22
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1698884219 {#1442
      date: 2023-11-02 01:16:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1686 …}
    +votes: Doctrine\ORM\PersistentCollection {#1692 …}
    +reports: Doctrine\ORM\PersistentCollection {#1711 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1716 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1715 …}
    +badges: Doctrine\ORM\PersistentCollection {#2462 …}
    +children: []
    -id: 8890
    -titleTs: "'control':7 'customis':2 'hot':4 'progress':10 'project':8 'solar':3 'system':6 'water':5"
    -bodyTs: "'-100':531 '-32':436 '/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':772 '/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':783 '/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':807 '/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':794 '/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':804 '0':530 '0.5':409 '1':319,410 '1/3rd':339 '10':580 '12pm':422 '13w':492 '15':92,578 '1pm':424 '20':604 '21':559 '240v':289 '28':435 '30':536 '4':231,316 '55':416 '5v':765 '70':553 '9':562 'ad':315 'adafruit':211,363 'adjust':569 'algorithm':611 'alreadi':354,691 'also':314 'ambient':330 'analog':232,237,255,508 'anyway':478 'aren':449 'around':421 'aussie.zone':771,782,793,803,806 'aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':770 'aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':781 'aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':805 'aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':792 'aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':802 'australia':429 'away':726 'back':66,195,620,745 'basic':154 'bit':576,737 'board':228,273,364,396,513 'bond':452 'bottom':300 'build':22,42 'bump':406 'burst':108 'bus':242 'c':412,418,438 'case':698 'circuitpython':218,366 'circul':55,104,271,591,670 'clear':701 'collector':32,64,77,116,162,191,311,334,675 'communiti':10 'consider':118 'consist':161 'constant':167 'construct':799 'control':27,85,216 'cool':117,658,679 'copper':95 'countri':287 'cover':703 'critic':281 'cross':261 'current':84,370,382,398,790 'cycl':102,539,566 'dalla':318 'deg':411 'degre':417,437 'design':274,278,797 'differ':362 'dismal':402 'display':785 'downlight':494 'drive':143,266,490,533,544,642 'driver':263 'duplic':349 'duti':538,565 'easyeda':801 'ebay':226 'effort':5 'enough':81 'entir':179 'even':126,599 'failur':654 'fair':401 'fault':639 'featur':629 'first':175 'fix':647 'floor':53 'front':706,774 'function':487,545 'generic':225 'get':558,744 'go':194,516,695 'goal':133 'ground':52 'half':188 'hardwar':482 'heat':152 'hi':1 'hing':702 'home':728 'hot':25,112,183,357,431,662,671 'hous':30 'i/o':220,760 'i2c':241 'inaccuraci':442 'increas':477 'induct':597 'inlet':332,336 'input':233,256 'insert':245 'instead':155 'insul':131 'intend':388 'iot':375 'ish':751 'led':493 'link':45 'littl':466 'liven':7 'll':12,174,557,632,741 'load':598 'look':473 'loss':153 'low':269 'lower':573 'm':17,21,472,523 'main':283 'mainboard':762,795 'maintain':159 'maximis':617 'meaning':458 'measur':323 'metr':93 'might':572,734 'minimis':150 'mode':640,659 'moder':182 'motherboard':248 'mount':768 'next':583 'night':657,677 'normal':415 'ntc':295,519 'one':193,297,305 'onewir':352,503 'open':710 'oper':169 'optocoupl':259 'origin':291 'outlet':74 'output':163,238,527 'overtemp/overpressure':685 'panel':777 'pass':57 'pcb':796 'pcf8591':227,512 'percent':532,554 'perform':385,399 'perhap':408 'photo':754 'pipe':96,129 'pleasur':758 'plot':380 'plus':763 'poke':713 'post':13 'power':270,766 'probabl':464 'project':15,136 'proport':528 'provid':230,250 'pullup':251 'puls':168,524 'pump':56,98,105,145,172,177,272,335,526,543,551,592,644 'put':633 'pyport':212,780 'question':748 'quit':595 'rate':648 'rather':280 'reach':123 'read':139,368,501,506,613,787 'realli':451 'regist':78 'relat':475 'relief':686 'repli':733 'resistor':252 'result':109 'right':479,722 'rise':205 'roof':36 'run':217,549 'safeti':628 'say':548 'scr':262,264 'second':537,560,563,581 'sensor':71,141,292,321,353,448,505,520,615,653 'server':376 'sever':666 'short':107 'show':778,786 'simpl':294 'simpli':547 'singl':236 'slow':166 'small':405 'solar':24 'soon':750 'soon-ish':749 'sporad':738 'spring':432 'start':607 'step':584 'storag':48 'storey':41 'suppli':284,767 'system':383,690,791 'tank':49,61,125,198,303,329,331,345,359,419,445,455,461,623,664 'temp':164,462,504 'temperatur':70,82,204,324,420,446,476,619,668 'test':497 'thank':268 'thermistor':296 'thing':393,721 'thingsboard':784 'though':127 'three':40 'three-storey':39 'time':121,567 'titano':213,715 'togeth':485 'top':187,308,327 'touchscreen':717 'tri':157,176,587,742 'understand':88 'upload':371 'use':209,223,360 'usual':684 'valv':687 'via':800 'view':757 'voltag':509 'volum':180 'wait':201 'warm':80 'warmer':467 'water':26,58,99,113,184,358,618,663,672 'watt':605 'way':148,342,459 'weather':433 'wire':320 'work':18,608,730 'zero':260"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1698902815
    +visibility: "visible             "
    +apId: "https://aussie.zone/post/3581301"
    +editedAt: null
    +createdAt: DateTimeImmutable @1698827815 {#1640
      date: 2023-11-01 09:36:55.0 +01:00
    }
  }
  "showMagazineName" => true
]
Attributes
[]
Component
App\Twig\Components\EntryComponent {#2066
  -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …}
  -newCommentMarkerCount: App\Kbin\NewCommentMarker\NewCommentMarkerCount {#2074 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -security: Symfony\Bundle\SecurityBundle\Security {#1101 …}
  +entry: App\Entity\Entry {#1551
    +user: App\Entity\User {#260
      +avatar: null
      +cover: null
      +email: "dgriffith@aussie.zone"
      +username: "@dgriffith@aussie.zone"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "I’m a technical kinda guy, doing technical kinda stuff."
      +lastActive: DateTime @1729552629 {#273
        date: 2024-10-22 01:17:09.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
      +entries: Doctrine\ORM\PersistentCollection {#190 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
      +posts: Doctrine\ORM\PersistentCollection {#78 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
      +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
      +follows: Doctrine\ORM\PersistentCollection {#1769 …}
      +followers: Doctrine\ORM\PersistentCollection {#1771 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
      +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
      +reports: Doctrine\ORM\PersistentCollection {#2399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
      +violations: Doctrine\ORM\PersistentCollection {#2421 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
      +awards: Doctrine\ORM\PersistentCollection {#1976 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
      +categories: Doctrine\ORM\PersistentCollection {#1912 …}
      -id: 47433
      -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
      +apId: "dgriffith@aussie.zone"
      +apProfileId: "https://aussie.zone/u/dgriffith"
      +apPublicUrl: "https://aussie.zone/u/dgriffith"
      +apFollowersUrl: null
      +apInboxUrl: "https://aussie.zone/inbox"
      +apDomain: "aussie.zone"
      +apPreferredUsername: "dgriffith"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1706718291 {#276
        date: 2024-01-31 17:24:51.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1696022922 {#272
        date: 2023-09-29 23:28:42.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1728
      +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
      +name: "electronics@discuss.tchncs.de"
      +title: "electronics"
      +description: """
        **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: No circuit design or repair, tools or component questions.\n
        \n
        5: No excessively promoting your own sites, social media, videos etc.\n
        \n
        ---\n
        \n
        *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 43
      +entryCommentCount: 201
      +postCount: 1
      +postCommentCount: 3
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1723220252 {#2315
        date: 2024-08-09 18:17:32.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
      +entries: Doctrine\ORM\PersistentCollection {#2282 …}
      +posts: Doctrine\ORM\PersistentCollection {#2279 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
      +bans: Doctrine\ORM\PersistentCollection {#2219 …}
      +reports: Doctrine\ORM\PersistentCollection {#2205 …}
      +badges: Doctrine\ORM\PersistentCollection {#2270 …}
      +logs: Doctrine\ORM\PersistentCollection {#2253 …}
      +awards: Doctrine\ORM\PersistentCollection {#2203 …}
      +categories: Doctrine\ORM\PersistentCollection {#2242 …}
      -id: 5
      +apId: "electronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/electronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "electronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1719675646 {#2322
        date: 2024-06-29 17:40:46.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1686642591 {#2321
        date: 2023-06-13 09:49:51.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1689 …}
    +slug: "My-customisable-solar-hot-water-system-controller-project-in-progress"
    +title: "My customisable solar hot water system controller (project in progress)"
    +url: null
    +body: """
      Hi all,\n
      \n
      In an effort to liven up this community, I’ll post this project I’m working on.\n
      \n
      I’m building a solar hot water controller for my house. The collector is on the roof of a three-storey building, it is linked to a storage tank on the ground floor. A circulating pump passes water from the tank to the collectors and back again when a temperature sensor on the outlet of the collector registers a warm enough temperature.\n
      \n
      The current controller does not understand that there is 15 metres of copper piping to pump water through and cycles the circulating pump in short bursts, resulting in the hot water at the collector cooling considerably by the time it reaches the tank (even though the pipes are insulated). The goal of my project is to read the sensor and drive the pump in a way to minimise these heat losses. Basically instead of trying to maintain a consistent collector output temp with slow constant pulsed operation of the pump, I’ll first try pumping the entire volume of moderately hot water from the top half of the collector in one go back to the tank and then waiting until the temperature rises again.\n
      \n
      I am using an Adafruit PyPortal Titano as the controller, running circuitpython. For I/O I am using a generic ebay PCF8591 board, which provides 4 analog input and a single analog output over an I2C bus. This is inserted into a motherboard that provides pullup resistors for the analog inputs and an optocoupled zero crossing SCR driver + SCR to drive the (thankfully low power) circulating pump. Board design is my own, design is rather critical as mains supply in my country is 240V.\n
      \n
      The original sensors are simple NTC thermistors, one at the bottom of the tank, and one at the top of the collector. I have also added 4 other Dallas 1-wire sensors to measure temperatures at the top of tank, ambient, tank inlet and collector pump inlet which is 1/3rd of the way up the tank. I have a duplicate of the onewire sensors already on the hot water tank using a different adafruit board and circuitpython. Their readings are currently uploaded to my own IOT server and I can plot the current system’s performance, and I intend to do the same thing with this board.\n
      \n
      The current performance is fairly dismal, a very small bump of perhaps 0.5 - 1 deg C in the normally 55 degree C tank temperature around 12pm to 1pm, and this is in Australia in hot spring weather of 28-32 degrees C.(There’s some inaccuracy of the tank temperatures, the sensors aren’t really bonded to the tank in any meaningful way, so tank temp is probably a little warmer than this. But I’m looking for relative temperature increases anyway)\n
      \n
      Right now , the hardware is all together and functional, and is driving a 13W LED downlight as a test, and I can read the onewire temp sensors, read an analog voltage on the PCF8591 board (which will go to the NTC sensors), and I’m pulsing the pump output proportionally from 0-100 percent drive on a 30 second duty cycle, so that a pump drive function can simply say “run the pump at 70 percent” and you’ll get 21 seconds on, 9 seconds off. Duty cycle time is adjustable, so I might lower it a bit to 15 or 10 seconds.\n
      \n
      The next step is to try it on the circulating pump (which is quite an inductive load, even if it is only 20 watts), and start working on an algorithm that reads the sensors and maximises water temperature back to the tank. There are a few safety features that I’ll put in there, such as a “fault mode” to drive the pump at a fixed rate if there is a sensor failure, and a “night cool” mode if the hot water tank is severely over temperature to circulate hot water to the collector at night to cool it. There are the usual overtemp/overpressure relief valves in the system already.\n
      \n
      All this is going in a case with a clear hinged cover on the front so I can open it and poke the Titano’s touchscreen to do some things.\n
      \n
      Right now I am away from home from work, so my replies might be a bit sporadic, but I’ll try to get back to any questions soon-ish.\n
      \n
      A few photos for your viewing pleasure:\n
      \n
      The I/O and mainboard plus a 5V power supply mounted up: ![](https://aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)\n
      \n
      The front of the panel, showing the Pyportal: ![](https://aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)\n
      \n
      Thingsboard display showing readings from the current system: ![](https://aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)\n
      \n
      Mainboard PCB design and construction via EasyEDA: ![](https://aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)\n
      \n
      ![](https://aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 7
    +favouriteCount: 22
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1698884219 {#1442
      date: 2023-11-02 01:16:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1686 …}
    +votes: Doctrine\ORM\PersistentCollection {#1692 …}
    +reports: Doctrine\ORM\PersistentCollection {#1711 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1716 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1715 …}
    +badges: Doctrine\ORM\PersistentCollection {#2462 …}
    +children: []
    -id: 8890
    -titleTs: "'control':7 'customis':2 'hot':4 'progress':10 'project':8 'solar':3 'system':6 'water':5"
    -bodyTs: "'-100':531 '-32':436 '/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':772 '/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':783 '/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':807 '/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':794 '/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':804 '0':530 '0.5':409 '1':319,410 '1/3rd':339 '10':580 '12pm':422 '13w':492 '15':92,578 '1pm':424 '20':604 '21':559 '240v':289 '28':435 '30':536 '4':231,316 '55':416 '5v':765 '70':553 '9':562 'ad':315 'adafruit':211,363 'adjust':569 'algorithm':611 'alreadi':354,691 'also':314 'ambient':330 'analog':232,237,255,508 'anyway':478 'aren':449 'around':421 'aussie.zone':771,782,793,803,806 'aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':770 'aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':781 'aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':805 'aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':792 'aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':802 'australia':429 'away':726 'back':66,195,620,745 'basic':154 'bit':576,737 'board':228,273,364,396,513 'bond':452 'bottom':300 'build':22,42 'bump':406 'burst':108 'bus':242 'c':412,418,438 'case':698 'circuitpython':218,366 'circul':55,104,271,591,670 'clear':701 'collector':32,64,77,116,162,191,311,334,675 'communiti':10 'consider':118 'consist':161 'constant':167 'construct':799 'control':27,85,216 'cool':117,658,679 'copper':95 'countri':287 'cover':703 'critic':281 'cross':261 'current':84,370,382,398,790 'cycl':102,539,566 'dalla':318 'deg':411 'degre':417,437 'design':274,278,797 'differ':362 'dismal':402 'display':785 'downlight':494 'drive':143,266,490,533,544,642 'driver':263 'duplic':349 'duti':538,565 'easyeda':801 'ebay':226 'effort':5 'enough':81 'entir':179 'even':126,599 'failur':654 'fair':401 'fault':639 'featur':629 'first':175 'fix':647 'floor':53 'front':706,774 'function':487,545 'generic':225 'get':558,744 'go':194,516,695 'goal':133 'ground':52 'half':188 'hardwar':482 'heat':152 'hi':1 'hing':702 'home':728 'hot':25,112,183,357,431,662,671 'hous':30 'i/o':220,760 'i2c':241 'inaccuraci':442 'increas':477 'induct':597 'inlet':332,336 'input':233,256 'insert':245 'instead':155 'insul':131 'intend':388 'iot':375 'ish':751 'led':493 'link':45 'littl':466 'liven':7 'll':12,174,557,632,741 'load':598 'look':473 'loss':153 'low':269 'lower':573 'm':17,21,472,523 'main':283 'mainboard':762,795 'maintain':159 'maximis':617 'meaning':458 'measur':323 'metr':93 'might':572,734 'minimis':150 'mode':640,659 'moder':182 'motherboard':248 'mount':768 'next':583 'night':657,677 'normal':415 'ntc':295,519 'one':193,297,305 'onewir':352,503 'open':710 'oper':169 'optocoupl':259 'origin':291 'outlet':74 'output':163,238,527 'overtemp/overpressure':685 'panel':777 'pass':57 'pcb':796 'pcf8591':227,512 'percent':532,554 'perform':385,399 'perhap':408 'photo':754 'pipe':96,129 'pleasur':758 'plot':380 'plus':763 'poke':713 'post':13 'power':270,766 'probabl':464 'project':15,136 'proport':528 'provid':230,250 'pullup':251 'puls':168,524 'pump':56,98,105,145,172,177,272,335,526,543,551,592,644 'put':633 'pyport':212,780 'question':748 'quit':595 'rate':648 'rather':280 'reach':123 'read':139,368,501,506,613,787 'realli':451 'regist':78 'relat':475 'relief':686 'repli':733 'resistor':252 'result':109 'right':479,722 'rise':205 'roof':36 'run':217,549 'safeti':628 'say':548 'scr':262,264 'second':537,560,563,581 'sensor':71,141,292,321,353,448,505,520,615,653 'server':376 'sever':666 'short':107 'show':778,786 'simpl':294 'simpli':547 'singl':236 'slow':166 'small':405 'solar':24 'soon':750 'soon-ish':749 'sporad':738 'spring':432 'start':607 'step':584 'storag':48 'storey':41 'suppli':284,767 'system':383,690,791 'tank':49,61,125,198,303,329,331,345,359,419,445,455,461,623,664 'temp':164,462,504 'temperatur':70,82,204,324,420,446,476,619,668 'test':497 'thank':268 'thermistor':296 'thing':393,721 'thingsboard':784 'though':127 'three':40 'three-storey':39 'time':121,567 'titano':213,715 'togeth':485 'top':187,308,327 'touchscreen':717 'tri':157,176,587,742 'understand':88 'upload':371 'use':209,223,360 'usual':684 'valv':687 'via':800 'view':757 'voltag':509 'volum':180 'wait':201 'warm':80 'warmer':467 'water':26,58,99,113,184,358,618,663,672 'watt':605 'way':148,342,459 'weather':433 'wire':320 'work':18,608,730 'zero':260"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1698902815
    +visibility: "visible             "
    +apId: "https://aussie.zone/post/3581301"
    +editedAt: null
    +createdAt: DateTimeImmutable @1698827815 {#1640
      date: 2023-11-01 09:36:55.0 +01:00
    }
  }
  +isSingle: false
  +showShortSentence: true
  +showBody: false
  +showMagazineName: true
  +canSeeTrash: false
  +newComments: 0
}
user_inline App\Twig\Components\UserInlineComponent 14.0 MiB 0.27 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: null
    +cover: null
    +email: "dgriffith@aussie.zone"
    +username: "@dgriffith@aussie.zone"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "I’m a technical kinda guy, doing technical kinda stuff."
    +lastActive: DateTime @1729552629 {#273
      date: 2024-10-22 01:17:09.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
    +entries: Doctrine\ORM\PersistentCollection {#190 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
    +posts: Doctrine\ORM\PersistentCollection {#78 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
    +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
    +follows: Doctrine\ORM\PersistentCollection {#1769 …}
    +followers: Doctrine\ORM\PersistentCollection {#1771 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
    +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
    +reports: Doctrine\ORM\PersistentCollection {#2399 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
    +violations: Doctrine\ORM\PersistentCollection {#2421 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
    +awards: Doctrine\ORM\PersistentCollection {#1976 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
    +categories: Doctrine\ORM\PersistentCollection {#1912 …}
    -id: 47433
    -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
    +apId: "dgriffith@aussie.zone"
    +apProfileId: "https://aussie.zone/u/dgriffith"
    +apPublicUrl: "https://aussie.zone/u/dgriffith"
    +apFollowersUrl: null
    +apInboxUrl: "https://aussie.zone/inbox"
    +apDomain: "aussie.zone"
    +apPreferredUsername: "dgriffith"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1706718291 {#276
      date: 2024-01-31 17:24:51.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1696022922 {#272
      date: 2023-09-29 23:28:42.0 +02:00
    }
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\UserInlineComponent {#1348
  +user: App\Entity\User {#260
    +avatar: null
    +cover: null
    +email: "dgriffith@aussie.zone"
    +username: "@dgriffith@aussie.zone"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "I’m a technical kinda guy, doing technical kinda stuff."
    +lastActive: DateTime @1729552629 {#273
      date: 2024-10-22 01:17:09.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
    +entries: Doctrine\ORM\PersistentCollection {#190 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
    +posts: Doctrine\ORM\PersistentCollection {#78 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
    +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
    +follows: Doctrine\ORM\PersistentCollection {#1769 …}
    +followers: Doctrine\ORM\PersistentCollection {#1771 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
    +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
    +reports: Doctrine\ORM\PersistentCollection {#2399 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
    +violations: Doctrine\ORM\PersistentCollection {#2421 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
    +awards: Doctrine\ORM\PersistentCollection {#1976 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
    +categories: Doctrine\ORM\PersistentCollection {#1912 …}
    -id: 47433
    -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
    +apId: "dgriffith@aussie.zone"
    +apProfileId: "https://aussie.zone/u/dgriffith"
    +apPublicUrl: "https://aussie.zone/u/dgriffith"
    +apFollowersUrl: null
    +apInboxUrl: "https://aussie.zone/inbox"
    +apDomain: "aussie.zone"
    +apPreferredUsername: "dgriffith"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1706718291 {#276
      date: 2024-01-31 17:24:51.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1696022922 {#272
      date: 2023-09-29 23:28:42.0 +02:00
    }
  }
  +showAvatar: false
}
date App\Twig\Components\DateComponent 14.0 MiB 0.22 ms
Input props
[
  "date" => DateTimeImmutable @1698827815 {#1640
    date: 2023-11-01 09:36:55.0 +01:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#2547
  +date: DateTimeImmutable @1698827815 {#1640
    date: 2023-11-01 09:36:55.0 +01:00
  }
}
date_edited App\Twig\Components\DateEditedComponent 14.0 MiB 0.19 ms
Input props
[
  "createdAt" => DateTimeImmutable @1698827815 {#1640
    date: 2023-11-01 09:36:55.0 +01:00
  }
  "editedAt" => null
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#2611
  +createdAt: DateTimeImmutable @1698827815 {#1640
    date: 2023-11-01 09:36:55.0 +01:00
  }
  +editedAt: null
}
magazine_inline App\Twig\Components\MagazineInlineComponent 14.0 MiB 0.25 ms
Input props
[
  "magazine" => Proxies\__CG__\App\Entity\Magazine {#1728
    +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
    +name: "electronics@discuss.tchncs.de"
    +title: "electronics"
    +description: """
      **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
      \n
      Rules\n
      -----\n
      \n
      1: Be nice.\n
      \n
      2: Be on-topic (eg: *Electronic*, not *electrical*).\n
      \n
      3: No commercial stuff, buying, selling or valuations.\n
      \n
      4: No circuit design or repair, tools or component questions.\n
      \n
      5: No excessively promoting your own sites, social media, videos etc.\n
      \n
      ---\n
      \n
      *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
      \n
      ---
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 43
    +entryCommentCount: 201
    +postCount: 1
    +postCommentCount: 3
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1723220252 {#2315
      date: 2024-08-09 18:17:32.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
    +entries: Doctrine\ORM\PersistentCollection {#2282 …}
    +posts: Doctrine\ORM\PersistentCollection {#2279 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
    +bans: Doctrine\ORM\PersistentCollection {#2219 …}
    +reports: Doctrine\ORM\PersistentCollection {#2205 …}
    +badges: Doctrine\ORM\PersistentCollection {#2270 …}
    +logs: Doctrine\ORM\PersistentCollection {#2253 …}
    +awards: Doctrine\ORM\PersistentCollection {#2203 …}
    +categories: Doctrine\ORM\PersistentCollection {#2242 …}
    -id: 5
    +apId: "electronics@discuss.tchncs.de"
    +apProfileId: "https://discuss.tchncs.de/c/electronics"
    +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
    +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
    +apInboxUrl: "https://discuss.tchncs.de/inbox"
    +apDomain: "discuss.tchncs.de"
    +apPreferredUsername: "electronics"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1719675646 {#2322
      date: 2024-06-29 17:40:46.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1686642591 {#2321
      date: 2023-06-13 09:49:51.0 +02:00
    }
    +__isInitialized__: true
     …2
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\MagazineInlineComponent {#2676
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1728
    +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
    +name: "electronics@discuss.tchncs.de"
    +title: "electronics"
    +description: """
      **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
      \n
      Rules\n
      -----\n
      \n
      1: Be nice.\n
      \n
      2: Be on-topic (eg: *Electronic*, not *electrical*).\n
      \n
      3: No commercial stuff, buying, selling or valuations.\n
      \n
      4: No circuit design or repair, tools or component questions.\n
      \n
      5: No excessively promoting your own sites, social media, videos etc.\n
      \n
      ---\n
      \n
      *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
      \n
      ---
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 43
    +entryCommentCount: 201
    +postCount: 1
    +postCommentCount: 3
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1723220252 {#2315
      date: 2024-08-09 18:17:32.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
    +entries: Doctrine\ORM\PersistentCollection {#2282 …}
    +posts: Doctrine\ORM\PersistentCollection {#2279 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
    +bans: Doctrine\ORM\PersistentCollection {#2219 …}
    +reports: Doctrine\ORM\PersistentCollection {#2205 …}
    +badges: Doctrine\ORM\PersistentCollection {#2270 …}
    +logs: Doctrine\ORM\PersistentCollection {#2253 …}
    +awards: Doctrine\ORM\PersistentCollection {#2203 …}
    +categories: Doctrine\ORM\PersistentCollection {#2242 …}
    -id: 5
    +apId: "electronics@discuss.tchncs.de"
    +apProfileId: "https://discuss.tchncs.de/c/electronics"
    +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
    +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
    +apInboxUrl: "https://discuss.tchncs.de/inbox"
    +apDomain: "discuss.tchncs.de"
    +apPreferredUsername: "electronics"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1719675646 {#2322
      date: 2024-06-29 17:40:46.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1686642591 {#2321
      date: 2023-06-13 09:49:51.0 +02:00
    }
    +__isInitialized__: true
     …2
  }
  +showTitle: true
  +fullName: false
  +stretchedLink: false
  +showAvatar: false
}
vote App\Twig\Components\VoteComponent 14.0 MiB 0.63 ms
Input props
[
  "subject" => App\Entity\Entry {#1551
    +user: App\Entity\User {#260
      +avatar: null
      +cover: null
      +email: "dgriffith@aussie.zone"
      +username: "@dgriffith@aussie.zone"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "I’m a technical kinda guy, doing technical kinda stuff."
      +lastActive: DateTime @1729552629 {#273
        date: 2024-10-22 01:17:09.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
      +entries: Doctrine\ORM\PersistentCollection {#190 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
      +posts: Doctrine\ORM\PersistentCollection {#78 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
      +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
      +follows: Doctrine\ORM\PersistentCollection {#1769 …}
      +followers: Doctrine\ORM\PersistentCollection {#1771 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
      +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
      +reports: Doctrine\ORM\PersistentCollection {#2399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
      +violations: Doctrine\ORM\PersistentCollection {#2421 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
      +awards: Doctrine\ORM\PersistentCollection {#1976 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
      +categories: Doctrine\ORM\PersistentCollection {#1912 …}
      -id: 47433
      -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
      +apId: "dgriffith@aussie.zone"
      +apProfileId: "https://aussie.zone/u/dgriffith"
      +apPublicUrl: "https://aussie.zone/u/dgriffith"
      +apFollowersUrl: null
      +apInboxUrl: "https://aussie.zone/inbox"
      +apDomain: "aussie.zone"
      +apPreferredUsername: "dgriffith"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1706718291 {#276
        date: 2024-01-31 17:24:51.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1696022922 {#272
        date: 2023-09-29 23:28:42.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1728
      +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
      +name: "electronics@discuss.tchncs.de"
      +title: "electronics"
      +description: """
        **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: No circuit design or repair, tools or component questions.\n
        \n
        5: No excessively promoting your own sites, social media, videos etc.\n
        \n
        ---\n
        \n
        *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 43
      +entryCommentCount: 201
      +postCount: 1
      +postCommentCount: 3
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1723220252 {#2315
        date: 2024-08-09 18:17:32.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
      +entries: Doctrine\ORM\PersistentCollection {#2282 …}
      +posts: Doctrine\ORM\PersistentCollection {#2279 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
      +bans: Doctrine\ORM\PersistentCollection {#2219 …}
      +reports: Doctrine\ORM\PersistentCollection {#2205 …}
      +badges: Doctrine\ORM\PersistentCollection {#2270 …}
      +logs: Doctrine\ORM\PersistentCollection {#2253 …}
      +awards: Doctrine\ORM\PersistentCollection {#2203 …}
      +categories: Doctrine\ORM\PersistentCollection {#2242 …}
      -id: 5
      +apId: "electronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/electronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "electronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1719675646 {#2322
        date: 2024-06-29 17:40:46.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1686642591 {#2321
        date: 2023-06-13 09:49:51.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1689 …}
    +slug: "My-customisable-solar-hot-water-system-controller-project-in-progress"
    +title: "My customisable solar hot water system controller (project in progress)"
    +url: null
    +body: """
      Hi all,\n
      \n
      In an effort to liven up this community, I’ll post this project I’m working on.\n
      \n
      I’m building a solar hot water controller for my house. The collector is on the roof of a three-storey building, it is linked to a storage tank on the ground floor. A circulating pump passes water from the tank to the collectors and back again when a temperature sensor on the outlet of the collector registers a warm enough temperature.\n
      \n
      The current controller does not understand that there is 15 metres of copper piping to pump water through and cycles the circulating pump in short bursts, resulting in the hot water at the collector cooling considerably by the time it reaches the tank (even though the pipes are insulated). The goal of my project is to read the sensor and drive the pump in a way to minimise these heat losses. Basically instead of trying to maintain a consistent collector output temp with slow constant pulsed operation of the pump, I’ll first try pumping the entire volume of moderately hot water from the top half of the collector in one go back to the tank and then waiting until the temperature rises again.\n
      \n
      I am using an Adafruit PyPortal Titano as the controller, running circuitpython. For I/O I am using a generic ebay PCF8591 board, which provides 4 analog input and a single analog output over an I2C bus. This is inserted into a motherboard that provides pullup resistors for the analog inputs and an optocoupled zero crossing SCR driver + SCR to drive the (thankfully low power) circulating pump. Board design is my own, design is rather critical as mains supply in my country is 240V.\n
      \n
      The original sensors are simple NTC thermistors, one at the bottom of the tank, and one at the top of the collector. I have also added 4 other Dallas 1-wire sensors to measure temperatures at the top of tank, ambient, tank inlet and collector pump inlet which is 1/3rd of the way up the tank. I have a duplicate of the onewire sensors already on the hot water tank using a different adafruit board and circuitpython. Their readings are currently uploaded to my own IOT server and I can plot the current system’s performance, and I intend to do the same thing with this board.\n
      \n
      The current performance is fairly dismal, a very small bump of perhaps 0.5 - 1 deg C in the normally 55 degree C tank temperature around 12pm to 1pm, and this is in Australia in hot spring weather of 28-32 degrees C.(There’s some inaccuracy of the tank temperatures, the sensors aren’t really bonded to the tank in any meaningful way, so tank temp is probably a little warmer than this. But I’m looking for relative temperature increases anyway)\n
      \n
      Right now , the hardware is all together and functional, and is driving a 13W LED downlight as a test, and I can read the onewire temp sensors, read an analog voltage on the PCF8591 board (which will go to the NTC sensors), and I’m pulsing the pump output proportionally from 0-100 percent drive on a 30 second duty cycle, so that a pump drive function can simply say “run the pump at 70 percent” and you’ll get 21 seconds on, 9 seconds off. Duty cycle time is adjustable, so I might lower it a bit to 15 or 10 seconds.\n
      \n
      The next step is to try it on the circulating pump (which is quite an inductive load, even if it is only 20 watts), and start working on an algorithm that reads the sensors and maximises water temperature back to the tank. There are a few safety features that I’ll put in there, such as a “fault mode” to drive the pump at a fixed rate if there is a sensor failure, and a “night cool” mode if the hot water tank is severely over temperature to circulate hot water to the collector at night to cool it. There are the usual overtemp/overpressure relief valves in the system already.\n
      \n
      All this is going in a case with a clear hinged cover on the front so I can open it and poke the Titano’s touchscreen to do some things.\n
      \n
      Right now I am away from home from work, so my replies might be a bit sporadic, but I’ll try to get back to any questions soon-ish.\n
      \n
      A few photos for your viewing pleasure:\n
      \n
      The I/O and mainboard plus a 5V power supply mounted up: ![](https://aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)\n
      \n
      The front of the panel, showing the Pyportal: ![](https://aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)\n
      \n
      Thingsboard display showing readings from the current system: ![](https://aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)\n
      \n
      Mainboard PCB design and construction via EasyEDA: ![](https://aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)\n
      \n
      ![](https://aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 7
    +favouriteCount: 22
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1698884219 {#1442
      date: 2023-11-02 01:16:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1686 …}
    +votes: Doctrine\ORM\PersistentCollection {#1692 …}
    +reports: Doctrine\ORM\PersistentCollection {#1711 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1716 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1715 …}
    +badges: Doctrine\ORM\PersistentCollection {#2462 …}
    +children: []
    -id: 8890
    -titleTs: "'control':7 'customis':2 'hot':4 'progress':10 'project':8 'solar':3 'system':6 'water':5"
    -bodyTs: "'-100':531 '-32':436 '/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':772 '/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':783 '/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':807 '/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':794 '/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':804 '0':530 '0.5':409 '1':319,410 '1/3rd':339 '10':580 '12pm':422 '13w':492 '15':92,578 '1pm':424 '20':604 '21':559 '240v':289 '28':435 '30':536 '4':231,316 '55':416 '5v':765 '70':553 '9':562 'ad':315 'adafruit':211,363 'adjust':569 'algorithm':611 'alreadi':354,691 'also':314 'ambient':330 'analog':232,237,255,508 'anyway':478 'aren':449 'around':421 'aussie.zone':771,782,793,803,806 'aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':770 'aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':781 'aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':805 'aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':792 'aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':802 'australia':429 'away':726 'back':66,195,620,745 'basic':154 'bit':576,737 'board':228,273,364,396,513 'bond':452 'bottom':300 'build':22,42 'bump':406 'burst':108 'bus':242 'c':412,418,438 'case':698 'circuitpython':218,366 'circul':55,104,271,591,670 'clear':701 'collector':32,64,77,116,162,191,311,334,675 'communiti':10 'consider':118 'consist':161 'constant':167 'construct':799 'control':27,85,216 'cool':117,658,679 'copper':95 'countri':287 'cover':703 'critic':281 'cross':261 'current':84,370,382,398,790 'cycl':102,539,566 'dalla':318 'deg':411 'degre':417,437 'design':274,278,797 'differ':362 'dismal':402 'display':785 'downlight':494 'drive':143,266,490,533,544,642 'driver':263 'duplic':349 'duti':538,565 'easyeda':801 'ebay':226 'effort':5 'enough':81 'entir':179 'even':126,599 'failur':654 'fair':401 'fault':639 'featur':629 'first':175 'fix':647 'floor':53 'front':706,774 'function':487,545 'generic':225 'get':558,744 'go':194,516,695 'goal':133 'ground':52 'half':188 'hardwar':482 'heat':152 'hi':1 'hing':702 'home':728 'hot':25,112,183,357,431,662,671 'hous':30 'i/o':220,760 'i2c':241 'inaccuraci':442 'increas':477 'induct':597 'inlet':332,336 'input':233,256 'insert':245 'instead':155 'insul':131 'intend':388 'iot':375 'ish':751 'led':493 'link':45 'littl':466 'liven':7 'll':12,174,557,632,741 'load':598 'look':473 'loss':153 'low':269 'lower':573 'm':17,21,472,523 'main':283 'mainboard':762,795 'maintain':159 'maximis':617 'meaning':458 'measur':323 'metr':93 'might':572,734 'minimis':150 'mode':640,659 'moder':182 'motherboard':248 'mount':768 'next':583 'night':657,677 'normal':415 'ntc':295,519 'one':193,297,305 'onewir':352,503 'open':710 'oper':169 'optocoupl':259 'origin':291 'outlet':74 'output':163,238,527 'overtemp/overpressure':685 'panel':777 'pass':57 'pcb':796 'pcf8591':227,512 'percent':532,554 'perform':385,399 'perhap':408 'photo':754 'pipe':96,129 'pleasur':758 'plot':380 'plus':763 'poke':713 'post':13 'power':270,766 'probabl':464 'project':15,136 'proport':528 'provid':230,250 'pullup':251 'puls':168,524 'pump':56,98,105,145,172,177,272,335,526,543,551,592,644 'put':633 'pyport':212,780 'question':748 'quit':595 'rate':648 'rather':280 'reach':123 'read':139,368,501,506,613,787 'realli':451 'regist':78 'relat':475 'relief':686 'repli':733 'resistor':252 'result':109 'right':479,722 'rise':205 'roof':36 'run':217,549 'safeti':628 'say':548 'scr':262,264 'second':537,560,563,581 'sensor':71,141,292,321,353,448,505,520,615,653 'server':376 'sever':666 'short':107 'show':778,786 'simpl':294 'simpli':547 'singl':236 'slow':166 'small':405 'solar':24 'soon':750 'soon-ish':749 'sporad':738 'spring':432 'start':607 'step':584 'storag':48 'storey':41 'suppli':284,767 'system':383,690,791 'tank':49,61,125,198,303,329,331,345,359,419,445,455,461,623,664 'temp':164,462,504 'temperatur':70,82,204,324,420,446,476,619,668 'test':497 'thank':268 'thermistor':296 'thing':393,721 'thingsboard':784 'though':127 'three':40 'three-storey':39 'time':121,567 'titano':213,715 'togeth':485 'top':187,308,327 'touchscreen':717 'tri':157,176,587,742 'understand':88 'upload':371 'use':209,223,360 'usual':684 'valv':687 'via':800 'view':757 'voltag':509 'volum':180 'wait':201 'warm':80 'warmer':467 'water':26,58,99,113,184,358,618,663,672 'watt':605 'way':148,342,459 'weather':433 'wire':320 'work':18,608,730 'zero':260"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1698902815
    +visibility: "visible             "
    +apId: "https://aussie.zone/post/3581301"
    +editedAt: null
    +createdAt: DateTimeImmutable @1698827815 {#1640
      date: 2023-11-01 09:36:55.0 +01:00
    }
  }
]
Attributes
[]
Component
App\Twig\Components\VoteComponent {#2742
  +subject: App\Entity\Entry {#1551
    +user: App\Entity\User {#260
      +avatar: null
      +cover: null
      +email: "dgriffith@aussie.zone"
      +username: "@dgriffith@aussie.zone"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "I’m a technical kinda guy, doing technical kinda stuff."
      +lastActive: DateTime @1729552629 {#273
        date: 2024-10-22 01:17:09.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
      +entries: Doctrine\ORM\PersistentCollection {#190 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
      +posts: Doctrine\ORM\PersistentCollection {#78 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
      +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
      +follows: Doctrine\ORM\PersistentCollection {#1769 …}
      +followers: Doctrine\ORM\PersistentCollection {#1771 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
      +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
      +reports: Doctrine\ORM\PersistentCollection {#2399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
      +violations: Doctrine\ORM\PersistentCollection {#2421 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
      +awards: Doctrine\ORM\PersistentCollection {#1976 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
      +categories: Doctrine\ORM\PersistentCollection {#1912 …}
      -id: 47433
      -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
      +apId: "dgriffith@aussie.zone"
      +apProfileId: "https://aussie.zone/u/dgriffith"
      +apPublicUrl: "https://aussie.zone/u/dgriffith"
      +apFollowersUrl: null
      +apInboxUrl: "https://aussie.zone/inbox"
      +apDomain: "aussie.zone"
      +apPreferredUsername: "dgriffith"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1706718291 {#276
        date: 2024-01-31 17:24:51.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1696022922 {#272
        date: 2023-09-29 23:28:42.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1728
      +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
      +name: "electronics@discuss.tchncs.de"
      +title: "electronics"
      +description: """
        **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: No circuit design or repair, tools or component questions.\n
        \n
        5: No excessively promoting your own sites, social media, videos etc.\n
        \n
        ---\n
        \n
        *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 43
      +entryCommentCount: 201
      +postCount: 1
      +postCommentCount: 3
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1723220252 {#2315
        date: 2024-08-09 18:17:32.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
      +entries: Doctrine\ORM\PersistentCollection {#2282 …}
      +posts: Doctrine\ORM\PersistentCollection {#2279 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
      +bans: Doctrine\ORM\PersistentCollection {#2219 …}
      +reports: Doctrine\ORM\PersistentCollection {#2205 …}
      +badges: Doctrine\ORM\PersistentCollection {#2270 …}
      +logs: Doctrine\ORM\PersistentCollection {#2253 …}
      +awards: Doctrine\ORM\PersistentCollection {#2203 …}
      +categories: Doctrine\ORM\PersistentCollection {#2242 …}
      -id: 5
      +apId: "electronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/electronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "electronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1719675646 {#2322
        date: 2024-06-29 17:40:46.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1686642591 {#2321
        date: 2023-06-13 09:49:51.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1689 …}
    +slug: "My-customisable-solar-hot-water-system-controller-project-in-progress"
    +title: "My customisable solar hot water system controller (project in progress)"
    +url: null
    +body: """
      Hi all,\n
      \n
      In an effort to liven up this community, I’ll post this project I’m working on.\n
      \n
      I’m building a solar hot water controller for my house. The collector is on the roof of a three-storey building, it is linked to a storage tank on the ground floor. A circulating pump passes water from the tank to the collectors and back again when a temperature sensor on the outlet of the collector registers a warm enough temperature.\n
      \n
      The current controller does not understand that there is 15 metres of copper piping to pump water through and cycles the circulating pump in short bursts, resulting in the hot water at the collector cooling considerably by the time it reaches the tank (even though the pipes are insulated). The goal of my project is to read the sensor and drive the pump in a way to minimise these heat losses. Basically instead of trying to maintain a consistent collector output temp with slow constant pulsed operation of the pump, I’ll first try pumping the entire volume of moderately hot water from the top half of the collector in one go back to the tank and then waiting until the temperature rises again.\n
      \n
      I am using an Adafruit PyPortal Titano as the controller, running circuitpython. For I/O I am using a generic ebay PCF8591 board, which provides 4 analog input and a single analog output over an I2C bus. This is inserted into a motherboard that provides pullup resistors for the analog inputs and an optocoupled zero crossing SCR driver + SCR to drive the (thankfully low power) circulating pump. Board design is my own, design is rather critical as mains supply in my country is 240V.\n
      \n
      The original sensors are simple NTC thermistors, one at the bottom of the tank, and one at the top of the collector. I have also added 4 other Dallas 1-wire sensors to measure temperatures at the top of tank, ambient, tank inlet and collector pump inlet which is 1/3rd of the way up the tank. I have a duplicate of the onewire sensors already on the hot water tank using a different adafruit board and circuitpython. Their readings are currently uploaded to my own IOT server and I can plot the current system’s performance, and I intend to do the same thing with this board.\n
      \n
      The current performance is fairly dismal, a very small bump of perhaps 0.5 - 1 deg C in the normally 55 degree C tank temperature around 12pm to 1pm, and this is in Australia in hot spring weather of 28-32 degrees C.(There’s some inaccuracy of the tank temperatures, the sensors aren’t really bonded to the tank in any meaningful way, so tank temp is probably a little warmer than this. But I’m looking for relative temperature increases anyway)\n
      \n
      Right now , the hardware is all together and functional, and is driving a 13W LED downlight as a test, and I can read the onewire temp sensors, read an analog voltage on the PCF8591 board (which will go to the NTC sensors), and I’m pulsing the pump output proportionally from 0-100 percent drive on a 30 second duty cycle, so that a pump drive function can simply say “run the pump at 70 percent” and you’ll get 21 seconds on, 9 seconds off. Duty cycle time is adjustable, so I might lower it a bit to 15 or 10 seconds.\n
      \n
      The next step is to try it on the circulating pump (which is quite an inductive load, even if it is only 20 watts), and start working on an algorithm that reads the sensors and maximises water temperature back to the tank. There are a few safety features that I’ll put in there, such as a “fault mode” to drive the pump at a fixed rate if there is a sensor failure, and a “night cool” mode if the hot water tank is severely over temperature to circulate hot water to the collector at night to cool it. There are the usual overtemp/overpressure relief valves in the system already.\n
      \n
      All this is going in a case with a clear hinged cover on the front so I can open it and poke the Titano’s touchscreen to do some things.\n
      \n
      Right now I am away from home from work, so my replies might be a bit sporadic, but I’ll try to get back to any questions soon-ish.\n
      \n
      A few photos for your viewing pleasure:\n
      \n
      The I/O and mainboard plus a 5V power supply mounted up: ![](https://aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)\n
      \n
      The front of the panel, showing the Pyportal: ![](https://aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)\n
      \n
      Thingsboard display showing readings from the current system: ![](https://aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)\n
      \n
      Mainboard PCB design and construction via EasyEDA: ![](https://aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)\n
      \n
      ![](https://aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 7
    +favouriteCount: 22
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1698884219 {#1442
      date: 2023-11-02 01:16:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1686 …}
    +votes: Doctrine\ORM\PersistentCollection {#1692 …}
    +reports: Doctrine\ORM\PersistentCollection {#1711 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1716 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1715 …}
    +badges: Doctrine\ORM\PersistentCollection {#2462 …}
    +children: []
    -id: 8890
    -titleTs: "'control':7 'customis':2 'hot':4 'progress':10 'project':8 'solar':3 'system':6 'water':5"
    -bodyTs: "'-100':531 '-32':436 '/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':772 '/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':783 '/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':807 '/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':794 '/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':804 '0':530 '0.5':409 '1':319,410 '1/3rd':339 '10':580 '12pm':422 '13w':492 '15':92,578 '1pm':424 '20':604 '21':559 '240v':289 '28':435 '30':536 '4':231,316 '55':416 '5v':765 '70':553 '9':562 'ad':315 'adafruit':211,363 'adjust':569 'algorithm':611 'alreadi':354,691 'also':314 'ambient':330 'analog':232,237,255,508 'anyway':478 'aren':449 'around':421 'aussie.zone':771,782,793,803,806 'aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':770 'aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':781 'aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':805 'aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':792 'aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':802 'australia':429 'away':726 'back':66,195,620,745 'basic':154 'bit':576,737 'board':228,273,364,396,513 'bond':452 'bottom':300 'build':22,42 'bump':406 'burst':108 'bus':242 'c':412,418,438 'case':698 'circuitpython':218,366 'circul':55,104,271,591,670 'clear':701 'collector':32,64,77,116,162,191,311,334,675 'communiti':10 'consider':118 'consist':161 'constant':167 'construct':799 'control':27,85,216 'cool':117,658,679 'copper':95 'countri':287 'cover':703 'critic':281 'cross':261 'current':84,370,382,398,790 'cycl':102,539,566 'dalla':318 'deg':411 'degre':417,437 'design':274,278,797 'differ':362 'dismal':402 'display':785 'downlight':494 'drive':143,266,490,533,544,642 'driver':263 'duplic':349 'duti':538,565 'easyeda':801 'ebay':226 'effort':5 'enough':81 'entir':179 'even':126,599 'failur':654 'fair':401 'fault':639 'featur':629 'first':175 'fix':647 'floor':53 'front':706,774 'function':487,545 'generic':225 'get':558,744 'go':194,516,695 'goal':133 'ground':52 'half':188 'hardwar':482 'heat':152 'hi':1 'hing':702 'home':728 'hot':25,112,183,357,431,662,671 'hous':30 'i/o':220,760 'i2c':241 'inaccuraci':442 'increas':477 'induct':597 'inlet':332,336 'input':233,256 'insert':245 'instead':155 'insul':131 'intend':388 'iot':375 'ish':751 'led':493 'link':45 'littl':466 'liven':7 'll':12,174,557,632,741 'load':598 'look':473 'loss':153 'low':269 'lower':573 'm':17,21,472,523 'main':283 'mainboard':762,795 'maintain':159 'maximis':617 'meaning':458 'measur':323 'metr':93 'might':572,734 'minimis':150 'mode':640,659 'moder':182 'motherboard':248 'mount':768 'next':583 'night':657,677 'normal':415 'ntc':295,519 'one':193,297,305 'onewir':352,503 'open':710 'oper':169 'optocoupl':259 'origin':291 'outlet':74 'output':163,238,527 'overtemp/overpressure':685 'panel':777 'pass':57 'pcb':796 'pcf8591':227,512 'percent':532,554 'perform':385,399 'perhap':408 'photo':754 'pipe':96,129 'pleasur':758 'plot':380 'plus':763 'poke':713 'post':13 'power':270,766 'probabl':464 'project':15,136 'proport':528 'provid':230,250 'pullup':251 'puls':168,524 'pump':56,98,105,145,172,177,272,335,526,543,551,592,644 'put':633 'pyport':212,780 'question':748 'quit':595 'rate':648 'rather':280 'reach':123 'read':139,368,501,506,613,787 'realli':451 'regist':78 'relat':475 'relief':686 'repli':733 'resistor':252 'result':109 'right':479,722 'rise':205 'roof':36 'run':217,549 'safeti':628 'say':548 'scr':262,264 'second':537,560,563,581 'sensor':71,141,292,321,353,448,505,520,615,653 'server':376 'sever':666 'short':107 'show':778,786 'simpl':294 'simpli':547 'singl':236 'slow':166 'small':405 'solar':24 'soon':750 'soon-ish':749 'sporad':738 'spring':432 'start':607 'step':584 'storag':48 'storey':41 'suppli':284,767 'system':383,690,791 'tank':49,61,125,198,303,329,331,345,359,419,445,455,461,623,664 'temp':164,462,504 'temperatur':70,82,204,324,420,446,476,619,668 'test':497 'thank':268 'thermistor':296 'thing':393,721 'thingsboard':784 'though':127 'three':40 'three-storey':39 'time':121,567 'titano':213,715 'togeth':485 'top':187,308,327 'touchscreen':717 'tri':157,176,587,742 'understand':88 'upload':371 'use':209,223,360 'usual':684 'valv':687 'via':800 'view':757 'voltag':509 'volum':180 'wait':201 'warm':80 'warmer':467 'water':26,58,99,113,184,358,618,663,672 'watt':605 'way':148,342,459 'weather':433 'wire':320 'work':18,608,730 'zero':260"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1698902815
    +visibility: "visible             "
    +apId: "https://aussie.zone/post/3581301"
    +editedAt: null
    +createdAt: DateTimeImmutable @1698827815 {#1640
      date: 2023-11-01 09:36:55.0 +01:00
    }
  }
  +formDest: "entry"
  +showDownvote: true
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
boost App\Twig\Components\BoostComponent 14.0 MiB 4.22 ms
Input props
[
  "subject" => App\Entity\Entry {#1551
    +user: App\Entity\User {#260
      +avatar: null
      +cover: null
      +email: "dgriffith@aussie.zone"
      +username: "@dgriffith@aussie.zone"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "I’m a technical kinda guy, doing technical kinda stuff."
      +lastActive: DateTime @1729552629 {#273
        date: 2024-10-22 01:17:09.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
      +entries: Doctrine\ORM\PersistentCollection {#190 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
      +posts: Doctrine\ORM\PersistentCollection {#78 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
      +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
      +follows: Doctrine\ORM\PersistentCollection {#1769 …}
      +followers: Doctrine\ORM\PersistentCollection {#1771 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
      +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
      +reports: Doctrine\ORM\PersistentCollection {#2399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
      +violations: Doctrine\ORM\PersistentCollection {#2421 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
      +awards: Doctrine\ORM\PersistentCollection {#1976 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
      +categories: Doctrine\ORM\PersistentCollection {#1912 …}
      -id: 47433
      -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
      +apId: "dgriffith@aussie.zone"
      +apProfileId: "https://aussie.zone/u/dgriffith"
      +apPublicUrl: "https://aussie.zone/u/dgriffith"
      +apFollowersUrl: null
      +apInboxUrl: "https://aussie.zone/inbox"
      +apDomain: "aussie.zone"
      +apPreferredUsername: "dgriffith"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1706718291 {#276
        date: 2024-01-31 17:24:51.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1696022922 {#272
        date: 2023-09-29 23:28:42.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1728
      +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
      +name: "electronics@discuss.tchncs.de"
      +title: "electronics"
      +description: """
        **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: No circuit design or repair, tools or component questions.\n
        \n
        5: No excessively promoting your own sites, social media, videos etc.\n
        \n
        ---\n
        \n
        *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 43
      +entryCommentCount: 201
      +postCount: 1
      +postCommentCount: 3
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1723220252 {#2315
        date: 2024-08-09 18:17:32.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
      +entries: Doctrine\ORM\PersistentCollection {#2282 …}
      +posts: Doctrine\ORM\PersistentCollection {#2279 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
      +bans: Doctrine\ORM\PersistentCollection {#2219 …}
      +reports: Doctrine\ORM\PersistentCollection {#2205 …}
      +badges: Doctrine\ORM\PersistentCollection {#2270 …}
      +logs: Doctrine\ORM\PersistentCollection {#2253 …}
      +awards: Doctrine\ORM\PersistentCollection {#2203 …}
      +categories: Doctrine\ORM\PersistentCollection {#2242 …}
      -id: 5
      +apId: "electronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/electronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "electronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1719675646 {#2322
        date: 2024-06-29 17:40:46.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1686642591 {#2321
        date: 2023-06-13 09:49:51.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1689 …}
    +slug: "My-customisable-solar-hot-water-system-controller-project-in-progress"
    +title: "My customisable solar hot water system controller (project in progress)"
    +url: null
    +body: """
      Hi all,\n
      \n
      In an effort to liven up this community, I’ll post this project I’m working on.\n
      \n
      I’m building a solar hot water controller for my house. The collector is on the roof of a three-storey building, it is linked to a storage tank on the ground floor. A circulating pump passes water from the tank to the collectors and back again when a temperature sensor on the outlet of the collector registers a warm enough temperature.\n
      \n
      The current controller does not understand that there is 15 metres of copper piping to pump water through and cycles the circulating pump in short bursts, resulting in the hot water at the collector cooling considerably by the time it reaches the tank (even though the pipes are insulated). The goal of my project is to read the sensor and drive the pump in a way to minimise these heat losses. Basically instead of trying to maintain a consistent collector output temp with slow constant pulsed operation of the pump, I’ll first try pumping the entire volume of moderately hot water from the top half of the collector in one go back to the tank and then waiting until the temperature rises again.\n
      \n
      I am using an Adafruit PyPortal Titano as the controller, running circuitpython. For I/O I am using a generic ebay PCF8591 board, which provides 4 analog input and a single analog output over an I2C bus. This is inserted into a motherboard that provides pullup resistors for the analog inputs and an optocoupled zero crossing SCR driver + SCR to drive the (thankfully low power) circulating pump. Board design is my own, design is rather critical as mains supply in my country is 240V.\n
      \n
      The original sensors are simple NTC thermistors, one at the bottom of the tank, and one at the top of the collector. I have also added 4 other Dallas 1-wire sensors to measure temperatures at the top of tank, ambient, tank inlet and collector pump inlet which is 1/3rd of the way up the tank. I have a duplicate of the onewire sensors already on the hot water tank using a different adafruit board and circuitpython. Their readings are currently uploaded to my own IOT server and I can plot the current system’s performance, and I intend to do the same thing with this board.\n
      \n
      The current performance is fairly dismal, a very small bump of perhaps 0.5 - 1 deg C in the normally 55 degree C tank temperature around 12pm to 1pm, and this is in Australia in hot spring weather of 28-32 degrees C.(There’s some inaccuracy of the tank temperatures, the sensors aren’t really bonded to the tank in any meaningful way, so tank temp is probably a little warmer than this. But I’m looking for relative temperature increases anyway)\n
      \n
      Right now , the hardware is all together and functional, and is driving a 13W LED downlight as a test, and I can read the onewire temp sensors, read an analog voltage on the PCF8591 board (which will go to the NTC sensors), and I’m pulsing the pump output proportionally from 0-100 percent drive on a 30 second duty cycle, so that a pump drive function can simply say “run the pump at 70 percent” and you’ll get 21 seconds on, 9 seconds off. Duty cycle time is adjustable, so I might lower it a bit to 15 or 10 seconds.\n
      \n
      The next step is to try it on the circulating pump (which is quite an inductive load, even if it is only 20 watts), and start working on an algorithm that reads the sensors and maximises water temperature back to the tank. There are a few safety features that I’ll put in there, such as a “fault mode” to drive the pump at a fixed rate if there is a sensor failure, and a “night cool” mode if the hot water tank is severely over temperature to circulate hot water to the collector at night to cool it. There are the usual overtemp/overpressure relief valves in the system already.\n
      \n
      All this is going in a case with a clear hinged cover on the front so I can open it and poke the Titano’s touchscreen to do some things.\n
      \n
      Right now I am away from home from work, so my replies might be a bit sporadic, but I’ll try to get back to any questions soon-ish.\n
      \n
      A few photos for your viewing pleasure:\n
      \n
      The I/O and mainboard plus a 5V power supply mounted up: ![](https://aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)\n
      \n
      The front of the panel, showing the Pyportal: ![](https://aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)\n
      \n
      Thingsboard display showing readings from the current system: ![](https://aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)\n
      \n
      Mainboard PCB design and construction via EasyEDA: ![](https://aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)\n
      \n
      ![](https://aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 7
    +favouriteCount: 22
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1698884219 {#1442
      date: 2023-11-02 01:16:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1686 …}
    +votes: Doctrine\ORM\PersistentCollection {#1692 …}
    +reports: Doctrine\ORM\PersistentCollection {#1711 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1716 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1715 …}
    +badges: Doctrine\ORM\PersistentCollection {#2462 …}
    +children: []
    -id: 8890
    -titleTs: "'control':7 'customis':2 'hot':4 'progress':10 'project':8 'solar':3 'system':6 'water':5"
    -bodyTs: "'-100':531 '-32':436 '/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':772 '/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':783 '/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':807 '/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':794 '/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':804 '0':530 '0.5':409 '1':319,410 '1/3rd':339 '10':580 '12pm':422 '13w':492 '15':92,578 '1pm':424 '20':604 '21':559 '240v':289 '28':435 '30':536 '4':231,316 '55':416 '5v':765 '70':553 '9':562 'ad':315 'adafruit':211,363 'adjust':569 'algorithm':611 'alreadi':354,691 'also':314 'ambient':330 'analog':232,237,255,508 'anyway':478 'aren':449 'around':421 'aussie.zone':771,782,793,803,806 'aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':770 'aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':781 'aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':805 'aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':792 'aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':802 'australia':429 'away':726 'back':66,195,620,745 'basic':154 'bit':576,737 'board':228,273,364,396,513 'bond':452 'bottom':300 'build':22,42 'bump':406 'burst':108 'bus':242 'c':412,418,438 'case':698 'circuitpython':218,366 'circul':55,104,271,591,670 'clear':701 'collector':32,64,77,116,162,191,311,334,675 'communiti':10 'consider':118 'consist':161 'constant':167 'construct':799 'control':27,85,216 'cool':117,658,679 'copper':95 'countri':287 'cover':703 'critic':281 'cross':261 'current':84,370,382,398,790 'cycl':102,539,566 'dalla':318 'deg':411 'degre':417,437 'design':274,278,797 'differ':362 'dismal':402 'display':785 'downlight':494 'drive':143,266,490,533,544,642 'driver':263 'duplic':349 'duti':538,565 'easyeda':801 'ebay':226 'effort':5 'enough':81 'entir':179 'even':126,599 'failur':654 'fair':401 'fault':639 'featur':629 'first':175 'fix':647 'floor':53 'front':706,774 'function':487,545 'generic':225 'get':558,744 'go':194,516,695 'goal':133 'ground':52 'half':188 'hardwar':482 'heat':152 'hi':1 'hing':702 'home':728 'hot':25,112,183,357,431,662,671 'hous':30 'i/o':220,760 'i2c':241 'inaccuraci':442 'increas':477 'induct':597 'inlet':332,336 'input':233,256 'insert':245 'instead':155 'insul':131 'intend':388 'iot':375 'ish':751 'led':493 'link':45 'littl':466 'liven':7 'll':12,174,557,632,741 'load':598 'look':473 'loss':153 'low':269 'lower':573 'm':17,21,472,523 'main':283 'mainboard':762,795 'maintain':159 'maximis':617 'meaning':458 'measur':323 'metr':93 'might':572,734 'minimis':150 'mode':640,659 'moder':182 'motherboard':248 'mount':768 'next':583 'night':657,677 'normal':415 'ntc':295,519 'one':193,297,305 'onewir':352,503 'open':710 'oper':169 'optocoupl':259 'origin':291 'outlet':74 'output':163,238,527 'overtemp/overpressure':685 'panel':777 'pass':57 'pcb':796 'pcf8591':227,512 'percent':532,554 'perform':385,399 'perhap':408 'photo':754 'pipe':96,129 'pleasur':758 'plot':380 'plus':763 'poke':713 'post':13 'power':270,766 'probabl':464 'project':15,136 'proport':528 'provid':230,250 'pullup':251 'puls':168,524 'pump':56,98,105,145,172,177,272,335,526,543,551,592,644 'put':633 'pyport':212,780 'question':748 'quit':595 'rate':648 'rather':280 'reach':123 'read':139,368,501,506,613,787 'realli':451 'regist':78 'relat':475 'relief':686 'repli':733 'resistor':252 'result':109 'right':479,722 'rise':205 'roof':36 'run':217,549 'safeti':628 'say':548 'scr':262,264 'second':537,560,563,581 'sensor':71,141,292,321,353,448,505,520,615,653 'server':376 'sever':666 'short':107 'show':778,786 'simpl':294 'simpli':547 'singl':236 'slow':166 'small':405 'solar':24 'soon':750 'soon-ish':749 'sporad':738 'spring':432 'start':607 'step':584 'storag':48 'storey':41 'suppli':284,767 'system':383,690,791 'tank':49,61,125,198,303,329,331,345,359,419,445,455,461,623,664 'temp':164,462,504 'temperatur':70,82,204,324,420,446,476,619,668 'test':497 'thank':268 'thermistor':296 'thing':393,721 'thingsboard':784 'though':127 'three':40 'three-storey':39 'time':121,567 'titano':213,715 'togeth':485 'top':187,308,327 'touchscreen':717 'tri':157,176,587,742 'understand':88 'upload':371 'use':209,223,360 'usual':684 'valv':687 'via':800 'view':757 'voltag':509 'volum':180 'wait':201 'warm':80 'warmer':467 'water':26,58,99,113,184,358,618,663,672 'watt':605 'way':148,342,459 'weather':433 'wire':320 'work':18,608,730 'zero':260"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1698902815
    +visibility: "visible             "
    +apId: "https://aussie.zone/post/3581301"
    +editedAt: null
    +createdAt: DateTimeImmutable @1698827815 {#1640
      date: 2023-11-01 09:36:55.0 +01:00
    }
  }
]
Attributes
[]
Component
App\Twig\Components\BoostComponent {#2809
  +formDest: "entry"
  +subject: App\Entity\Entry {#1551
    +user: App\Entity\User {#260
      +avatar: null
      +cover: null
      +email: "dgriffith@aussie.zone"
      +username: "@dgriffith@aussie.zone"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "I’m a technical kinda guy, doing technical kinda stuff."
      +lastActive: DateTime @1729552629 {#273
        date: 2024-10-22 01:17:09.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
      +entries: Doctrine\ORM\PersistentCollection {#190 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
      +posts: Doctrine\ORM\PersistentCollection {#78 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
      +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
      +follows: Doctrine\ORM\PersistentCollection {#1769 …}
      +followers: Doctrine\ORM\PersistentCollection {#1771 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
      +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
      +reports: Doctrine\ORM\PersistentCollection {#2399 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
      +violations: Doctrine\ORM\PersistentCollection {#2421 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
      +awards: Doctrine\ORM\PersistentCollection {#1976 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
      +categories: Doctrine\ORM\PersistentCollection {#1912 …}
      -id: 47433
      -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
      +apId: "dgriffith@aussie.zone"
      +apProfileId: "https://aussie.zone/u/dgriffith"
      +apPublicUrl: "https://aussie.zone/u/dgriffith"
      +apFollowersUrl: null
      +apInboxUrl: "https://aussie.zone/inbox"
      +apDomain: "aussie.zone"
      +apPreferredUsername: "dgriffith"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1706718291 {#276
        date: 2024-01-31 17:24:51.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1696022922 {#272
        date: 2023-09-29 23:28:42.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1728
      +icon: Proxies\__CG__\App\Entity\Image {#2281 …}
      +name: "electronics@discuss.tchncs.de"
      +title: "electronics"
      +description: """
        **Projects, pictures, industry discussions and news about electronic engineering & component-level electronic circuits.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: No circuit design or repair, tools or component questions.\n
        \n
        5: No excessively promoting your own sites, social media, videos etc.\n
        \n
        ---\n
        \n
        *Ask questions in [discuss.tchncs.de/c/askelectronics](https://discuss.tchncs.de/c/askelectronics)*\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 43
      +entryCommentCount: 201
      +postCount: 1
      +postCommentCount: 3
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1723220252 {#2315
        date: 2024-08-09 18:17:32.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#2295 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#2290 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#2280 …}
      +entries: Doctrine\ORM\PersistentCollection {#2282 …}
      +posts: Doctrine\ORM\PersistentCollection {#2279 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#2277 …}
      +bans: Doctrine\ORM\PersistentCollection {#2219 …}
      +reports: Doctrine\ORM\PersistentCollection {#2205 …}
      +badges: Doctrine\ORM\PersistentCollection {#2270 …}
      +logs: Doctrine\ORM\PersistentCollection {#2253 …}
      +awards: Doctrine\ORM\PersistentCollection {#2203 …}
      +categories: Doctrine\ORM\PersistentCollection {#2242 …}
      -id: 5
      +apId: "electronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/electronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/electronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/electronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "electronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1719675646 {#2322
        date: 2024-06-29 17:40:46.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1686642591 {#2321
        date: 2023-06-13 09:49:51.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1689 …}
    +slug: "My-customisable-solar-hot-water-system-controller-project-in-progress"
    +title: "My customisable solar hot water system controller (project in progress)"
    +url: null
    +body: """
      Hi all,\n
      \n
      In an effort to liven up this community, I’ll post this project I’m working on.\n
      \n
      I’m building a solar hot water controller for my house. The collector is on the roof of a three-storey building, it is linked to a storage tank on the ground floor. A circulating pump passes water from the tank to the collectors and back again when a temperature sensor on the outlet of the collector registers a warm enough temperature.\n
      \n
      The current controller does not understand that there is 15 metres of copper piping to pump water through and cycles the circulating pump in short bursts, resulting in the hot water at the collector cooling considerably by the time it reaches the tank (even though the pipes are insulated). The goal of my project is to read the sensor and drive the pump in a way to minimise these heat losses. Basically instead of trying to maintain a consistent collector output temp with slow constant pulsed operation of the pump, I’ll first try pumping the entire volume of moderately hot water from the top half of the collector in one go back to the tank and then waiting until the temperature rises again.\n
      \n
      I am using an Adafruit PyPortal Titano as the controller, running circuitpython. For I/O I am using a generic ebay PCF8591 board, which provides 4 analog input and a single analog output over an I2C bus. This is inserted into a motherboard that provides pullup resistors for the analog inputs and an optocoupled zero crossing SCR driver + SCR to drive the (thankfully low power) circulating pump. Board design is my own, design is rather critical as mains supply in my country is 240V.\n
      \n
      The original sensors are simple NTC thermistors, one at the bottom of the tank, and one at the top of the collector. I have also added 4 other Dallas 1-wire sensors to measure temperatures at the top of tank, ambient, tank inlet and collector pump inlet which is 1/3rd of the way up the tank. I have a duplicate of the onewire sensors already on the hot water tank using a different adafruit board and circuitpython. Their readings are currently uploaded to my own IOT server and I can plot the current system’s performance, and I intend to do the same thing with this board.\n
      \n
      The current performance is fairly dismal, a very small bump of perhaps 0.5 - 1 deg C in the normally 55 degree C tank temperature around 12pm to 1pm, and this is in Australia in hot spring weather of 28-32 degrees C.(There’s some inaccuracy of the tank temperatures, the sensors aren’t really bonded to the tank in any meaningful way, so tank temp is probably a little warmer than this. But I’m looking for relative temperature increases anyway)\n
      \n
      Right now , the hardware is all together and functional, and is driving a 13W LED downlight as a test, and I can read the onewire temp sensors, read an analog voltage on the PCF8591 board (which will go to the NTC sensors), and I’m pulsing the pump output proportionally from 0-100 percent drive on a 30 second duty cycle, so that a pump drive function can simply say “run the pump at 70 percent” and you’ll get 21 seconds on, 9 seconds off. Duty cycle time is adjustable, so I might lower it a bit to 15 or 10 seconds.\n
      \n
      The next step is to try it on the circulating pump (which is quite an inductive load, even if it is only 20 watts), and start working on an algorithm that reads the sensors and maximises water temperature back to the tank. There are a few safety features that I’ll put in there, such as a “fault mode” to drive the pump at a fixed rate if there is a sensor failure, and a “night cool” mode if the hot water tank is severely over temperature to circulate hot water to the collector at night to cool it. There are the usual overtemp/overpressure relief valves in the system already.\n
      \n
      All this is going in a case with a clear hinged cover on the front so I can open it and poke the Titano’s touchscreen to do some things.\n
      \n
      Right now I am away from home from work, so my replies might be a bit sporadic, but I’ll try to get back to any questions soon-ish.\n
      \n
      A few photos for your viewing pleasure:\n
      \n
      The I/O and mainboard plus a 5V power supply mounted up: ![](https://aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)\n
      \n
      The front of the panel, showing the Pyportal: ![](https://aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)\n
      \n
      Thingsboard display showing readings from the current system: ![](https://aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)\n
      \n
      Mainboard PCB design and construction via EasyEDA: ![](https://aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)\n
      \n
      ![](https://aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 7
    +favouriteCount: 22
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1698884219 {#1442
      date: 2023-11-02 01:16:59.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1686 …}
    +votes: Doctrine\ORM\PersistentCollection {#1692 …}
    +reports: Doctrine\ORM\PersistentCollection {#1711 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1716 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1715 …}
    +badges: Doctrine\ORM\PersistentCollection {#2462 …}
    +children: []
    -id: 8890
    -titleTs: "'control':7 'customis':2 'hot':4 'progress':10 'project':8 'solar':3 'system':6 'water':5"
    -bodyTs: "'-100':531 '-32':436 '/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':772 '/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':783 '/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':807 '/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':794 '/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':804 '0':530 '0.5':409 '1':319,410 '1/3rd':339 '10':580 '12pm':422 '13w':492 '15':92,578 '1pm':424 '20':604 '21':559 '240v':289 '28':435 '30':536 '4':231,316 '55':416 '5v':765 '70':553 '9':562 'ad':315 'adafruit':211,363 'adjust':569 'algorithm':611 'alreadi':354,691 'also':314 'ambient':330 'analog':232,237,255,508 'anyway':478 'aren':449 'around':421 'aussie.zone':771,782,793,803,806 'aussie.zone/pictrs/image/2faecb8f-30f2-4b38-8dc1-0db0f3a93c19.jpeg)':770 'aussie.zone/pictrs/image/3f5873cc-f094-457f-a8ab-b07a8569ed1a.jpeg)':781 'aussie.zone/pictrs/image/428f1622-230d-4a9f-85ef-9383439d290e.jpeg)':805 'aussie.zone/pictrs/image/b61f62a8-cfef-4003-b79a-74e97c1a86a0.jpeg)':792 'aussie.zone/pictrs/image/eb771e34-8deb-42ba-a550-3ee02fe9f85c.jpeg)':802 'australia':429 'away':726 'back':66,195,620,745 'basic':154 'bit':576,737 'board':228,273,364,396,513 'bond':452 'bottom':300 'build':22,42 'bump':406 'burst':108 'bus':242 'c':412,418,438 'case':698 'circuitpython':218,366 'circul':55,104,271,591,670 'clear':701 'collector':32,64,77,116,162,191,311,334,675 'communiti':10 'consider':118 'consist':161 'constant':167 'construct':799 'control':27,85,216 'cool':117,658,679 'copper':95 'countri':287 'cover':703 'critic':281 'cross':261 'current':84,370,382,398,790 'cycl':102,539,566 'dalla':318 'deg':411 'degre':417,437 'design':274,278,797 'differ':362 'dismal':402 'display':785 'downlight':494 'drive':143,266,490,533,544,642 'driver':263 'duplic':349 'duti':538,565 'easyeda':801 'ebay':226 'effort':5 'enough':81 'entir':179 'even':126,599 'failur':654 'fair':401 'fault':639 'featur':629 'first':175 'fix':647 'floor':53 'front':706,774 'function':487,545 'generic':225 'get':558,744 'go':194,516,695 'goal':133 'ground':52 'half':188 'hardwar':482 'heat':152 'hi':1 'hing':702 'home':728 'hot':25,112,183,357,431,662,671 'hous':30 'i/o':220,760 'i2c':241 'inaccuraci':442 'increas':477 'induct':597 'inlet':332,336 'input':233,256 'insert':245 'instead':155 'insul':131 'intend':388 'iot':375 'ish':751 'led':493 'link':45 'littl':466 'liven':7 'll':12,174,557,632,741 'load':598 'look':473 'loss':153 'low':269 'lower':573 'm':17,21,472,523 'main':283 'mainboard':762,795 'maintain':159 'maximis':617 'meaning':458 'measur':323 'metr':93 'might':572,734 'minimis':150 'mode':640,659 'moder':182 'motherboard':248 'mount':768 'next':583 'night':657,677 'normal':415 'ntc':295,519 'one':193,297,305 'onewir':352,503 'open':710 'oper':169 'optocoupl':259 'origin':291 'outlet':74 'output':163,238,527 'overtemp/overpressure':685 'panel':777 'pass':57 'pcb':796 'pcf8591':227,512 'percent':532,554 'perform':385,399 'perhap':408 'photo':754 'pipe':96,129 'pleasur':758 'plot':380 'plus':763 'poke':713 'post':13 'power':270,766 'probabl':464 'project':15,136 'proport':528 'provid':230,250 'pullup':251 'puls':168,524 'pump':56,98,105,145,172,177,272,335,526,543,551,592,644 'put':633 'pyport':212,780 'question':748 'quit':595 'rate':648 'rather':280 'reach':123 'read':139,368,501,506,613,787 'realli':451 'regist':78 'relat':475 'relief':686 'repli':733 'resistor':252 'result':109 'right':479,722 'rise':205 'roof':36 'run':217,549 'safeti':628 'say':548 'scr':262,264 'second':537,560,563,581 'sensor':71,141,292,321,353,448,505,520,615,653 'server':376 'sever':666 'short':107 'show':778,786 'simpl':294 'simpli':547 'singl':236 'slow':166 'small':405 'solar':24 'soon':750 'soon-ish':749 'sporad':738 'spring':432 'start':607 'step':584 'storag':48 'storey':41 'suppli':284,767 'system':383,690,791 'tank':49,61,125,198,303,329,331,345,359,419,445,455,461,623,664 'temp':164,462,504 'temperatur':70,82,204,324,420,446,476,619,668 'test':497 'thank':268 'thermistor':296 'thing':393,721 'thingsboard':784 'though':127 'three':40 'three-storey':39 'time':121,567 'titano':213,715 'togeth':485 'top':187,308,327 'touchscreen':717 'tri':157,176,587,742 'understand':88 'upload':371 'use':209,223,360 'usual':684 'valv':687 'via':800 'view':757 'voltag':509 'volum':180 'wait':201 'warm':80 'warmer':467 'water':26,58,99,113,184,358,618,663,672 'watt':605 'way':148,342,459 'weather':433 'wire':320 'work':18,608,730 'zero':260"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1698902815
    +visibility: "visible             "
    +apId: "https://aussie.zone/post/3581301"
    +editedAt: null
    +createdAt: DateTimeImmutable @1698827815 {#1640
      date: 2023-11-01 09:36:55.0 +01:00
    }
  }
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
settings_row_enum App\Twig\Components\SettingsRowEnumComponent 14.0 MiB 0.27 ms
Input props
[
  "label" => "Sidebar position"
  "settingsKey" => "KBIN_GENERAL_SIDEBAR_POSITION"
  "values" => [
    [
      "name" => "Left"
      "value" => "LEFT"
    ]
    [
      "name" => "Right"
      "value" => "RIGHT"
    ]
  ]
  "defaultValue" => "RIGHT"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowEnumComponent {#3169
  +label: "Sidebar position"
  +help: ""
  +settingsKey: "KBIN_GENERAL_SIDEBAR_POSITION"
  +values: [
    [
      "name" => "Left"
      "value" => "LEFT"
    ]
    [
      "name" => "Right"
      "value" => "RIGHT"
    ]
  ]
  +defaultValue: "RIGHT"
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.25 ms
Input props
[
  "label" => "Dynamic lists"
  "settingsKey" => "KBIN_GENERAL_DYNAMIC_LISTS"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3211
  +label: "Dynamic lists"
  +help: ""
  +settingsKey: "KBIN_GENERAL_DYNAMIC_LISTS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.18 ms
Input props
[
  "label" => "Rounded edges"
  "settingsKey" => "KBIN_GENERAL_ROUNDED_EDGES"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3297
  +label: "Rounded edges"
  +help: ""
  +settingsKey: "KBIN_GENERAL_ROUNDED_EDGES"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.17 ms
Input props
[
  "label" => "Infinite scrolling"
  "help" => "Automatically load more content when you reach the bottom of the page."
  "settingsKey" => "KBIN_GENERAL_INFINITE_SCROLL"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3353
  +label: "Infinite scrolling"
  +help: "Automatically load more content when you reach the bottom of the page."
  +settingsKey: "KBIN_GENERAL_INFINITE_SCROLL"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.16 ms
Input props
[
  "label" => "Sticky navbar"
  "help" => "The navbar will stick to the top of the page when you scroll down."
  "settingsKey" => "KBIN_GENERAL_FIXED_NAVBAR"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3412
  +label: "Sticky navbar"
  +help: "The navbar will stick to the top of the page when you scroll down."
  +settingsKey: "KBIN_GENERAL_FIXED_NAVBAR"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.17 ms
Input props
[
  "label" => "Show top bar"
  "settingsKey" => "KBIN_GENERAL_TOPBAR"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3468
  +label: "Show top bar"
  +help: ""
  +settingsKey: "KBIN_GENERAL_TOPBAR"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.14 ms
Input props
[
  "label" => "Turbo mode (experimental)"
  "settingsKey" => "KBIN_GENERAL_TURBO"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3524
  +label: "Turbo mode (experimental)"
  +help: ""
  +settingsKey: "KBIN_GENERAL_TURBO"
  +defaultValue: false
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.38 ms
Input props
[
  "label" => "Mark new comments"
  "settingsKey" => "KBIN_MARK_NEW_COMMENTS"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#3582
  +label: "Mark new comments"
  +help: ""
  +settingsKey: "KBIN_MARK_NEW_COMMENTS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.20 ms
Input props
[
  "label" => "Show "Support Us" block"
  "settingsKey" => "KBIN_GENERAL_SUPPORT_US_BLOCK"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3645
  +label: "Show "Support Us" block"
  +help: ""
  +settingsKey: "KBIN_GENERAL_SUPPORT_US_BLOCK"
  +defaultValue: true
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.20 ms
Input props
[
  "label" => "Show subscribed users"
  "settingsKey" => "KBIN_SUB_CHANNEL_USERS"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#3703
  +label: "Show subscribed users"
  +help: ""
  +settingsKey: "KBIN_SUB_CHANNEL_USERS"
  +defaultValue: false
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.21 ms
Input props
[
  "label" => "Show subscribed magazines"
  "settingsKey" => "KBIN_SUB_CHANNEL_MAGAZINES"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#3759
  +label: "Show subscribed magazines"
  +help: ""
  +settingsKey: "KBIN_SUB_CHANNEL_MAGAZINES"
  +defaultValue: false
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.20 ms
Input props
[
  "label" => "Show subscribed domains"
  "settingsKey" => "KBIN_SUB_CHANNEL_DOMAINS"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#3815
  +label: "Show subscribed domains"
  +help: ""
  +settingsKey: "KBIN_SUB_CHANNEL_DOMAINS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.18 ms
Input props
[
  "label" => "Auto media preview"
  "help" => "Automatically expand media previews."
  "settingsKey" => "KBIN_ENTRIES_SHOW_PREVIEW"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3871
  +label: "Auto media preview"
  +help: "Automatically expand media previews."
  +settingsKey: "KBIN_ENTRIES_SHOW_PREVIEW"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.18 ms
Input props
[
  "label" => "Compact view"
  "settingsKey" => "KBIN_ENTRIES_COMPACT"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3927
  +label: "Compact view"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_COMPACT"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.18 ms
Input props
[
  "label" => "Show users’ avatars"
  "settingsKey" => "KBIN_ENTRIES_SHOW_USERS_AVATARS"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#3983
  +label: "Show users’ avatars"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_SHOW_USERS_AVATARS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.18 ms
Input props
[
  "label" => "Show magazines’ icons"
  "settingsKey" => "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#4039
  +label: "Show magazines’ icons"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.17 ms
Input props
[
  "label" => "Show thumbnails"
  "settingsKey" => "KBIN_ENTRIES_SHOW_THUMBNAILS"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#4095
  +label: "Show thumbnails"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_SHOW_THUMBNAILS"
  +defaultValue: true
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.16 ms
Input props
[
  "label" => "Auto media preview"
  "help" => "Automatically expand media previews."
  "settingsKey" => "KBIN_POSTS_SHOW_PREVIEW"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#4151
  +label: "Auto media preview"
  +help: "Automatically expand media previews."
  +settingsKey: "KBIN_POSTS_SHOW_PREVIEW"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.17 ms
Input props
[
  "label" => "Show users’ avatars"
  "settingsKey" => "KBIN_POSTS_SHOW_USERS_AVATARS"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#4207
  +label: "Show users’ avatars"
  +help: ""
  +settingsKey: "KBIN_POSTS_SHOW_USERS_AVATARS"
  +defaultValue: true
  +reloadRequired: true
}
settings_row_enum App\Twig\Components\SettingsRowEnumComponent 14.0 MiB 0.23 ms
Input props
[
  "label" => "Comment reply position"
  "help" => "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top."
  "settingsKey" => "KBIN_COMMENTS_REPLY_POSITION"
  "values" => [
    [
      "name" => "top"
      "value" => "TOP"
    ]
    [
      "name" => "bottom"
      "value" => "BOTTOM"
    ]
  ]
  "defaultValue" => "TOP"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowEnumComponent {#4263
  +label: "Comment reply position"
  +help: "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top."
  +settingsKey: "KBIN_COMMENTS_REPLY_POSITION"
  +values: [
    [
      "name" => "top"
      "value" => "TOP"
    ]
    [
      "name" => "bottom"
      "value" => "BOTTOM"
    ]
  ]
  +defaultValue: "TOP"
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.17 ms
Input props
[
  "label" => "Show Comment Avatars"
  "help" => "Display/hide user avatars when viewing comments on a single thread or post."
  "settingsKey" => "KBIN_COMMENTS_SHOW_USER_AVATAR"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#4321
  +label: "Show Comment Avatars"
  +help: "Display/hide user avatars when viewing comments on a single thread or post."
  +settingsKey: "KBIN_COMMENTS_SHOW_USER_AVATAR"
  +defaultValue: true
  +reloadRequired: true
}
user_actions App\Twig\Components\UserActionsComponent 14.0 MiB 0.62 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: null
    +cover: null
    +email: "dgriffith@aussie.zone"
    +username: "@dgriffith@aussie.zone"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "I’m a technical kinda guy, doing technical kinda stuff."
    +lastActive: DateTime @1729552629 {#273
      date: 2024-10-22 01:17:09.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
    +entries: Doctrine\ORM\PersistentCollection {#190 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
    +posts: Doctrine\ORM\PersistentCollection {#78 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
    +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
    +follows: Doctrine\ORM\PersistentCollection {#1769 …}
    +followers: Doctrine\ORM\PersistentCollection {#1771 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
    +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
    +reports: Doctrine\ORM\PersistentCollection {#2399 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
    +violations: Doctrine\ORM\PersistentCollection {#2421 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
    +awards: Doctrine\ORM\PersistentCollection {#1976 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
    +categories: Doctrine\ORM\PersistentCollection {#1912 …}
    -id: 47433
    -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
    +apId: "dgriffith@aussie.zone"
    +apProfileId: "https://aussie.zone/u/dgriffith"
    +apPublicUrl: "https://aussie.zone/u/dgriffith"
    +apFollowersUrl: null
    +apInboxUrl: "https://aussie.zone/inbox"
    +apDomain: "aussie.zone"
    +apPreferredUsername: "dgriffith"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1706718291 {#276
      date: 2024-01-31 17:24:51.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1696022922 {#272
      date: 2023-09-29 23:28:42.0 +02:00
    }
  }
]
Attributes
[]
Component
App\Twig\Components\UserActionsComponent {#4397
  +user: App\Entity\User {#260
    +avatar: null
    +cover: null
    +email: "dgriffith@aussie.zone"
    +username: "@dgriffith@aussie.zone"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "I’m a technical kinda guy, doing technical kinda stuff."
    +lastActive: DateTime @1729552629 {#273
      date: 2024-10-22 01:17:09.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#247 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#243 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#232 …}
    +entries: Doctrine\ORM\PersistentCollection {#190 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#162 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#135 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#105 …}
    +posts: Doctrine\ORM\PersistentCollection {#78 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#93 …}
    +postComments: Doctrine\ORM\PersistentCollection {#1858 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#2431 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1569 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#1870 …}
    +follows: Doctrine\ORM\PersistentCollection {#1769 …}
    +followers: Doctrine\ORM\PersistentCollection {#1771 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1859 …}
    +blockers: Doctrine\ORM\PersistentCollection {#1819 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2486 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#1817 …}
    +reports: Doctrine\ORM\PersistentCollection {#2399 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1939 …}
    +violations: Doctrine\ORM\PersistentCollection {#2421 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1913 …}
    +awards: Doctrine\ORM\PersistentCollection {#1976 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1866 …}
    +categories: Doctrine\ORM\PersistentCollection {#1912 …}
    -id: 47433
    -password: "$2y$13$FQxJUGx6B6JQ01Gkjmoufur8fS2oHWt8L4XEJzYSRuVi3u4yOJ6N."
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1395 …}
    +apId: "dgriffith@aussie.zone"
    +apProfileId: "https://aussie.zone/u/dgriffith"
    +apPublicUrl: "https://aussie.zone/u/dgriffith"
    +apFollowersUrl: null
    +apInboxUrl: "https://aussie.zone/inbox"
    +apDomain: "aussie.zone"
    +apPreferredUsername: "dgriffith"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1706718291 {#276
      date: 2024-01-31 17:24:51.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1696022922 {#272
      date: 2023-09-29 23:28:42.0 +02:00
    }
  }
}
date App\Twig\Components\DateComponent 14.0 MiB 0.17 ms
Input props
[
  "date" => DateTimeImmutable @1696022922 {#272
    date: 2023-09-29 23:28:42.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#4458
  +date: DateTimeImmutable @1696022922 {#272
    date: 2023-09-29 23:28:42.0 +02:00
  }
}
related_magazines App\Twig\Components\RelatedMagazinesComponent 14.0 MiB 9.90 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedMagazinesComponent {#4545
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +title: "random_magazines"
  +refreshedRandom: false
  -repository: App\Repository\MagazineRepository {#1848 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
}
active_users App\Twig\Components\ActiveUsersComponent 14.0 MiB 9.36 ms
Input props
[
  "magazine" => null
]
Attributes
[]
Component
App\Twig\Components\ActiveUsersComponent {#4610
  +magazine: null
  -userRepository: App\Repository\UserRepository {#603 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
}
related_categories App\Twig\Components\RelatedCategoriesComponent 14.0 MiB 6.58 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedCategoriesComponent {#4669
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +title: "random_categories"
  +refreshedRandom: false
  -repository: App\Repository\CategoryRepository {#4670 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
}
related_posts App\Twig\Components\RelatedPostsComponent 14.0 MiB 6.00 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedPostsComponent {#4740
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +post: null
  +title: "random_posts"
  +refreshedRandom: false
  -repository: App\Repository\PostRepository {#4739 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -mentionManager: App\Service\MentionManager {#1541 …}
}
related_entries App\Twig\Components\RelatedEntriesComponent 14.0 MiB 9.51 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedEntriesComponent {#4809
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +entry: null
  +title: "random_entries"
  +refreshedRandom: false
  -repository: App\Repository\EntryRepository {#1746 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -mentionManager: App\Service\MentionManager {#1541 …}
}
support_us_block App\Twig\Components\SupportUsBlock 14.0 MiB 8.74 ms
Input props
[]
Attributes
[]
Component
App\Twig\Components\SupportUsBlock {#4878
  +subject: ? App\Entity\Contracts\VotableInterface
  +url: ? string
  -twig: Twig\Environment {#1252 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -partnerBlockRepository: App\Repository\PartnerBlockRepository {#4879 …}
}
featured_magazines App\Twig\Components\FeaturedMagazinesComponent 14.0 MiB 8.84 ms
Input props
[
  "magazine" => null
]
Attributes
[]
Component
App\Twig\Components\FeaturedMagazinesComponent {#4971
  +magazine: null
  -twig: Twig\Environment {#1252 …}
  -repository: App\Repository\MagazineRepository {#1848 …}
}